Crash in presentation compiler in macro paradise plugin

99 views
Skip to first unread message

adp...@semanticmachines.com

unread,
Sep 6, 2016, 9:49:55 AM9/6/16
to Scala IDE User
I am seeing a lot of exceptions that look like the stack trace I've attached blow. Bug.scala looks like this:

<pre><code>

package bug


object Bar {

  def foo[T <: Comparable[T]]: Ordering[T] = (a: T, b: T) => a.compareTo(b)

  def main(args: Array[String]): Unit = {

    val data = IndexedSeq("1","3","2")

    println(data.sorted(foo[String]))

  }

}

</code></pre>


but I'm fairly sure that has nothing to do with it. It happens on many of my source files, and for many other objects besides IndexedSeq. Has anyone else seen this before? I will file a bug if I can minimize the problem, but that may take some time. I am wondering if it is related to https://github.com/scalamacros/paradise/issues/7


eclipse.buildId=4.5.2.M20160212-1500
java.version=1.8.0_31
java.vendor=Oracle Corporation
BootLoader constants: OS=macosx, ARCH=x86_64, WS=cocoa, NL=en_US
Framework arguments:  -product org.eclipse.epp.package.java.product -product org.eclipse.epp.package.java.product -keyring /Users/adpauls/.eclipse_keyring -showlocation
Command-line arguments:  -os macosx -ws cocoa -arch x86_64 -product org.eclipse.epp.package.java.product -data file:/Users/adpauls/sm/EclipseProjects/ -product org.eclipse.epp.package.java.product -keyring /Users/adpauls/.eclipse_keyring -showlocation

org.scala-ide.sdt.core
Error
Sun Sep 04 09:01:15 PDT 2016
AT: RangePosition(/Users/adpauls/sm/git/scarecrow/dialogue/src/main/scala/bug/Bug.scala, 276, 276, 286)

scala.reflect.internal.FatalError: no progress in completing object IndexedSeq: <?>
at scala.reflect.internal.Reporting$class.abort(Reporting.scala:59)
at scala.reflect.internal.SymbolTable.abort(SymbolTable.scala:16)
at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1522)
at scala.reflect.internal.Symbols$Symbol.initialize(Symbols.scala:1659)
at org.scalamacros.paradise.typechecker.Namers$Namer$class.patchedCompanionSymbolOf(Namers.scala:586)
at org.scalamacros.paradise.typechecker.Namers$$anon$3.patchedCompanionSymbolOf(Namers.scala:13)
at org.scalamacros.paradise.typechecker.Namers$Namer$class.finishSymbol(Namers.scala:192)
at org.scalamacros.paradise.typechecker.Namers$$anon$3.finishSymbol(Namers.scala:13)
at org.scalamacros.paradise.typechecker.Namers$Namer$class.dispatch$1(Namers.scala:34)
at org.scalamacros.paradise.typechecker.Namers$Namer$class.enterSym(Namers.scala:40)
at org.scalamacros.paradise.typechecker.Namers$$anon$3.enterSym(Namers.scala:13)
at org.scalamacros.paradise.typechecker.AnalyzerPlugins$MacroPlugin$.pluginsEnterSym(AnalyzerPlugins.scala:36)
at scala.tools.nsc.typechecker.AnalyzerPlugins$$anon$13.custom(AnalyzerPlugins.scala:429)
at scala.tools.nsc.typechecker.AnalyzerPlugins$$anonfun$2.apply(AnalyzerPlugins.scala:371)
at scala.tools.nsc.typechecker.AnalyzerPlugins$$anonfun$2.apply(AnalyzerPlugins.scala:371)
at scala.collection.immutable.List.map(List.scala:273)
at scala.tools.nsc.typechecker.AnalyzerPlugins$class.invoke(AnalyzerPlugins.scala:371)
at scala.tools.nsc.typechecker.AnalyzerPlugins$class.pluginsEnterSym(AnalyzerPlugins.scala:423)
at org.scalaide.core.internal.compiler.ScalaPresentationCompiler$$anon$1.pluginsEnterSym(ScalaPresentationCompiler.scala:77)
at scala.tools.nsc.typechecker.Namers$Namer.enterSym(Namers.scala:275)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$enterSyms$1.apply(Namers.scala:501)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$enterSyms$1.apply(Namers.scala:500)
at scala.collection.LinearSeqOptimized$class.foldLeft(LinearSeqOptimized.scala:124)
at scala.collection.immutable.List.foldLeft(List.scala:84)
at scala.tools.nsc.typechecker.Namers$Namer.enterSyms(Namers.scala:500)
at scala.tools.nsc.typechecker.Namers$Namer.templateSig(Namers.scala:926)
at scala.tools.nsc.typechecker.Namers$Namer.moduleSig(Namers.scala:990)
at scala.tools.nsc.typechecker.Namers$Namer.getSig$1(Namers.scala:1527)
at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:1542)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1$$anonfun$apply$1.apply$mcV$sp(Namers.scala:782)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1$$anonfun$apply$1.apply(Namers.scala:781)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1$$anonfun$apply$1.apply(Namers.scala:781)
at scala.tools.nsc.typechecker.Namers$Namer.scala$tools$nsc$typechecker$Namers$Namer$$logAndValidate(Namers.scala:1569)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1.apply(Namers.scala:781)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1.apply(Namers.scala:773)
at scala.tools.nsc.typechecker.Namers$$anon$1.completeImpl(Namers.scala:1685)
at scala.tools.nsc.typechecker.Namers$LockingTypeCompleter$class.complete(Namers.scala:1693)
at scala.tools.nsc.typechecker.Namers$$anon$1.complete(Namers.scala:1683)
at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1514)
at scala.reflect.internal.Symbols$Symbol.tpe_$times(Symbols.scala:1478)
at scala.reflect.internal.Symbols$Symbol.tpe(Symbols.scala:1443)
at scala.reflect.internal.Symbols$Symbol.hasVolatileType(Symbols.scala:910)
at scala.reflect.internal.tpe.FindMembers$FindMember.shortCircuit(FindMembers.scala:232)
at scala.reflect.internal.tpe.FindMembers$FindMemberBase.walkBaseClasses(FindMembers.scala:97)
at scala.reflect.internal.tpe.FindMembers$FindMemberBase.searchConcreteThenDeferred(FindMembers.scala:56)
at scala.reflect.internal.tpe.FindMembers$FindMemberBase.apply(FindMembers.scala:48)
at scala.reflect.internal.Types$Type.scala$reflect$internal$Types$Type$$findMemberInternal$1(Types.scala:1014)
at scala.reflect.internal.Types$Type.findMember(Types.scala:1016)
at scala.reflect.internal.tpe.TypeMaps$adaptToNewRunMap$.adaptToNewRun(TypeMaps.scala:1091)
at scala.reflect.internal.tpe.TypeMaps$adaptToNewRunMap$.apply(TypeMaps.scala:1133)
at scala.reflect.internal.tpe.TypeMaps$adaptToNewRunMap$.apply(TypeMaps.scala:1168)
at scala.reflect.internal.Symbols$Symbol.adaptInfos(Symbols.scala:1642)
at scala.reflect.internal.Symbols$Symbol.rawInfo(Symbols.scala:1594)
at scala.tools.nsc.typechecker.Typers$Typer.isStale(Typers.scala:495)
at scala.tools.nsc.typechecker.Typers$Typer.reallyExists(Typers.scala:487)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$qualifies$1(Typers.scala:4843)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$108.apply(Typers.scala:4869)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$108.apply(Typers.scala:4869)
at scala.reflect.internal.Symbols$Symbol.filter(Symbols.scala:1942)
at scala.tools.nsc.typechecker.Contexts$Context.lookupImport$1(Contexts.scala:1114)
at scala.tools.nsc.typechecker.Contexts$Context.lookupSymbol(Contexts.scala:1135)
at scala.tools.nsc.typechecker.Typers$Typer.typedIdent$2(Typers.scala:4869)
at scala.tools.nsc.typechecker.Typers$Typer.typedIdentOrWildcard$1(Typers.scala:4908)
at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5340)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5360)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$99.apply(Typers.scala:4525)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$99.apply(Typers.scala:4525)
at scala.tools.nsc.typechecker.Typers$Typer.silent(Typers.scala:680)
at scala.tools.nsc.typechecker.Typers$Typer.normalTypedApply$1(Typers.scala:4524)
at scala.tools.nsc.typechecker.Typers$Typer.typedApply$1(Typers.scala:4580)
at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5343)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5360)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5463)
at scala.tools.nsc.typechecker.Typers$Typer.computeType(Typers.scala:5554)
at scala.tools.nsc.typechecker.Namers$Namer.assignTypeToTree(Namers.scala:880)
at scala.tools.nsc.typechecker.Namers$Namer.valDefSig(Namers.scala:1382)
at scala.tools.nsc.typechecker.Namers$Namer.getSig$1(Namers.scala:1533)
at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:1542)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1$$anonfun$apply$1.apply$mcV$sp(Namers.scala:782)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1$$anonfun$apply$1.apply(Namers.scala:781)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1$$anonfun$apply$1.apply(Namers.scala:781)
at scala.tools.nsc.typechecker.Namers$Namer.scala$tools$nsc$typechecker$Namers$Namer$$logAndValidate(Namers.scala:1569)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1.apply(Namers.scala:781)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1.apply(Namers.scala:773)
at scala.tools.nsc.typechecker.Namers$$anon$1.completeImpl(Namers.scala:1685)
at scala.tools.nsc.typechecker.Namers$LockingTypeCompleter$class.complete(Namers.scala:1693)
at scala.tools.nsc.typechecker.Namers$$anon$1.complete(Namers.scala:1683)
at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1514)
at scala.reflect.internal.Symbols$Symbol.initialize(Symbols.scala:1659)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5008)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5452)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3047)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$65.apply(Typers.scala:3151)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$65.apply(Typers.scala:3151)
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:3151)
at scala.tools.nsc.typechecker.Typers$Typer.typedBlock(Typers.scala:2381)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedOutsidePatternMode$1$1.apply(Typers.scala:5318)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$typedOutsidePatternMode$1$1.apply(Typers.scala:5318)
at scala.tools.nsc.typechecker.Typers$Typer.typedOutsidePatternMode$1(Typers.scala:5317)
at scala.tools.nsc.typechecker.Typers$Typer.typedInAnyMode$1(Typers.scala:5353)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5360)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5463)
at scala.tools.nsc.typechecker.Typers$Typer.computeType(Typers.scala:5554)
at scala.tools.nsc.typechecker.Namers$Namer.assignTypeToTree(Namers.scala:880)
at scala.tools.nsc.typechecker.Namers$Namer.methodSig(Namers.scala:1214)
at scala.tools.nsc.typechecker.Namers$Namer.getSig$1(Namers.scala:1530)
at scala.tools.nsc.typechecker.Namers$Namer.typeSig(Namers.scala:1542)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1$$anonfun$apply$1.apply$mcV$sp(Namers.scala:782)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1$$anonfun$apply$1.apply(Namers.scala:781)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1$$anonfun$apply$1.apply(Namers.scala:781)
at scala.tools.nsc.typechecker.Namers$Namer.scala$tools$nsc$typechecker$Namers$Namer$$logAndValidate(Namers.scala:1569)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1.apply(Namers.scala:781)
at scala.tools.nsc.typechecker.Namers$Namer$$anonfun$monoTypeCompleter$1.apply(Namers.scala:773)
at scala.tools.nsc.typechecker.Namers$$anon$1.completeImpl(Namers.scala:1685)
at scala.tools.nsc.typechecker.Namers$LockingTypeCompleter$class.complete(Namers.scala:1693)
at scala.tools.nsc.typechecker.Namers$$anon$1.complete(Namers.scala:1683)
at scala.reflect.internal.Symbols$Symbol.info(Symbols.scala:1514)
at scala.reflect.internal.Symbols$Symbol.initialize(Symbols.scala:1659)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5008)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5452)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3047)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$65.apply(Typers.scala:3151)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$65.apply(Typers.scala:3151)
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:3151)
at scala.tools.nsc.typechecker.Typers$Typer.typedTemplate(Typers.scala:1921)
at scala.tools.nsc.typechecker.Typers$Typer.typedModuleDef(Typers.scala:1808)
at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5310)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5359)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
at scala.tools.nsc.typechecker.Typers$Typer.typedByValueExpr(Typers.scala:5452)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedStat$1(Typers.scala:3047)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$65.apply(Typers.scala:3151)
at scala.tools.nsc.typechecker.Typers$Typer$$anonfun$65.apply(Typers.scala:3151)
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:3151)
at scala.tools.nsc.typechecker.Typers$Typer.typedPackageDef$1(Typers.scala:5015)
at scala.tools.nsc.typechecker.Typers$Typer.typedMemberDef$1(Typers.scala:5312)
at scala.tools.nsc.typechecker.Typers$Typer.typed1(Typers.scala:5359)
at scala.tools.nsc.typechecker.Typers$Typer.runTyper$1(Typers.scala:5396)
at scala.tools.nsc.typechecker.Typers$Typer.scala$tools$nsc$typechecker$Typers$Typer$$typedInternal(Typers.scala:5423)
at scala.tools.nsc.typechecker.Typers$Typer.body$2(Typers.scala:5370)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5374)
at scala.tools.nsc.typechecker.Typers$Typer.typed(Typers.scala:5448)
at scala.tools.nsc.typechecker.Analyzer$typerFactory$$anon$3.apply(Analyzer.scala:102)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$applyPhase$1.apply$mcV$sp(Global.scala:440)
at scala.tools.nsc.Global$GlobalPhase.withCurrentUnit(Global.scala:431)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:440)
at scala.tools.nsc.interactive.Global$TyperRun$$anonfun$applyPhase$1.apply(Global.scala:1338)
at scala.tools.nsc.interactive.Global$TyperRun$$anonfun$applyPhase$1.apply(Global.scala:1338)
at scala.reflect.internal.SymbolTable.enteringPhase(SymbolTable.scala:235)
at scala.tools.nsc.interactive.Global$TyperRun.applyPhase(Global.scala:1338)
at scala.tools.nsc.interactive.Global$TyperRun.typeCheck(Global.scala:1331)
at scala.tools.nsc.interactive.Global.typeCheck(Global.scala:670)
at scala.tools.nsc.interactive.Global.typedTreeAt(Global.scala:819)
at scala.tools.nsc.interactive.Global$$anonfun$getTypedTreeAt$1.apply(Global.scala:842)
at scala.tools.nsc.interactive.Global$$anonfun$getTypedTreeAt$1.apply(Global.scala:842)
at scala.tools.nsc.interactive.Global$$anonfun$respond$1.apply(Global.scala:701)
at scala.tools.nsc.interactive.Global$$anonfun$respond$1.apply(Global.scala:701)
at scala.tools.nsc.interactive.Global.respondGradually(Global.scala:708)
at scala.tools.nsc.interactive.Global.respond(Global.scala:701)
at scala.tools.nsc.interactive.Global.getTypedTreeAt(Global.scala:842)
at scala.tools.nsc.interactive.CompilerControl$AskTypeAtItem.apply$mcV$sp(CompilerControl.scala:333)
at scala.tools.nsc.interactive.Global$$anonfun$pollForWork$1.apply$mcV$sp(Global.scala:506)
at scala.util.control.Breaks.breakable(Breaks.scala:38)
at scala.tools.nsc.interactive.Global.pollForWork(Global.scala:431)
at scala.tools.nsc.interactive.Global.checkForMoreWork(Global.scala:520)
at scala.tools.nsc.interactive.Global.signalParseProgress(Global.scala:331)
at scala.tools.nsc.ast.parser.Parsers$Parser.funDefRest(Parsers.scala:2670)
at scala.tools.nsc.ast.parser.Parsers$Parser.funDefOrDcl(Parsers.scala:2627)
at scala.tools.nsc.ast.parser.Parsers$Parser.defOrDcl(Parsers.scala:2512)
at scala.tools.nsc.ast.parser.Parsers$Parser.nonLocalDefOrDcl(Parsers.scala:2524)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$templateStat$1$$anonfun$applyOrElse$3.apply(Parsers.scala:3087)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$templateStat$1$$anonfun$applyOrElse$3.apply(Parsers.scala:3087)
at scala.tools.nsc.doc.ScaladocSyntaxAnalyzer$ScaladocUnitParser.joinComment(ScaladocAnalyzer.scala:259)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$templateStat$1.applyOrElse(Parsers.scala:3087)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$templateStat$1.applyOrElse(Parsers.scala:3082)
at scala.tools.nsc.ast.parser.Parsers$Parser.statSeq(Parsers.scala:3014)
at scala.tools.nsc.ast.parser.Parsers$Parser.templateStats(Parsers.scala:3081)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$templateStatSeq$1.apply(Parsers.scala:3068)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$templateStatSeq$1.apply(Parsers.scala:3045)
at scala.tools.nsc.ast.parser.Parsers$Parser.checkNoEscapingPlaceholders(Parsers.scala:462)
at scala.tools.nsc.ast.parser.Parsers$Parser.templateStatSeq(Parsers.scala:3045)
at scala.tools.nsc.ast.parser.Parsers$Parser.templateBody(Parsers.scala:2974)
at scala.tools.nsc.ast.parser.Parsers$Parser.templateBodyOpt(Parsers.scala:2981)
at scala.tools.nsc.ast.parser.Parsers$Parser.templateOpt(Parsers.scala:2945)
at scala.tools.nsc.ast.parser.Parsers$Parser.objectDef(Parsers.scala:2830)
at scala.tools.nsc.ast.parser.Parsers$Parser.tmplDef(Parsers.scala:2766)
at scala.tools.nsc.ast.parser.Parsers$Parser.topLevelTmplDef(Parsers.scala:2747)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$topStat$1$$anonfun$applyOrElse$2.apply(Parsers.scala:3037)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$topStat$1$$anonfun$applyOrElse$2.apply(Parsers.scala:3037)
at scala.tools.nsc.doc.ScaladocSyntaxAnalyzer$ScaladocUnitParser.joinComment(ScaladocAnalyzer.scala:259)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$topStat$1.applyOrElse(Parsers.scala:3037)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$topStat$1.applyOrElse(Parsers.scala:3030)
at scala.tools.nsc.ast.parser.Parsers$Parser.statSeq(Parsers.scala:3014)
at scala.tools.nsc.ast.parser.Parsers$Parser.topStatSeq(Parsers.scala:3029)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$compilationUnit$1.topstats$1(Parsers.scala:3227)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$compilationUnit$1.topstats$1(Parsers.scala:3219)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$compilationUnit$1.apply(Parsers.scala:3233)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$compilationUnit$1.apply(Parsers.scala:3195)
at scala.tools.nsc.ast.parser.Parsers$Parser.checkNoEscapingPlaceholders(Parsers.scala:462)
at scala.tools.nsc.ast.parser.Parsers$Parser.compilationUnit(Parsers.scala:3195)
at scala.tools.nsc.ast.parser.Parsers$SourceFileParser$$anonfun$parseStartRule$1.apply(Parsers.scala:146)
at scala.tools.nsc.ast.parser.Parsers$SourceFileParser$$anonfun$parseStartRule$1.apply(Parsers.scala:146)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$parse$1.apply(Parsers.scala:352)
at scala.tools.nsc.ast.parser.Parsers$Parser$$anonfun$parse$1.apply(Parsers.scala:352)
at scala.tools.nsc.ast.parser.Parsers$Parser.parseRule(Parsers.scala:345)
at scala.tools.nsc.ast.parser.Parsers$Parser.parse(Parsers.scala:352)
at scala.tools.nsc.ast.parser.Parsers$UnitParser.smartParse(Parsers.scala:241)
at scala.tools.nsc.ast.parser.SyntaxAnalyzer.scala$tools$nsc$ast$parser$SyntaxAnalyzer$$initialUnitBody(SyntaxAnalyzer.scala:87)
at scala.tools.nsc.ast.parser.SyntaxAnalyzer$ParserPhase.apply(SyntaxAnalyzer.scala:99)
at scala.tools.nsc.Global$GlobalPhase$$anonfun$applyPhase$1.apply$mcV$sp(Global.scala:440)
at scala.tools.nsc.Global$GlobalPhase.withCurrentUnit(Global.scala:431)
at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:440)
at scala.tools.nsc.Global$Run$$anonfun$compileLate$2$$anonfun$apply$1.apply(Global.scala:1609)
at scala.tools.nsc.Global$Run$$anonfun$compileLate$2$$anonfun$apply$1.apply(Global.scala:1609)
at scala.reflect.internal.SymbolTable.enteringPhase(SymbolTable.scala:235)
at scala.tools.nsc.Global$Run$$anonfun$compileLate$2.apply(Global.scala:1609)
at scala.tools.nsc.Global$Run$$anonfun$compileLate$2.apply(Global.scala:1608)
at scala.collection.Iterator$class.foreach(Iterator.scala:893)
at scala.collection.AbstractIterator.foreach(Iterator.scala:1336)
at scala.tools.nsc.Global$Run.compileLate(Global.scala:1608)
at scala.tools.nsc.interactive.Global.scala$tools$nsc$interactive$Global$$parseAndEnter(Global.scala:658)
at scala.tools.nsc.interactive.Global.backgroundCompile(Global.scala:564)
at scala.tools.nsc.interactive.PresentationCompilerThread.run(PresentationCompilerThread.scala:25)

Simon Schäfer

unread,
Sep 6, 2016, 10:12:02 AM9/6/16
to scala-ide-user



---- On Sun, 04 Sep 2016 18:32:42 +0200 <adp...@semanticmachines.com> wrote ----
> I am seeing a lot of exceptions that look like the stack trace I've attached blow. Bug.scala looks like this:
> <pre><code> package bug
>
>
> object Bar {
> def foo[T <: Comparable[T]]: Ordering[T] = (a: T, b: T) => a.compareTo(b)
> def main(args: Array[String]): Unit = {
> val data = IndexedSeq("1","3","2")
> println(data.sorted(foo[String]))
> }
> }
> </code></pre>

It looks like you have -Xexperimental enabled. It is not by accident called experimental, it makes the life of the IDE quite a bit harder.

adp...@semanticmachines.com

unread,
Sep 6, 2016, 10:19:42 AM9/6/16
to Scala IDE User
This error persists even when -Xexperimental is off, and occurs on many files besides this one. You'll also note that the stack trace shows a failure while completing IndexedSeq. It seems unlikely this has anything to do with my code.

Simon Schäfer

unread,
Sep 6, 2016, 1:05:36 PM9/6/16
to scala-ide-user



---- On Tue, 06 Sep 2016 16:19:42 +0200 <adp...@semanticmachines.com> wrote ----
> This error persists even when -Xexperimental is off, and occurs on many files besides this one. You'll also note that the stack trace shows a failure while completing IndexedSeq. It seems unlikely this has anything to do with my code.

I now see the the macro paradise plugin in the stacktrace, wihch is the one of fault here. It is known that it causes issues with the IDE and we are not planning to fix them because macro paradise is just another experimental feature which won't endure. If you ask me, I suggest to get rid of the macro stuff and just write the code manually that is right now generated by a macro.


adp...@semanticmachines.com

unread,
Sep 6, 2016, 4:45:22 PM9/6/16
to Scala IDE User
I see. I thought Scala IDE actually had really good macro support -- the compiler even runs a separate "macros". But I guess this is one of the joys of programming in Scala!

wpopie...@virtuslab.com

unread,
Sep 9, 2016, 4:28:45 AM9/9/16
to Scala IDE User
Maybe two sentences of explanation. "macros" scope has been done to make a life little easier for guys who need to write macros in their projects. It allows to avoid creation of project especially for macros if these macros are built-in part of project and that separation would be perceived a little bit weird.

adp...@semanticmachines.com

unread,
Sep 13, 2016, 1:49:30 PM9/13/16
to Scala IDE User
Oh yes, I understand the purpose of macros scope and found it quite useful! I was just remarking that this kind of thing makes it appear that Scala IDE has first-class support for macros, while Simon's comment makes it sound like the Scala IDE devs consider macro paradise to be unworthy of support. I was under the impression that macro paradise was a first-class way of doing macros in scala, but it seems like it's already been quasi-deprecated in favor of scala.meta (which still requires a paradise plugin for macro annotations?). As a I said, the joys of programming in scala!

Simon Schäfer

unread,
Sep 13, 2016, 6:12:04 PM9/13/16
to scala-ide-user



---- On Tue, 13 Sep 2016 19:49:30 +0200 <adp...@semanticmachines.com> wrote ----
> Oh yes, I understand the purpose of macros scope and found it quite useful! I was just remarking that this kind of thing makes it appear that Scala IDE has first-class support for macros, while Simon's comment makes it sound like the Scala IDE devs consider macro paradise to be unworthy of support. I was under the impression that macro paradise was a first-class way of doing macros in scala, but it seems like it's already been quasi-deprecated in favor of scala.meta (which still requires a paradise plugin for macro annotations?). As a I said, the joys of programming in scala!

Exactly, it wasn't the decision of us Scala IDE developers to not invest in Scala macros any further, it was the decision of the creators of Scala macros. Actually that is only half true because of the way how scalac evolved over the years it is simply not possible to provide excellent macro support for Scala IDE (in fact it is not even possible to provide excellent IDE experience but that is another story) and therefore we never invested much resources in better macro support.

Reply all
Reply to author
Forward
0 new messages