scalameta / metals

Scala language server with rich IDE features 🚀
https://scalameta.org/metals/
Apache License 2.0
2.08k stars 326 forks source link

Position.start on NoPosition when importing scalaz-zio #520

Closed iravid closed 5 years ago

iravid commented 5 years ago

Describe the bug Hi! I'm getting a bunch of these errors when importing the scalaz-zio project in emacs with lsp-scala and metals 0.4.3:

failed to generate semanticdb for /Users/iravid/Development/personal/scalaz-zio/interop-future/shared/src/main/scala/scalaz/zio/interop/future.scala:
java.lang.UnsupportedOperationException: Position.start on NoPosition
    at scala.reflect.internal.util.Position.fail(Position.scala:24)
    at scala.reflect.internal.util.UndefinedPosition.start(Position.scala:101)
    at scala.reflect.internal.util.UndefinedPosition.start(Position.scala:97)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:642)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.$anonfun$traverse$3(TextDocumentOps.scala:631)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.$anonfun$traverse$3$adapted(TextDocumentOps.scala:631)
    at scala.collection.immutable.List.foreach(List.scala:392)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:631)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:187)
    at scala.reflect.api.Trees$Traverser.$anonfun$traverseStats$2(Trees.scala:2506)
    at scala.reflect.api.Trees$Traverser.atOwner(Trees.scala:2515)
    at scala.reflect.api.Trees$Traverser.$anonfun$traverseStats$1(Trees.scala:2506)
    at scala.reflect.api.Trees$Traverser.traverseStats(Trees.scala:2505)
    at scala.reflect.internal.Trees.traverseComponents$1(Trees.scala:1268)
    at scala.reflect.internal.Trees.itraverse(Trees.scala:1366)
    at scala.reflect.internal.Trees.itraverse$(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.api.Trees$Traverser.traverse(Trees.scala:2483)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:651)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:187)
    at scala.reflect.internal.Trees.$anonfun$itraverse$1(Trees.scala:1243)
    at scala.reflect.api.Trees$Traverser.atOwner(Trees.scala:2515)
    at scala.reflect.internal.Trees.traverseMemberDef$1(Trees.scala:1239)
    at scala.reflect.internal.Trees.itraverse(Trees.scala:1364)
    at scala.reflect.internal.Trees.itraverse$(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.api.Trees$Traverser.traverse(Trees.scala:2483)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:651)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:187)
    at scala.reflect.api.Trees$Traverser.$anonfun$traverseTrees$1(Trees.scala:2492)
    at scala.reflect.api.Trees$Traverser.traverseTrees(Trees.scala:2492)
    at scala.reflect.internal.Trees.traverseComponents$1(Trees.scala:1270)
    at scala.reflect.internal.Trees.itraverse(Trees.scala:1366)
    at scala.reflect.internal.Trees.itraverse$(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.api.Trees$Traverser.traverse(Trees.scala:2483)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:651)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:187)
    at scala.reflect.internal.Trees.traverseComponents$1(Trees.scala:1271)
    at scala.reflect.internal.Trees.itraverse(Trees.scala:1366)
    at scala.reflect.internal.Trees.itraverse$(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.api.Trees$Traverser.traverse(Trees.scala:2483)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:651)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:187)
    at scala.reflect.internal.Trees.$anonfun$itraverse$1(Trees.scala:1251)
    at scala.reflect.api.Trees$Traverser.atOwner(Trees.scala:2515)
    at scala.reflect.internal.Trees.traverseMemberDef$1(Trees.scala:1239)
    at scala.reflect.internal.Trees.itraverse(Trees.scala:1364)
    at scala.reflect.internal.Trees.itraverse$(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.api.Trees$Traverser.traverse(Trees.scala:2483)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:651)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:187)
    at scala.reflect.api.Trees$Traverser.$anonfun$traverseStats$2(Trees.scala:2506)
    at scala.reflect.api.Trees$Traverser.atOwner(Trees.scala:2515)
    at scala.reflect.api.Trees$Traverser.$anonfun$traverseStats$1(Trees.scala:2506)
    at scala.reflect.api.Trees$Traverser.traverseStats(Trees.scala:2505)
    at scala.reflect.internal.Trees.traverseComponents$1(Trees.scala:1268)
    at scala.reflect.internal.Trees.itraverse(Trees.scala:1366)
    at scala.reflect.internal.Trees.itraverse$(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.api.Trees$Traverser.traverse(Trees.scala:2483)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:651)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:187)
    at scala.reflect.internal.Trees.$anonfun$itraverse$1(Trees.scala:1243)
    at scala.reflect.api.Trees$Traverser.atOwner(Trees.scala:2515)
    at scala.reflect.internal.Trees.traverseMemberDef$1(Trees.scala:1239)
    at scala.reflect.internal.Trees.itraverse(Trees.scala:1364)
    at scala.reflect.internal.Trees.itraverse$(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.api.Trees$Traverser.traverse(Trees.scala:2483)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:651)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:187)
    at scala.reflect.api.Trees$Traverser.$anonfun$traverseStats$2(Trees.scala:2506)
    at scala.reflect.api.Trees$Traverser.atOwner(Trees.scala:2515)
    at scala.reflect.api.Trees$Traverser.$anonfun$traverseStats$1(Trees.scala:2506)
    at scala.reflect.api.Trees$Traverser.traverseStats(Trees.scala:2505)
    at scala.reflect.internal.Trees.traverseComponents$1(Trees.scala:1268)
    at scala.reflect.internal.Trees.itraverse(Trees.scala:1366)
    at scala.reflect.internal.Trees.itraverse$(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.api.Trees$Traverser.traverse(Trees.scala:2483)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:651)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:187)
    at scala.reflect.internal.Trees.$anonfun$itraverse$1(Trees.scala:1244)
    at scala.reflect.api.Trees$Traverser.atOwner(Trees.scala:2515)
    at scala.reflect.internal.Trees.traverseMemberDef$1(Trees.scala:1239)
    at scala.reflect.internal.Trees.itraverse(Trees.scala:1363)
    at scala.reflect.internal.Trees.itraverse$(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.api.Trees$Traverser.traverse(Trees.scala:2483)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:651)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:187)
    at scala.reflect.api.Trees$Traverser.$anonfun$traverseStats$2(Trees.scala:2506)
    at scala.reflect.api.Trees$Traverser.atOwner(Trees.scala:2515)
    at scala.reflect.api.Trees$Traverser.$anonfun$traverseStats$1(Trees.scala:2506)
    at scala.reflect.api.Trees$Traverser.traverseStats(Trees.scala:2505)
    at scala.reflect.internal.Trees.itraverse(Trees.scala:1362)
    at scala.reflect.internal.Trees.itraverse$(Trees.scala:1236)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.internal.SymbolTable.itraverse(SymbolTable.scala:27)
    at scala.reflect.api.Trees$Traverser.traverse(Trees.scala:2483)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument$traverser$3$.traverse(TextDocumentOps.scala:651)
    at scala.meta.internal.semanticdb.scalac.TextDocumentOps$XtensionCompilationUnitDocument.toTextDocument(TextDocumentOps.scala:654)
    at scala.meta.internal.semanticdb.scalac.SemanticdbPipeline$SemanticdbTyperComponent$ComputeSemanticdbPhase.saveSemanticdbForCompilationUnit(SemanticdbPipeline.scala:60)
    at scala.meta.internal.semanticdb.scalac.SemanticdbPipeline$SemanticdbTyperComponent$ComputeSemanticdbPhase.apply(SemanticdbPipeline.scala:67)
    at scala.tools.nsc.Global$GlobalPhase.applyPhase(Global.scala:448)
    at scala.tools.nsc.Global$GlobalPhase.run(Global.scala:398)
    at scala.meta.internal.semanticdb.scalac.SemanticdbPipeline$SemanticdbTyperComponent$ComputeSemanticdbPhase.run(SemanticdbPipeline.scala:77)
    at scala.tools.nsc.Global$Run.compileUnitsInternal(Global.scala:1498)
    at scala.tools.nsc.Global$Run.compileUnits(Global.scala:1482)
    at scala.tools.nsc.Global$Run.compileSources(Global.scala:1475)
    at scala.tools.nsc.Global$Run.compile(Global.scala:1598)
    at xsbt.CachedCompiler0.run(CompilerInterface.scala:207)
    at xsbt.CachedCompiler0.run(CompilerInterface.scala:178)
    at xsbt.CachedCompiler0.run(CompilerInterface.scala:162)
    at xsbt.CompilerInterface.run(CompilerInterface.scala:49)
    at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:345)
    at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:168)
    at sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:129)
    at sbt.internal.inc.bloop.internal.BloopHighLevelCompiler.compileSources$1(BloopHighLevelCompiler.scala:132)
    at sbt.internal.inc.bloop.internal.BloopHighLevelCompiler.$anonfun$compile$16(BloopHighLevelCompiler.scala:191)
    at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
    at sbt.internal.inc.bloop.internal.BloopHighLevelCompiler.timed$1(BloopHighLevelCompiler.scala:69)
    at sbt.internal.inc.bloop.internal.BloopHighLevelCompiler.$anonfun$compile$15(BloopHighLevelCompiler.scala:191)
    at scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
    at monix.eval.internal.TaskRunLoop$.monix$eval$internal$TaskRunLoop$$loop$1(TaskRunLoop.scala:187)
    at monix.eval.internal.TaskRunLoop$RestartCallback$1.onSuccess(TaskRunLoop.scala:119)
    at monix.eval.Task$.$anonfun$forkedUnit$2(Task.scala:1463)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

To Reproduce Steps to reproduce the behavior - import scalaz-zio in Emacs.

Installation:

olafurpg commented 5 years ago

Thanks for reporting! This looks like a regression in the latest SemanticDB release, it's easy to mess up with compiler APIs. Pending fix in https://github.com/scalameta/scalameta/pull/1828

olafurpg commented 5 years ago

Workaround is to use v0.4.0 until a new SemanticDB release is out.

iravid commented 5 years ago

Sounds good, thanks @olafurpg!

olafurpg commented 5 years ago

I just kickstarted a v0.4.4 release https://travis-ci.org/scalameta/metals/jobs/487916036

iravid commented 5 years ago

Awesome, thank you! On 2 Feb 2019, 20:04 +0200, Ólafur Páll Geirsson notifications@github.com, wrote:

I just kickstarted a v0.4.4 release https://travis-ci.org/scalameta/metals/jobs/487916036 — You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.

olafurpg commented 5 years ago

0.4.4 is out and the vscode extension has updated