Last active
December 19, 2015 12:29
-
-
Save xuwei-k/5955042 to your computer and use it in GitHub Desktop.
compiler crash "class A(private[this] var a: => Int)"
This file contains hidden or 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
class A(private[this] var a: => Int){ | |
lazy val b = a | |
} |
This file contains hidden or 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
error: | |
while compiling: A.scala | |
during phase: constructors | |
library version: version 2.10.2 | |
compiler version: version 2.10.2 | |
reconstructed args: | |
last tree to typer: Ident(a) | |
symbol: value a (flags: <param> <bynameparam> <triedcooking>) | |
symbol definition: a: Function0 | |
symbol owners: value a -> constructor A -> class A -> package <empty> | |
context owners: class A -> package <empty> | |
== Enclosing template or block == | |
Template( // val <local A>: <notype> in class A, tree.tpe=A | |
"java.lang.Object" // parents | |
ValDef( | |
private | |
"_" | |
<tpt> | |
<empty> | |
) | |
// 4 statements | |
ValDef( // private[this] var a: runtime.ObjectRef in class A | |
private <mutable> <bynameparam/captured/covariant> <local> <paramaccessor> <triedcooking> | |
"a" | |
<tpt> // tree.tpe=runtime.ObjectRef | |
Apply( // def <init>(x$1: Object): runtime.ObjectRef in class ObjectRef, tree.tpe=runtime.ObjectRef | |
new runtime.ObjectRef."<init>" // def <init>(x$1: Object): runtime.ObjectRef in class ObjectRef, tree.tpe=(x$1: Object)runtime.ObjectRef | |
null | |
) | |
) | |
DefDef( // def <init>(a: Function0): A in class A | |
<method> | |
"<init>" | |
[] | |
// 1 parameter list | |
ValDef( // a: Function0 | |
<param> <bynameparam/captured/covariant> <paramaccessor> <triedcooking> | |
"a" | |
<tpt> // tree.tpe=Function0 | |
<empty> | |
) | |
<tpt> // tree.tpe=A | |
Block( // tree.tpe=Unit | |
Apply( // def <init>(): Object in class Object, tree.tpe=Object | |
A.super."<init>" // def <init>(): Object in class Object, tree.tpe=()Object | |
Nil | |
) | |
() | |
) | |
) | |
ValDef( // lazy private[this] var b: Int in class A | |
private <mutable> <local> lazy <triedcooking> | |
"b " | |
<tpt> // tree.tpe=Int | |
<empty> | |
) | |
DefDef( // lazy val b(): Int in class A | |
<method> <stable> <accessor> lazy | |
"b" | |
[] | |
List(Nil) | |
<tpt> // tree.tpe=Int | |
Block( // tree.tpe=Int | |
Assign( // tree.tpe=Unit | |
A.this."b " // lazy private[this] var b: Int in class A, tree.tpe=Int | |
Apply( // def apply$mcI$sp(): Int in trait Function0, tree.tpe=Int | |
A.this."a"."apply$mcI$sp" // def apply$mcI$sp(): Int in trait Function0, tree.tpe=()Int | |
Nil | |
) | |
) | |
A.this."b " // lazy private[this] var b: Int in class A, tree.tpe=Int | |
) | |
) | |
) | |
uncaught exception during compilation: scala.reflect.internal.Types$TypeError | |
error: scala.reflect.internal.Types$TypeError: type mismatch; | |
found : Function0 | |
required: runtime.ObjectRef | |
at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401) | |
at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:103) | |
at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueNormalTypeError(ContextErrors.scala:87) | |
at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.AdaptTypeError(ContextErrors.scala:195) | |
at scala.tools.nsc.typechecker.Typers$Typer.fallBack$1(Typers.scala:1278) | |
at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1283) | |
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5622) | |
at scala.tools.nsc.typechecker.Typers$Typer.typedAssign$1(Typers.scala:4258) | |
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5540) | |
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5604) | |
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5666) | |
at scala.tools.nsc.typechecker.Typers$Typer.typedPos(Typers.scala:5671) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer.scala$tools$nsc$transform$Constructors$ConstructorTransformer$$mkAssign$1(Constructors.scala:121) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer.scala$tools$nsc$transform$Constructors$ConstructorTransformer$$copyParam$1(Constructors.scala:128) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$8.apply(Constructors.scala:268) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$8.apply(Constructors.scala:259) | |
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) | |
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) | |
at scala.collection.immutable.List.foreach(List.scala:318) | |
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244) | |
at scala.collection.AbstractTraversable.map(Traversable.scala:105) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transformClassTemplate(Constructors.scala:259) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$transform$1.apply(Constructors.scala:572) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$transform$1.apply(Constructors.scala:572) | |
at scala.reflect.internal.Trees$class.deriveClassDef(Trees.scala:1613) | |
at scala.reflect.internal.SymbolTable.deriveClassDef(SymbolTable.scala:13) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transform(Constructors.scala:572) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transform(Constructors.scala:30) | |
at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927) | |
at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925) | |
at scala.collection.immutable.List.loop$1(List.scala:170) | |
at scala.collection.immutable.List.mapConserve(List.scala:186) | |
at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925) | |
at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298) | |
at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298) | |
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936) | |
at scala.reflect.internal.Trees$class.itransform(Trees.scala:1297) | |
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13) | |
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13) | |
at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transform(Constructors.scala:574) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transform(Constructors.scala:30) | |
at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227) | |
at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30) | |
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464) | |
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431) | |
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431) | |
at scala.collection.Iterator$class.foreach(Iterator.scala:727) | |
at scala.collection.AbstractIterator.foreach(Iterator.scala:1157) | |
at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431) | |
at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583) | |
at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557) | |
at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553) | |
at scala.tools.nsc.Global$Run.compile(Global.scala:1662) | |
at scala.tools.nsc.Driver.doCompile(Driver.scala:33) | |
at scala.tools.nsc.Main$.doCompile(Main.scala:79) | |
at scala.tools.nsc.Driver.process(Driver.scala:54) | |
at scala.tools.nsc.Driver.main(Driver.scala:67) | |
at scala.tools.nsc.Main.main(Main.scala) | |
Exception in thread "main" scala.reflect.internal.Types$TypeError: type mismatch; | |
found : Function0 | |
required: runtime.ObjectRef | |
at scala.tools.nsc.typechecker.Contexts$Context.issue(Contexts.scala:401) | |
at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueTypeError(ContextErrors.scala:103) | |
at scala.tools.nsc.typechecker.ContextErrors$ErrorUtils$.issueNormalTypeError(ContextErrors.scala:87) | |
at scala.tools.nsc.typechecker.ContextErrors$TyperContextErrors$TyperErrorGen$.AdaptTypeError(ContextErrors.scala:195) | |
at scala.tools.nsc.typechecker.Typers$Typer.fallBack$1(Typers.scala:1278) | |
at scala.tools.nsc.typechecker.Typers$Typer.adapt(Typers.scala:1283) | |
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5622) | |
at scala.tools.nsc.typechecker.Typers$Typer.typedAssign$1(Typers.scala:4258) | |
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5540) | |
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5604) | |
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5666) | |
at scala.tools.nsc.typechecker.Typers$Typer.typedPos(Typers.scala:5671) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer.scala$tools$nsc$transform$Constructors$ConstructorTransformer$$mkAssign$1(Constructors.scala:121) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer.scala$tools$nsc$transform$Constructors$ConstructorTransformer$$copyParam$1(Constructors.scala:128) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$8.apply(Constructors.scala:268) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$8.apply(Constructors.scala:259) | |
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) | |
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244) | |
at scala.collection.immutable.List.foreach(List.scala:318) | |
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244) | |
at scala.collection.AbstractTraversable.map(Traversable.scala:105) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transformClassTemplate(Constructors.scala:259) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$transform$1.apply(Constructors.scala:572) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer$$anonfun$transform$1.apply(Constructors.scala:572) | |
at scala.reflect.internal.Trees$class.deriveClassDef(Trees.scala:1613) | |
at scala.reflect.internal.SymbolTable.deriveClassDef(SymbolTable.scala:13) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transform(Constructors.scala:572) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transform(Constructors.scala:30) | |
at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2927) | |
at scala.reflect.api.Trees$Transformer$$anonfun$transformStats$1.apply(Trees.scala:2925) | |
at scala.collection.immutable.List.loop$1(List.scala:170) | |
at scala.collection.immutable.List.mapConserve(List.scala:186) | |
at scala.reflect.api.Trees$Transformer.transformStats(Trees.scala:2925) | |
at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298) | |
at scala.reflect.internal.Trees$$anonfun$itransform$7.apply(Trees.scala:1298) | |
at scala.reflect.api.Trees$Transformer.atOwner(Trees.scala:2936) | |
at scala.reflect.internal.Trees$class.itransform(Trees.scala:1297) | |
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13) | |
at scala.reflect.internal.SymbolTable.itransform(SymbolTable.scala:13) | |
at scala.reflect.api.Trees$Transformer.transform(Trees.scala:2897) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transform(Constructors.scala:574) | |
at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transform(Constructors.scala:30) | |
at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:227) | |
at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30) | |
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:464) | |
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431) | |
at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:431) | |
at scala.collection.Iterator$class.foreach(Iterator.scala:727) | |
at scala.collection.AbstractIterator.foreach(Iterator.scala:1157) | |
at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:431) | |
at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1583) | |
at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1557) | |
at scala.tools.nsc.Global$Run.compileSources(Global.scala:1553) | |
at scala.tools.nsc.Global$Run.compile(Global.scala:1662) | |
at scala.tools.nsc.Driver.doCompile(Driver.scala:33) | |
at scala.tools.nsc.Main$.doCompile(Main.scala:79) | |
at scala.tools.nsc.Driver.process(Driver.scala:54) | |
at scala.tools.nsc.Driver.main(Driver.scala:67) | |
at scala.tools.nsc.Main.main(Main.scala) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment