You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
When an early initializer contains a val with private[this] visibility, the compiler throws an UncaughtAssertionError.
Here is a minimal example program that reproduces the error:
// Fail.scalapackagenimrandsLibrary.dnd4EclassBase {
}
classSuperextends {
private[this] val_field=0//must run before calling Base's constructor!
} withBase {
}
Here is the stack trace:
java.lang.AssertionError: assertion failed:
while compiling: /Users/kpyancey/Projects/NimrandsLibrary.React/src/nimrandsLibrary/dnd4E/Fail.scala
during phase: constructors
library version: version 2.10.2
compiler version: version 2.10.2
reconstructed args: -deprecation -Xpluginsdir /Applications/Eclipse/configuration/org.eclipse.osgi/bundles/209/1/.cp/lib -encoding MacRoman -bootclasspath /Applications/Eclipse/configuration/org.eclipse.osgi/bundles/235/1/.cp/lib/scala-library.jar -classpath /Users/kpyancey/Projects/NimrandsLibrary.React/bin:/Applications/Eclipse/configuration/org.eclipse.osgi/bundles/235/1/.cp/lib/scala-swing.jar:/Applications/Eclipse/configuration/org.eclipse.osgi/bundles/235/1/.cp/lib/scala-actors.jar:/Applications/Eclipse/configuration/org.eclipse.osgi/bundles/234/1/.cp/lib/scala-reflect.jar:/Users/kpyancey/Downloads/scalatest_2.10-1.9.1.jar -explaintypes -Ywarn-dead-code -javabootclasspath /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/classes.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/ui.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jsse.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/jce.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Classes/charsets.jar:/System/Library/Java/Extensions/AppleScriptEngine.jar:/System/Library/Java/Extensions/dns_sd.jar:/System/Library/Java/Extensions/j3daudio.jar:/System/Library/Java/Extensions/j3dcore.jar:/System/Library/Java/Extensions/j3dutils.jar:/System/Library/Java/Extensions/jai_codec.jar:/System/Library/Java/Extensions/jai_core.jar:/System/Library/Java/Extensions/mlibwrapper_jai.jar:/System/Library/Java/Extensions/MRJToolkit.jar:/System/Library/Java/Extensions/QTJava.zip:/System/Library/Java/Extensions/vecmath.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/apple_provider.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/dnsns.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/localedata.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/sunjce_provider.jar:/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/lib/ext/sunpkcs11.jar -unchecked
last tree to typer: Apply(constructor DistinctMultiVar)
symbol: constructor DistinctMultiVar in class DistinctMultiVar (flags: <method> <triedcooking>)
symbol definition: def <init>(): nimrandsLibrary.react.DistinctMultiVar
tpe: nimrandsLibrary.react.DistinctMultiVar
symbol owners: constructor DistinctMultiVar -> class DistinctMultiVar -> package react
context owners: class Super -> package dnd4E
== Enclosing template or block ==
Template( // val <local Super>: <notype> in class Super, tree.tpe=nimrandsLibrary.dnd4E.Super
"nimrandsLibrary.dnd4E.Base" // parents
ValDef(
private
"_"
<tpt>
<empty>
)
// 2 statements
ValDef( // private[this] val _field: Int in class Super
private <local> <implclass/presuper>
"_field"
<tpt> // tree.tpe=Int
<empty>
)
DefDef( // def <init>(): nimrandsLibrary.dnd4E.Super in class Super
<method>
"<init>"
[]
List(Nil)
<tpt> // tree.tpe=nimrandsLibrary.dnd4E.Super
Block( // tree.tpe=Unit
// 2 statements
ValDef( // private[this] val _field: Int
private <local> <implclass/presuper>
"_field"
<tpt> // tree.tpe=Int
0
)
Apply( // def <init>(): nimrandsLibrary.dnd4E.Base in class Base, tree.tpe=nimrandsLibrary.dnd4E.Base
Super.super."<init>" // def <init>(): nimrandsLibrary.dnd4E.Base in class Base, tree.tpe=()nimrandsLibrary.dnd4E.Base
Nil
)
()
)
)
)
== Expanded type of tree ==
TypeRef(
TypeSymbol(class DistinctMultiVar extends MultiSignalWrapper)
)
at scala.tools.nsc.transform.Constructors$ConstructorTransformer.transformClassTemplate(Constructors.scala:154)
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 xsbt.CachedCompiler0.run(CompilerInterface.scala:121)
at xsbt.CachedCompiler0.run(CompilerInterface.scala:97)
at xsbt.CompilerInterface.run(CompilerInterface.scala:27)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at sbt.compiler.AnalyzingCompiler.call(AnalyzingCompiler.scala:102)
at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:48)
at sbt.compiler.AnalyzingCompiler.compile(AnalyzingCompiler.scala:41)
at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply$mcV$sp(AggressiveCompile.scala:98)
at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply(AggressiveCompile.scala:98)
at sbt.compiler.AggressiveCompile$$anonfun$3$$anonfun$compileScala$1$1.apply(AggressiveCompile.scala:98)
at sbt.compiler.AggressiveCompile.sbt$compiler$AggressiveCompile$$timed(AggressiveCompile.scala:159)
at sbt.compiler.AggressiveCompile$$anonfun$3.compileScala$1(AggressiveCompile.scala:97)
at sbt.compiler.AggressiveCompile$$anonfun$3.apply(AggressiveCompile.scala:142)
at sbt.compiler.AggressiveCompile$$anonfun$3.apply(AggressiveCompile.scala:86)
at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:30)
at sbt.inc.IncrementalCompile$$anonfun$doCompile$1.apply(Compile.scala:28)
at sbt.inc.Incremental$.cycle(Incremental.scala:73)
at sbt.inc.Incremental$$anonfun$1.apply(Incremental.scala:33)
at sbt.inc.Incremental$$anonfun$1.apply(Incremental.scala:32)
at sbt.inc.Incremental$.manageClassfiles(Incremental.scala:41)
at sbt.inc.Incremental$.compile(Incremental.scala:32)
at sbt.inc.IncrementalCompile$.apply(Compile.scala:25)
at sbt.compiler.AggressiveCompile.compile2(AggressiveCompile.scala:150)
at sbt.compiler.AggressiveCompile.compile1(AggressiveCompile.scala:70)
at sbt.compiler.AggressiveCompile.apply(AggressiveCompile.scala:45)
at sbt.compiler.IC$.compile(IncrementalCompiler.scala:22)
at scala.tools.eclipse.buildmanager.sbtintegration.EclipseSbtBuildManager.runCompiler(EclipseSbtBuildManager.scala:133)
at scala.tools.eclipse.buildmanager.sbtintegration.EclipseSbtBuildManager.update(EclipseSbtBuildManager.scala:123)
at scala.tools.eclipse.buildmanager.sbtintegration.EclipseSbtBuildManager.build(EclipseSbtBuildManager.scala:178)
at scala.tools.eclipse.ScalaProject.build(ScalaProject.scala:664)
at scala.tools.eclipse.ScalaBuilder.build(ScalaBuilder.scala:119)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
The text was updated successfully, but these errors were encountered:
Kevin Yancey (nimrand) said:
This slightly less minimized example illustrates a situation where its necessary to use early initialization and private[this] together. The field is passed to the base constructor, but it must have private[this] visibility or else it break covariance.
packagenimrandsLibrary.dnd4EclassSignal[T] {
//snip
}
classBase[+T](signal : Signal[T]) {
//does stuff with signal
}
classSuper[+T] extends {
private[this] val_field=newSignal[T]()
//performs operations on _field
} withBase[T](_field) {
//does other stuff with _field
}
Uh oh!
There was an error while loading. Please reload this page.
When an early initializer contains a val with private[this] visibility, the compiler throws an UncaughtAssertionError.
Here is a minimal example program that reproduces the error:
Here is the stack trace:
The text was updated successfully, but these errors were encountered: