Last active
August 29, 2015 14:08
-
-
Save retronym/808f230eaa79ab03c6c7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- sandbox/outer-class.log 2014-11-06 16:24:54.000000000 +1000 | |
+++ sandbox/outer-trait.log 2014-11-06 16:25:01.000000000 +1000 | |
@@ -1,137 +1,185 @@ | |
object Test { | |
def main(args: Array[String]): Unit = { | |
val session2 = "" | |
- class OuterClass { | |
+ trait OuterTrait { | |
class Inner { | |
session2 | |
} | |
} | |
- class C extends OuterClass | |
+ class C extends OuterTrait | |
new C | |
} | |
} | |
-test/files/run/t7970.scala:6: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses | |
+test/files/run/t7970b.scala:6: warning: a pure expression does nothing in statement position; you may be omitting necessary parentheses | |
session2 | |
^ | |
-[[syntax trees at end of erasure]] // t7970.scala | |
+[[syntax trees at end of erasure]] // t7970b.scala | |
package <empty> { | |
object Test extends Object { | |
def <init>(): Test.type = { | |
Test.super.<init>(); | |
() | |
}; | |
def main(args: Array[String]): Unit = { | |
val session2: String = ""; | |
- class OuterClass extends Object { | |
- def <init>(): OuterClass = { | |
- OuterClass.super.<init>(); | |
- () | |
- }; | |
+ abstract trait OuterTrait extends Object { | |
class Inner extends Object { | |
- def <init>($outer: OuterClass): OuterClass.this.Inner = { | |
+ def <init>($outer: OuterTrait): OuterTrait.this.Inner = { | |
Inner.super.<init>(); | |
() | |
}; | |
session2; | |
- <synthetic> <paramaccessor> <artifact> protected val $outer: OuterClass = _; | |
- <synthetic> <stable> <artifact> def $outer(): OuterClass = Inner.this.$outer | |
+ <synthetic> <paramaccessor> <artifact> protected val $outer: OuterTrait = _; | |
+ <synthetic> <stable> <artifact> def $outer(): OuterTrait = Inner.this.$outer | |
} | |
}; | |
- class C extends OuterClass { | |
+ class C extends Object with OuterTrait { | |
def <init>(): C = { | |
C.super.<init>(); | |
+ C.this.$asInstanceOf[OuterTrait$class]()./*OuterTrait$class*/$init$(); | |
+ () | |
+ } | |
+ }; | |
+ abstract trait OuterTrait$class extends Object with OuterTrait { | |
+ def /*OuterTrait$class*/$init$(): Unit = { | |
() | |
} | |
}; | |
{ | |
new C(); | |
() | |
} | |
} | |
} | |
} | |
-[[syntax trees at end of lambdalift]] // t7970.scala | |
+[[syntax trees at end of lambdalift]] // t7970b.scala | |
package <empty> { | |
object Test extends Object { | |
def <init>(): Test.type = { | |
Test.super.<init>(); | |
() | |
}; | |
def main(args: Array[String]): Unit = { | |
val session2: String = ""; | |
{ | |
- new Test.C$1(session2); | |
+ new Test.C$1(); | |
() | |
} | |
}; | |
- class OuterClass$1 extends Object { | |
- def <init>(session2$1: String): Test.OuterClass$1 = { | |
- OuterClass$1.super.<init>(); | |
- () | |
- }; | |
+ abstract trait OuterTrait$1 extends Object { | |
class Inner extends Object { | |
- def <init>($outer: Test.OuterClass$1): OuterClass$1.this.Inner = { | |
+ def <init>($outer: Test.OuterTrait$1): OuterTrait$1.this.Inner = { | |
Inner.super.<init>(); | |
() | |
}; | |
Inner.this.$outer().session2$1; | |
- <synthetic> <paramaccessor> <artifact> protected val $outer: Test.OuterClass$1 = _; | |
- <synthetic> <stable> <artifact> def $outer(): Test.OuterClass$1 = Inner.this.$outer | |
+ <synthetic> <paramaccessor> <artifact> protected val $outer: Test.OuterTrait$1 = _; | |
+ <synthetic> <stable> <artifact> def $outer(): Test.OuterTrait$1 = Inner.this.$outer | |
}; | |
<synthetic> <paramaccessor> val session2$1: String = _ | |
}; | |
- class C$1 extends Test.OuterClass$1 { | |
- def <init>(session2$1: String): Test.C$1 = { | |
- C$1.super.<init>(session2$1); | |
+ class C$1 extends Object with Test.OuterTrait$1 { | |
+ def <init>(): Test.C$1 = { | |
+ C$1.super.<init>(); | |
+ C$1.this.$asInstanceOf[Test.OuterTrait$1$class]()./*OuterTrait$1$class*/$init$(); | |
+ () | |
+ } | |
+ }; | |
+ abstract trait OuterTrait$1$class extends Object with Test.OuterTrait$1 { | |
+ def /*OuterTrait$1$class*/$init$(): Unit = { | |
() | |
} | |
} | |
} | |
} | |
-[[syntax trees at end of mixin]] // t7970.scala | |
+[[syntax trees at end of mixin]] // t7970b.scala | |
package <empty> { | |
object Test extends Object { | |
def main(args: Array[String]): Unit = { | |
val session2: String = ""; | |
{ | |
- new Test$C$1(session2); | |
+ new Test$C$1(); | |
() | |
} | |
}; | |
def <init>(): Test.type = { | |
Test.super.<init>(); | |
() | |
} | |
}; | |
- class Test$OuterClass$1 extends Object { | |
- <synthetic> <paramaccessor> val session2$1: String = _; | |
- def <init>(session2$1: String): Test$OuterClass$1 = { | |
- Test$OuterClass$1.this.session2$1 = session2$1; | |
- Test$OuterClass$1.super.<init>(); | |
- () | |
- } | |
+ abstract trait Test$OuterTrait$1 extends Object { | |
+ <synthetic> <paramaccessor> val session2$1: String = _ | |
}; | |
- class Test$OuterClass$1$Inner extends Object { | |
- <synthetic> <paramaccessor> <artifact> protected val $outer: Test$OuterClass$1 = _; | |
- <synthetic> <stable> <artifact> def $outer(): Test$OuterClass$1 = Test$OuterClass$1$Inner.this.$outer; | |
- def <init>($outer: Test$OuterClass$1): Test$OuterClass$1$Inner = { | |
+ class Test$OuterTrait$1$Inner extends Object { | |
+ <synthetic> <paramaccessor> <artifact> protected val $outer: Test$OuterTrait$1 = _; | |
+ <synthetic> <stable> <artifact> def $outer(): Test$OuterTrait$1 = Test$OuterTrait$1$Inner.this.$outer; | |
+ def <init>($outer: Test$OuterTrait$1): Test$OuterTrait$1$Inner = { | |
if ($outer.eq(null)) | |
throw null | |
else | |
- Test$OuterClass$1$Inner.this.$outer = $outer; | |
- Test$OuterClass$1$Inner.super.<init>(); | |
+ Test$OuterTrait$1$Inner.this.$outer = $outer; | |
+ Test$OuterTrait$1$Inner.super.<init>(); | |
$outer.session2$1; | |
() | |
} | |
}; | |
- class Test$C$1 extends Test$OuterClass$1 { | |
- def <init>(session2$1: String): Test$C$1 = { | |
- Test$C$1.super.<init>(session2$1); | |
+ class Test$C$1 extends Object with Test$OuterTrait$1 { | |
+ def <init>(): Test$C$1 = { | |
+ Test$C$1.super.<init>(); | |
+ Test$OuterTrait$1$class./*Test$OuterTrait$1$class*/$init$(Test$C$1.this); | |
+ () | |
+ } | |
+ }; | |
+ abstract trait Test$OuterTrait$1$class extends { | |
+ def /*Test$OuterTrait$1$class*/$init$($this: Test$OuterTrait$1): Unit = { | |
() | |
} | |
} | |
} | |
one warning found | |
+java.lang.ClassFormatError: Illegal field modifiers in class Test$OuterTrait$1: 0x11 | |
+ at java.lang.ClassLoader.defineClass1(Native Method) | |
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:760) | |
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) | |
+ at java.net.URLClassLoader.defineClass(URLClassLoader.java:455) | |
+ at java.net.URLClassLoader.access$100(URLClassLoader.java:73) | |
+ at java.net.URLClassLoader$1.run(URLClassLoader.java:367) | |
+ at java.net.URLClassLoader$1.run(URLClassLoader.java:361) | |
+ at java.security.AccessController.doPrivileged(Native Method) | |
+ at java.net.URLClassLoader.findClass(URLClassLoader.java:360) | |
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:424) | |
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:357) | |
+ at java.lang.ClassLoader.defineClass1(Native Method) | |
+ at java.lang.ClassLoader.defineClass(ClassLoader.java:760) | |
+ at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) | |
+ at java.net.URLClassLoader.defineClass(URLClassLoader.java:455) | |
+ at java.net.URLClassLoader.access$100(URLClassLoader.java:73) | |
+ at java.net.URLClassLoader$1.run(URLClassLoader.java:367) | |
+ at java.net.URLClassLoader$1.run(URLClassLoader.java:361) | |
+ at java.security.AccessController.doPrivileged(Native Method) | |
+ at java.net.URLClassLoader.findClass(URLClassLoader.java:360) | |
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:424) | |
+ at java.lang.ClassLoader.loadClass(ClassLoader.java:357) | |
+ at Test$.main(t7970b.scala:10) | |
+ at Test.main(t7970b.scala) | |
+ at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) | |
+ at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) | |
+ at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) | |
+ at java.lang.reflect.Method.invoke(Method.java:483) | |
+ at scala.reflect.internal.util.ScalaClassLoader$$anonfun$run$1.apply(ScalaClassLoader.scala:70) | |
+ at scala.reflect.internal.util.ScalaClassLoader$class.asContext(ScalaClassLoader.scala:31) | |
+ at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.asContext(ScalaClassLoader.scala:101) | |
+ at scala.reflect.internal.util.ScalaClassLoader$class.run(ScalaClassLoader.scala:70) | |
+ at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:101) | |
+ at scala.tools.nsc.CommonRunner$class.run(ObjectRunner.scala:22) | |
+ at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:39) | |
+ at scala.tools.nsc.CommonRunner$class.runAndCatch(ObjectRunner.scala:29) | |
+ at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:39) | |
+ at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:65) | |
+ at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:87) | |
+ at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:98) | |
+ at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:103) | |
+ at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment