From 8eef6f0c274d6ce902c03aa5a9f054b8e8ccf65d Mon Sep 17 00:00:00 2001 From: Nicolas Voirol <voirol.nicolas@gmail.com> Date: Tue, 11 Oct 2016 16:58:47 +0200 Subject: [PATCH] Nicer abstract Symbol member overrides --- src/main/scala/inox/ast/Extractors.scala | 3 +++ src/main/scala/inox/ast/SimpleSymbols.scala | 13 ++++++------- src/main/scala/inox/package.scala | 8 ++++---- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/main/scala/inox/ast/Extractors.scala b/src/main/scala/inox/ast/Extractors.scala index cecd9b426..4582f9cb0 100644 --- a/src/main/scala/inox/ast/Extractors.scala +++ b/src/main/scala/inox/ast/Extractors.scala @@ -234,6 +234,9 @@ trait Extractors { self: Trees => val deconstructor: TreeDeconstructor { val s: self.type val t: self.type + } = new TreeDeconstructor { + protected val s: self.type = self + protected val t: self.type = self } /** Operator Extractor to extract any Expression in a consistent way. diff --git a/src/main/scala/inox/ast/SimpleSymbols.scala b/src/main/scala/inox/ast/SimpleSymbols.scala index bd5e6ddf2..36c2afda0 100644 --- a/src/main/scala/inox/ast/SimpleSymbols.scala +++ b/src/main/scala/inox/ast/SimpleSymbols.scala @@ -5,19 +5,18 @@ package ast trait SimpleSymbols { self: Trees => - val NoSymbols = new Symbols(Map.empty, Map.empty) + val NoSymbols = Symbols(Map.empty, Map.empty) - class Symbols( - val functions: Map[Identifier, FunDef], - val adts: Map[Identifier, ADTDefinition] - ) extends AbstractSymbols { + val Symbols: (Map[Identifier, FunDef], Map[Identifier, ADTDefinition]) => Symbols - def withFunctions(functions: Seq[FunDef]): Symbols = new Symbols( + abstract class SimpleSymbols extends AbstractSymbols { self: Symbols => + + def withFunctions(functions: Seq[FunDef]): Symbols = Symbols( this.functions ++ functions.map(fd => fd.id -> fd), this.adts ) - def withADTs(adts: Seq[ADTDefinition]): Symbols = new Symbols( + def withADTs(adts: Seq[ADTDefinition]): Symbols = Symbols( this.functions, this.adts ++ adts.map(adt => adt.id -> adt) ) diff --git a/src/main/scala/inox/package.scala b/src/main/scala/inox/package.scala index bf2325f00..14426583e 100644 --- a/src/main/scala/inox/package.scala +++ b/src/main/scala/inox/package.scala @@ -42,9 +42,9 @@ package object inox { } object trees extends ast.Trees with ast.SimpleSymbols { - object deconstructor extends { - protected val s: trees.type = trees - protected val t: trees.type = trees - } with ast.TreeDeconstructor + case class Symbols( + functions: Map[Identifier, FunDef], + adts: Map[Identifier, ADTDefinition] + ) extends SimpleSymbols } } -- GitLab