Skip to content

Instantly share code, notes, and snippets.

@xuwei-k
Last active December 19, 2015 12:29
Show Gist options
  • Save xuwei-k/5955042 to your computer and use it in GitHub Desktop.
Save xuwei-k/5955042 to your computer and use it in GitHub Desktop.
compiler crash "class A(private[this] var a: => Int)"
class A(private[this] var a: => Int){
lazy val b = a
}
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