Implement generics for functions and ADTs
- Calling functions are now typed, FunctionInvokation takes a TypedFunDef which is basically a FunDef with type parameters' values. Instantiation of types within the signature/body is done on demand through this wrapper class. - Operations on ADTs are now taking a *ClassType instead of *ClassDef. Similarly, Case/AbstractClassType takes values for type parameters. - Introduces a GenericValue tree for models targeting abstract types. e.g. foo[T](a: T, b: T) { a == b } ensuring (_) will find a model with { a -> T#1, b -> T#2 } - Only "simple" hierarchies allowed with type parameters. All members of the hierarchy must define the same number of type parameters and correctly pass them to parent classes. - Type parameters are invariant.
Showing
- src/main/scala/leon/LeonFatalError.scala 1 addition, 1 deletionsrc/main/scala/leon/LeonFatalError.scala
- src/main/scala/leon/Main.scala 7 additions, 5 deletionssrc/main/scala/leon/Main.scala
- src/main/scala/leon/Reporter.scala 1 addition, 1 deletionsrc/main/scala/leon/Reporter.scala
- src/main/scala/leon/codegen/CodeGeneration.scala 61 additions, 28 deletionssrc/main/scala/leon/codegen/CodeGeneration.scala
- src/main/scala/leon/codegen/CompilationUnit.scala 26 additions, 15 deletionssrc/main/scala/leon/codegen/CompilationUnit.scala
- src/main/scala/leon/datagen/NaiveDataGen.scala 10 additions, 13 deletionssrc/main/scala/leon/datagen/NaiveDataGen.scala
- src/main/scala/leon/datagen/VanuatooDataGen.scala 14 additions, 15 deletionssrc/main/scala/leon/datagen/VanuatooDataGen.scala
- src/main/scala/leon/evaluators/RecursiveEvaluator.scala 19 additions, 16 deletionssrc/main/scala/leon/evaluators/RecursiveEvaluator.scala
- src/main/scala/leon/evaluators/TracingEvaluator.scala 11 additions, 11 deletionssrc/main/scala/leon/evaluators/TracingEvaluator.scala
- src/main/scala/leon/frontends/scalac/ASTExtractors.scala 10 additions, 7 deletionssrc/main/scala/leon/frontends/scalac/ASTExtractors.scala
- src/main/scala/leon/frontends/scalac/CodeExtraction.scala 225 additions, 131 deletionssrc/main/scala/leon/frontends/scalac/CodeExtraction.scala
- src/main/scala/leon/purescala/Definitions.scala 177 additions, 101 deletionssrc/main/scala/leon/purescala/Definitions.scala
- src/main/scala/leon/purescala/FunctionClosure.scala 6 additions, 6 deletionssrc/main/scala/leon/purescala/FunctionClosure.scala
- src/main/scala/leon/purescala/PrettyPrinter.scala 62 additions, 30 deletionssrc/main/scala/leon/purescala/PrettyPrinter.scala
- src/main/scala/leon/purescala/ScalaPrinter.scala 33 additions, 48 deletionssrc/main/scala/leon/purescala/ScalaPrinter.scala
- src/main/scala/leon/purescala/ScopeSimplifier.scala 4 additions, 4 deletionssrc/main/scala/leon/purescala/ScopeSimplifier.scala
- src/main/scala/leon/purescala/TreeOps.scala 61 additions, 52 deletionssrc/main/scala/leon/purescala/TreeOps.scala
- src/main/scala/leon/purescala/Trees.scala 34 additions, 31 deletionssrc/main/scala/leon/purescala/Trees.scala
- src/main/scala/leon/purescala/TypeTreeOps.scala 219 additions, 0 deletionssrc/main/scala/leon/purescala/TypeTreeOps.scala
- src/main/scala/leon/purescala/TypeTrees.scala 59 additions, 82 deletionssrc/main/scala/leon/purescala/TypeTrees.scala
Loading
Please register or sign in to comment