Closed
Description
3.0.1
Originally reported in metals repo
Calling a completions on tree
from the last line fails:
import scala.quoted._
object Test {
def test(using Quotes)(str: String) = {
import quotes.reflect._
val msg = Expr(str)
msg.sh@@ow // works well
val printHello = '{ print($msg) }
val tree = printHello.asTerm
tree.sh@@ // doesn't work
}
}
Error:
Exception in thread "pool-3-thread-11" java.lang.AssertionError: assertion failed: invalid prefix ExprType(TypeRef(TermRef(TermRef(NoPrefix,val x$2),val reflect),trait AnnotatedMethods))
at scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
at dotty.tools.dotc.core.Types$NamedType.<init>(Types.scala:2043)
at dotty.tools.dotc.core.Types$TermRef.<init>(Types.scala:2585)
at dotty.tools.dotc.core.Types$CachedTermRef.<init>(Types.scala:2664)
at dotty.tools.dotc.core.Uniques$NamedTypeUniques.newType$1(Uniques.scala:42)
at dotty.tools.dotc.core.Uniques$NamedTypeUniques.enterIfNew(Uniques.scala:53)
at dotty.tools.dotc.core.Types$TermRef$.apply(Types.scala:2715)
at dotty.tools.dotc.interactive.Completion$$anon$3.applyOrElse(Completion.scala:305)
at dotty.tools.dotc.interactive.Completion$$anon$3.applyOrElse(Completion.scala:305)
at scala.collection.immutable.List.collect(List.scala:267)
at scala.collection.immutable.List.collect(List.scala:79)
at dotty.tools.dotc.interactive.Completion$Completer.extractMemberExtensionMethods$2$$anonfun$1(Completion.scala:305)
at scala.collection.immutable.List.flatMap(List.scala:293)
at scala.collection.immutable.List.flatMap(List.scala:79)
at dotty.tools.dotc.interactive.Completion$Completer.extractMemberExtensionMethods$1(Completion.scala:305)
at dotty.tools.dotc.interactive.Completion$Completer.extensionCompletions(Completion.scala:326)
at dotty.tools.dotc.interactive.Completion$Completer.selectionCompletions(Completion.scala:222)
at dotty.tools.dotc.interactive.Completion$.computeCompletions(Completion.scala:115)
at dotty.tools.dotc.interactive.Completion$.completions(Completion.scala:49)
at scala.meta.internal.pc.CompletionProvider.completions(CompletionProvider.scala:39)
at scala.meta.internal.pc.ScalaPresentationCompiler.complete$$anonfun$1(ScalaPresentationCompiler.scala:157)
at scala.meta.internal.pc.CompilerAccess.withSharedCompiler(CompilerAccess.scala:137)
at scala.meta.internal.pc.CompilerAccess.$anonfun$1(CompilerAccess.scala:87)
at scala.meta.internal.pc.CompilerAccess.onCompilerJobQueue$$anonfun$1(CompilerAccess.scala:197)
at scala.meta.internal.pc.CompilerJobQueue$Job.run(CompilerJobQueue.scala:139)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)