From 62d97d7f110894a0c2f36b1ed9dd7ad59c0115fa Mon Sep 17 00:00:00 2001 From: Adriaan Moors Date: Tue, 29 Mar 2016 19:25:06 -0700 Subject: LMF cannot run trait's "initializer" (constructor) Thus, rule out traits that have a constructor (which we use as a proxy for having potentially side-effecting statements), and create an anonymous subclass for them at compile time. --- test/files/run/sammy_restrictions_LMF.scala | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'test/files/run/sammy_restrictions_LMF.scala') diff --git a/test/files/run/sammy_restrictions_LMF.scala b/test/files/run/sammy_restrictions_LMF.scala index 40bb234a72..27a3d21dad 100644 --- a/test/files/run/sammy_restrictions_LMF.scala +++ b/test/files/run/sammy_restrictions_LMF.scala @@ -3,6 +3,11 @@ trait TInt extends T[Int] trait TWithVal { val x: Any = 1; def apply(x: Int): String } +trait TImpure { def apply(x: Int): String ; println(1) } + +trait Println { println(1) } +trait TImpureSuper extends Println { def apply(x: Int): String } + object Test extends App { final val AnonFunClass = "$anonfun$" final val LMFClass = "$$Lambda$" // LambdaMetaFactory names classes like this @@ -38,5 +43,6 @@ object Test extends App { notLMF(fVal) assert(fVal.x == 1) - + notLMF((x => "a"): TImpure) + notLMF((x => "a"): TImpureSuper) } -- cgit v1.2.3