From fe5b91dbf6060079d1bcce72303fd1ef3190af72 Mon Sep 17 00:00:00 2001 From: Manos Koukoutos <emmanouil.koukoutos@epfl.ch> Date: Thu, 9 Jul 2015 15:50:28 +0200 Subject: [PATCH] CodeGen tests for overrides --- .../scala/leon/codegen/CodeGeneration.scala | 3 +-- .../leon/test/codegen/CodeGenSuite.scala | 26 ++++++++++++++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/src/main/scala/leon/codegen/CodeGeneration.scala b/src/main/scala/leon/codegen/CodeGeneration.scala index 564216f21..f8a062e6f 100644 --- a/src/main/scala/leon/codegen/CodeGeneration.scala +++ b/src/main/scala/leon/codegen/CodeGeneration.scala @@ -521,8 +521,7 @@ trait CodeGeneration { } } - // No dynamic dispatching/overriding in Leon, - // so no need to take care of own vs. "super" methods + // No interfaces in Leon, so no need to use InvokeInterface ch << InvokeVirtual(className, methodName, sig) (tfd.fd.returnType, tfd.returnType) match { diff --git a/src/test/scala/leon/test/codegen/CodeGenSuite.scala b/src/test/scala/leon/test/codegen/CodeGenSuite.scala index 6ad41d65a..82c0a1161 100644 --- a/src/test/scala/leon/test/codegen/CodeGenSuite.scala +++ b/src/test/scala/leon/test/codegen/CodeGenSuite.scala @@ -121,7 +121,9 @@ class CodeGenSuite extends test.LeonTestSuite { // This one loops! ("lazyLoops" , Error(Untyped, "Looping") ), ("Lazier" , IntLiteral(1 + 2 + 3) ), - ("SetToList", BooleanLiteral(true) ) + ("SetToList", BooleanLiteral(true) ), + ("Overrides1", Tuple(Seq(BooleanLiteral(false), BooleanLiteral(true))) ), + ("Overrides2", Tuple(Seq(BooleanLiteral(false), BooleanLiteral(true))) ) ) @@ -362,6 +364,28 @@ class CodeGenSuite extends test.LeonTestSuite { s == s2 } } + object Overrides1 { + abstract class A { + def x = true + } + case class B() extends A { + override def x = false + } + case class C() extends A + + def test = (B().x, C().x) + } + object Overrides2 { + abstract class A { + val x = true + } + case class B() extends A { + override val x = false + } + case class C() extends A + + def test = (B().x, C().x) + } """ runTests() -- GitLab