New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Type inference for annotations curio / -Ycheck #2577
Labels
Comments
Imported From: https://issues.scala-lang.org/browse/SI-2577?orig=1 |
@soc said: % scala -Ycheck:ref
Welcome to Scala version 2.10.0-20120511-110655-3511e5960d (OpenJDK 64-Bit Server VM, Java 1.7.0_03).
Type in expressions to have them evaluated.
Type :help for more information.
scala> [init] [Now checking: refchecks]
[Now checking: refchecks]
[Now checking: refchecks]
[Now checking: refchecks]
scala> case class annot[T] extends annotation.StaticAnnotation
[Now checking: refchecks]
[check: refchecks] <console>:7: trees differ
old: T [scala.reflect.api.Trees$Ident] (tpe = T)
new: T [scala.reflect.api.Trees$TypeTree] (tpe = T)
[check: refchecks] <console>:7: trees differ
old: $iw.this.annot[T] [scala.reflect.api.Trees$AppliedTypeTree] (tpe = null)
new: annot[T] [scala.reflect.api.Trees$TypeTree] (tpe = annot[T])
error:
while compiling: <console>
during phase: selectiveanf
library version: version 2.10.0-20120511-110655-3511e5960d
compiler version: version 2.10.0-20120511-110655-3511e5960d
reconstructed args: -Ycheck:ref
last tree to typer: Ident(x)
symbol: value x (flags: <param> <synthetic>)
symbol definition: x: Any
tpe: Any
symbol owners: value x
context owners: method copy -> class annot -> object $iw -> object $iw -> object $read -> package $line3
== Enclosing template or block ==
ApplyConstructor( // def <init>(): annot[T] in class annot
new this.annot[T]."<init>" // def <init>(): annot[T] in class annot
Nil
)
== Expanded type of tree ==
TypeRef(TypeSymbol(abstract class Any extends ))
uncaught exception during compilation: java.lang.NullPointerException
java.lang.NullPointerException
at scala.tools.nsc.typechecker.Typers$Typer.typedTypeConstructor(Typers.scala:5149)
at scala.tools.nsc.typechecker.Typers$Typer.typedTypeConstructor(Typers.scala:5175)
at scala.tools.nsc.typechecker.Typers$Typer.typedNew$1(Typers.scala:3916)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4755)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5011)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.scala$tools$nsc$typechecker$TreeCheckers$TreeChecker$$super$typed(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker$$anonfun$typed$1.apply(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.typed(TreeCheckers.scala:210)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:5091)
at scala.tools.nsc.typechecker.Typers$Typer.typedQualifier(Typers.scala:5097)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4878)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5011)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.scala$tools$nsc$typechecker$TreeCheckers$TreeChecker$$super$typed(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker$$anonfun$typed$1.apply(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.typed(TreeCheckers.scala:210)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$85.apply(Typers.scala:4108)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$85.apply(Typers.scala:4108)
at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:719)
at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4108)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4837)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5011)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.scala$tools$nsc$typechecker$TreeCheckers$TreeChecker$$super$typed(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker$$anonfun$typed$1.apply(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.typed(TreeCheckers.scala:210)
at scala.tools.nsc.typechecker.Typers$Typer.transformedOrTyped(Typers.scala:5216)
at scala.tools.nsc.typechecker.Typers$Typer.typedDefDef(Typers.scala:1979)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4661)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5011)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.scala$tools$nsc$typechecker$TreeCheckers$TreeChecker$$super$typed(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker$$anonfun$typed$1.apply(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.typed(TreeCheckers.scala:210)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:2563)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$59$$anonfun$60.apply(Typers.scala:2659)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$59$$anonfun$60.apply(Typers.scala:2659)
at scala.collection.immutable.List.loop$1(List.scala:163)
at scala.collection.immutable.List.mapConserve(List.scala:179)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$59.apply(Typers.scala:2659)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:2658)
at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1723)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$39.apply(Typers.scala:1586)
at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1585)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4648)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5011)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.scala$tools$nsc$typechecker$TreeCheckers$TreeChecker$$super$typed(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker$$anonfun$typed$1.apply(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.typed(TreeCheckers.scala:210)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:2563)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$59$$anonfun$60.apply(Typers.scala:2659)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$59$$anonfun$60.apply(Typers.scala:2659)
at scala.collection.immutable.List.loop$1(List.scala:163)
at scala.collection.immutable.List.mapConserve(List.scala:179)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$59.apply(Typers.scala:2659)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:2658)
at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1723)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$39.apply(Typers.scala:1586)
at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1585)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4648)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5011)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.scala$tools$nsc$typechecker$TreeCheckers$TreeChecker$$super$typed(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker$$anonfun$typed$1.apply(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.typed(TreeCheckers.scala:210)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:2563)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$59$$anonfun$60.apply(Typers.scala:2659)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$59$$anonfun$60.apply(Typers.scala:2659)
at scala.collection.immutable.List.loop$1(List.scala:163)
at scala.collection.immutable.List.mapConserve(List.scala:179)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$59.apply(Typers.scala:2659)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:2658)
at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1723)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$39.apply(Typers.scala:1586)
at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1585)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4648)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5011)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.scala$tools$nsc$typechecker$TreeCheckers$TreeChecker$$super$typed(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker$$anonfun$typed$1.apply(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.typed(TreeCheckers.scala:210)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:2563)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$59$$anonfun$60.apply(Typers.scala:2659)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$59$$anonfun$60.apply(Typers.scala:2659)
at scala.collection.immutable.List.loop$1(List.scala:163)
at scala.collection.immutable.List.mapConserve(List.scala:179)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$59.apply(Typers.scala:2659)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:2658)
at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1723)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$39.apply(Typers.scala:1586)
at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1585)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4648)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5011)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.scala$tools$nsc$typechecker$TreeCheckers$TreeChecker$$super$typed(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker$$anonfun$typed$1.apply(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.typed(TreeCheckers.scala:210)
at scala.tools.nsc.typechecker.Typers$Typer.typedStat$1(Typers.scala:2563)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$59$$anonfun$60.apply(Typers.scala:2659)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$59$$anonfun$60.apply(Typers.scala:2659)
at scala.collection.immutable.List.loop$1(List.scala:163)
at scala.collection.immutable.List.mapConserve(List.scala:179)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$59.apply(Typers.scala:2659)
at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:2658)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:4644)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5011)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.scala$tools$nsc$typechecker$TreeCheckers$TreeChecker$$super$typed(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker$$anonfun$typed$1.apply(TreeCheckers.scala:218)
at scala.tools.nsc.typechecker.TreeCheckers$TreeChecker.typed(TreeCheckers.scala:210)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5069)
at scala.tools.nsc.typechecker.TreeCheckers$$anonfun$check$1.apply$mcV$sp(TreeCheckers.scala:176)
at scala.tools.nsc.typechecker.TreeCheckers.runWithUnit(TreeCheckers.scala:162)
at scala.tools.nsc.typechecker.TreeCheckers.check(TreeCheckers.scala:174)
at scala.tools.nsc.typechecker.TreeCheckers$$anonfun$checkTrees$1.apply(TreeCheckers.scala:149)
at scala.tools.nsc.typechecker.TreeCheckers$$anonfun$checkTrees$1.apply(TreeCheckers.scala:149)
at scala.collection.Iterator$class.foreach(Iterator.scala:724)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1152)
at scala.tools.nsc.typechecker.TreeCheckers.checkTrees(TreeCheckers.scala:149)
at scala.tools.nsc.Global$Run.runCheckers(Global.scala:1309)
at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1436)
at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1373)
at scala.tools.nsc.Global$Run.compileSources(Global.scala:1367)
at scala.tools.nsc.interpreter.IMain.compileSourcesKeepingRun(IMain.scala:461)
at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.compileAndSaveRun(IMain.scala:845)
at scala.tools.nsc.interpreter.IMain$ReadEvalPrint.compile(IMain.scala:803)
at scala.tools.nsc.interpreter.IMain$Request.compile$lzycompute(IMain.scala:979)
at scala.tools.nsc.interpreter.IMain$Request.compile(IMain.scala:974)
at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:629)
at scala.tools.nsc.interpreter.IMain.interpret(IMain.scala:595)
at scala.tools.nsc.interpreter.ILoop.reallyInterpret$1(ILoop.scala:826)
at scala.tools.nsc.interpreter.ILoop.interpretStartingWith(ILoop.scala:883)
at scala.tools.nsc.interpreter.ILoop.command(ILoop.scala:783)
at scala.tools.nsc.interpreter.ILoop.processLine$1(ILoop.scala:647)
at scala.tools.nsc.interpreter.ILoop.innerLoop$1(ILoop.scala:654)
at scala.tools.nsc.interpreter.ILoop.loop(ILoop.scala:657)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply$mcZ$sp(ILoop.scala:962)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:924)
at scala.tools.nsc.interpreter.ILoop$$anonfun$process$1.apply(ILoop.scala:924)
at scala.tools.nsc.util.ScalaClassLoader$.savingContextLoader(ScalaClassLoader.scala:157)
at scala.tools.nsc.interpreter.ILoop.process(ILoop.scala:924)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:79)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:92)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:101)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
That entry seems to have slain the compiler. Shall I replay
your session? I can re-run each line except the last one.
[y/n]
Abandoning crashed session. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Consider the following code:
Compilation succeeds, but crashes if I pass
-Ycheck:ref
to scalac. If you wonder about a use case, it's for@specialized
, which I'd like to be able to use with no type arguments.The text was updated successfully, but these errors were encountered: