Skip to content
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

Compiler crash when retrieving a Manifest for an aliased existential #9355

Closed
scabug opened this issue Jun 14, 2015 · 2 comments
Closed

Compiler crash when retrieving a Manifest for an aliased existential #9355

scabug opened this issue Jun 14, 2015 · 2 comments

Comments

@scabug
Copy link

scabug commented Jun 14, 2015

  class M[T]

  object M {
    type Any = M[ _ <: String]
  }
  
  manifest[M[_ <: String]] // Ok
  manifest[M.Any]        // KABOOM!

Produces the following error message:

Error:scalac: 
  ?MethodType?
     while compiling: XXX
        during phase: globalPhase=erasure, enteringPhase=posterasure
     library version: version 2.11.5
    compiler version: version 2.11.5
  reconstructed args: -nobootcp -javabootclasspath :
  last tree to typer: TypeTree(class Array)
       tree position: line 11 of ManifestExistentials.scala
            tree tpe: Array[Object]
              symbol: final class Array in package scala
   symbol definition: final class Array[T] extends Object (a ClassSymbol)
      symbol package: scala
       symbol owners: class Array
           call site: object ManifestExistentials
== Source file context for tree position ==
     8   }
     9   
    10   manifest[M[_ <: String]] // Ok
    11   manifest[M.Any]        // KABOOM!
    12 }
at scala.reflect.internal.Reporting$class.abort(Reporting.scala:59)
  at scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:16)
  at scala.reflect.internal.Types$class.appliedType(Types.scala:3559)
  at scala.reflect.internal.SymbolTable.appliedType(SymbolTable.scala:16)
  at scala.reflect.internal.Types$AntiPolyType.memberType(Types.scala:2734)
  at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$65.apply(Typers.scala:3222)
  at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$65.apply(Typers.scala:3211)
  at scala.reflect.internal.Symbols$Symbol.filter(Symbols.scala:1898)
  at scala.tools.nsc.typechecker.Typers$Typer.preSelectOverloaded$1(Typers.scala:3211)
  at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3238)
  at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4522)
  at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4555)
  at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5320)
  at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5337)
  at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:696)
  at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5373)
  at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
  at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
  at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
  at scala.tools.nsc.typechecker.Typers$Typer.typedArg(Typers.scala:3145)
  at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$class.typedArgWithFormal$1(PatternTypers.scala:112)
  at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$$anonfun$2.apply(PatternTypers.scala:115)
  at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$$anonfun$2.apply(PatternTypers.scala:115)
  at scala.runtime.Tuple2Zipped$$anonfun$map$extension$1.apply(Tuple2Zipped.scala:46)
  at scala.runtime.Tuple2Zipped$$anonfun$map$extension$1.apply(Tuple2Zipped.scala:44)
  at scala.collection.immutable.List.foreach(List.scala:381)
  at scala.runtime.Tuple2Zipped$.map$extension(Tuple2Zipped.scala:44)
  at scala.tools.nsc.typechecker.PatternTypers$PatternTyper$class.typedArgsForFormals(PatternTypers.scala:115)
  at scala.tools.nsc.typechecker.Typers$Typer.typedArgsForFormals(Typers.scala:107)
  at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$handleMonomorphicCall$1(Typers.scala:3451)
  at scala.tools.nsc.typechecker.Typers$Typer.doTypedApply(Typers.scala:3476)
  at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4522)
  at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4555)
  at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5320)
  at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5337)
  at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:696)
  at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5373)
  at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
  at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
  at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
  at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5429)
  at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3028)
  at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3132)
  at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3132)
  at scala.collection.immutable.List.loop$1(List.scala:173)
  at scala.collection.immutable.List.mapConserve(List.scala:189)
  at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3132)
  at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1903)
  at scala.tools.nsc.typechecker.Typers$Typer.typedClassDef(Typers.scala:1744)
  at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5286)
  at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5336)
  at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:696)
  at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5373)
  at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
  at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
  at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
  at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5429)
  at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3028)
  at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3132)
  at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$62.apply(Typers.scala:3132)
  at scala.collection.immutable.List.loop$1(List.scala:173)
  at scala.collection.immutable.List.mapConserve(List.scala:189)
  at scala.tools.nsc.typechecker.Typers$Typer.typedStats(Typers.scala:3132)
  at scala.tools.nsc.typechecker.Typers$Typer.typedPackageDef$1(Typers.scala:4989)
  at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5289)
  at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5336)
  at scala.tools.nsc.transform.Erasure$Eraser.typed1(Erasure.scala:696)
  at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5373)
  at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5400)
  at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5347)
  at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5351)
  at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5425)
  at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anonfun$transform$2.apply(Erasure.scala:1166)
  at scala.tools.nsc.transform.Erasure$ErasureTransformer$$anonfun$transform$2.apply(Erasure.scala:1162)
  at scala.reflect.internal.SymbolTable.enteringPhase(SymbolTable.scala:235)
  at scala.reflect.internal.SymbolTable.exitingPhase(SymbolTable.scala:256)
  at scala.tools.nsc.transform.Erasure$ErasureTransformer.transform(Erasure.scala:1162)
  at scala.tools.nsc.transform.Erasure$ErasureTransformer.transform(Erasure.scala:743)
  at scala.tools.nsc.ast.Trees$Transformer.transformUnit(Trees.scala:147)
  at scala.tools.nsc.transform.Transform$Phase.apply(Transform.scala:30)
  at scala.tools.nsc.Global$GlobalPhase$$anonfun$applyPhase$1.apply$mcV$sp(Global.scala:441)
  at scala.tools.nsc.Global$GlobalPhase.withCurrentUnit(Global.scala:432)
  at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:441)
  at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:399)
  at scala.tools.nsc.Global$GlobalPhase$$anonfun$run$1.apply(Global.scala:399)
  at scala.collection.Iterator$class.foreach(Iterator.scala:750)
  at scala.collection.AbstractIterator.foreach(Iterator.scala:1202)
  at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:399)
  at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1500)
  at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1487)
  at scala.tools.nsc.Global$Run.compileSources(Global.scala:1482)
  at scala.tools.nsc.Global$Run.compile(Global.scala:1580)
  at xsbt.CachedCompiler0.run(CompilerInterface.scala:126)
  at xsbt.CachedCompiler0.run(CompilerInterface.scala:102)
  at xsbt.CompilerInterface.run(CompilerInterface.scala:27)
  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:497)
  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 org.jetbrains.jps.incremental.scala.local.IdeaIncrementalCompiler.compile(IdeaIncrementalCompiler.scala:29)
  at org.jetbrains.jps.incremental.scala.local.LocalServer.compile(LocalServer.scala:26)
  at org.jetbrains.jps.incremental.scala.remote.Main$.make(Main.scala:62)
  at org.jetbrains.jps.incremental.scala.remote.Main$.nailMain(Main.scala:20)
  at org.jetbrains.jps.incremental.scala.remote.Main.nailMain(Main.scala)
  at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:497)
  at com.martiansoftware.nailgun.NGSession.run(NGSession.java:319)
@scabug
Copy link
Author

scabug commented Jun 14, 2015

Imported From: https://issues.scala-lang.org/browse/SI-9355?orig=1
Reporter: Bruno Bieth (mustaghattack)
Affected Versions: 2.11.6
See #9155

@scabug
Copy link
Author

scabug commented Jun 14, 2015

@retronym said:
Thanks for the report. Looks like the same issue as #9155, I'm adding this test case to that ticket and marking this as a duplicate.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants