Skip to content

Type lambda in inline method crashes the compiler #7863

Closed
@Atry

Description

@Atry

minimized code

def f[F[_]] = ()

inline def g = f[[R] =>> Int => R]
  
val a = g
java.util.NoSuchElementException: key not found: R
scala.collection.MapOps.default(Map.scala:246)
scala.collection.MapOps.default$(Map.scala:245)
scala.collection.AbstractMap.default(Map.scala:376)
scala.collection.mutable.HashMap.apply(HashMap.scala:405)
dotty.tools.dotc.typer.Inliner.registerType(Inliner.scala:442)
dotty.tools.dotc.typer.Inliner.registerLeaf$$anonfun$1(Inliner.scala:449)
dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
dotty.tools.dotc.core.Types$ForeachAccumulator.apply(Types.scala:5114)
dotty.tools.dotc.core.Types$Type.foreachPart(Types.scala:379)
dotty.tools.dotc.typer.Inliner.registerLeaf(Inliner.scala:449)
dotty.tools.dotc.typer.Inliner.inlined$$anonfun$2(Inliner.scala:492)
dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
dotty.tools.dotc.ast.tpd$$anon$4.traverse(tpd.scala:1032)
dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1477)
dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1477)
dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply$$anonfun$1(Trees.scala:1363)
scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169)
scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165)
scala.collection.immutable.List.foldLeft(List.scala:79)
dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply(Trees.scala:1363)
dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1423)
dotty.tools.dotc.ast.tpd$$anon$4.traverse(tpd.scala:1032)
dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1477)
dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1477)
dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1426)
dotty.tools.dotc.ast.tpd$$anon$4.traverse(tpd.scala:1032)
dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1477)
dotty.tools.dotc.ast.Trees$Instance$TreeTraverser.apply(Trees.scala:1477)
dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply$$anonfun$1(Trees.scala:1363)
scala.collection.LinearSeqOps.foldLeft(LinearSeq.scala:169)
scala.collection.LinearSeqOps.foldLeft$(LinearSeq.scala:165)
scala.collection.immutable.List.foldLeft(List.scala:79)
dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.apply(Trees.scala:1363)
dotty.tools.dotc.ast.Trees$Instance$TreeAccumulator.foldOver(Trees.scala:1383)
dotty.tools.dotc.ast.tpd$$anon$4.traverse(tpd.scala:1032)
dotty.tools.dotc.ast.tpd$TreeOps$.foreachSubTree$extension(tpd.scala:1034)
dotty.tools.dotc.typer.Inliner.inlined(Inliner.scala:492)
dotty.tools.dotc.typer.Inliner$.inlineCall(Inliner.scala:115)
dotty.tools.dotc.typer.Typer.adaptNoArgsOther$6(Typer.scala:2834)
dotty.tools.dotc.typer.Typer.adaptNoArgs$1(Typer.scala:2933)
dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3139)
dotty.tools.dotc.typer.Typer.adapt(Typer.scala:2544)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:2213)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:2225)
dotty.tools.dotc.typer.Namer.typedAheadExpr$$anonfun$1(Namer.scala:1263)
dotty.tools.dotc.typer.Namer.typedAhead(Namer.scala:1253)
dotty.tools.dotc.typer.Namer.typedAheadExpr(Namer.scala:1263)
dotty.tools.dotc.typer.Namer.rhsType$2(Namer.scala:1397)
dotty.tools.dotc.typer.Namer.cookedRhsType$1(Namer.scala:1408)
dotty.tools.dotc.typer.Namer.lhsType$1(Namer.scala:1409)
dotty.tools.dotc.typer.Namer.inferredType$1(Namer.scala:1420)
dotty.tools.dotc.typer.Namer.valOrDefDefSig(Namer.scala:1428)
dotty.tools.dotc.typer.Namer$Completer.typeSig(Namer.scala:811)
dotty.tools.dotc.typer.Namer$Completer.completeInCreationContext(Namer.scala:935)
dotty.tools.dotc.typer.Namer$Completer.complete(Namer.scala:843)
dotty.tools.dotc.core.SymDenotations$SymDenotation.completeFrom(SymDenotations.scala:258)
dotty.tools.dotc.core.Denotations$Denotation.completeInfo$1(Denotations.scala:185)
dotty.tools.dotc.core.Denotations$Denotation.info(Denotations.scala:187)
dotty.tools.dotc.core.SymDenotations$SymDenotation.ensureCompleted(SymDenotations.scala:398)
dotty.tools.dotc.typer.Typer.retrieveSym(Typer.scala:2071)
dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2096)
dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2176)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:2213)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:2225)
dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:2247)
dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:2291)
dotty.tools.dotc.typer.Typer.typedClassDef(Typer.scala:1784)
dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2109)
dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2176)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:2213)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:2225)
dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:2247)
dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:2291)
dotty.tools.dotc.typer.Typer.typedPackageDef(Typer.scala:1910)
dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2150)
dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2177)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:2213)
dotty.tools.dotc.typer.Typer.typed(Typer.scala:2225)
dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:2333)
dotty.tools.dotc.typer.FrontEnd.liftedTree1$2(FrontEnd.scala:78)
dotty.tools.dotc.typer.FrontEnd.typeCheck$$anonfun$1(FrontEnd.scala:83)
dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
dotty.tools.dotc.typer.FrontEnd.monitor(FrontEnd.scala:42)
dotty.tools.dotc.typer.FrontEnd.typeCheck(FrontEnd.scala:84)
dotty.tools.dotc.typer.FrontEnd.runOn$$anonfun$3(FrontEnd.scala:114)
dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
scala.collection.immutable.List.foreach(List.scala:305)
dotty.tools.dotc.typer.FrontEnd.runOn(FrontEnd.scala:114)
dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:161)
dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
dotty.tools.dotc.Run.runPhases$5(Run.scala:171)
dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:179)
dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:65)
dotty.tools.dotc.Run.compileUnits(Run.scala:186)
dotty.tools.dotc.Run.compileSources(Run.scala:123)
dotty.tools.dotc.Run.compile(Run.scala:106)
dotty.tools.dotc.Driver.doCompile(Driver.scala:36)
dotty.tools.dotc.Driver.process(Driver.scala:189)
dotty.tools.dotc.Main.process(Main.scala)
xsbt.CachedCompilerImpl.run(CachedCompilerImpl.java:69)
xsbt.CompilerInterface.run(CompilerInterface.java:41)
sun.reflect.GeneratedMethodAccessor5.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:498)
sbt.internal.inc.AnalyzingCompiler.call(AnalyzingCompiler.scala:248)
sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:122)
sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:95)
sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:91)
scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:186)
sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3(MixedAnalyzingCompiler.scala:82)
sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$3$adapted(MixedAnalyzingCompiler.scala:77)
sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:215)
sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:77)
sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:146)
sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:343)
sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:343)
sbt.internal.inc.Incremental$.doCompile(Incremental.scala:120)
sbt.internal.inc.Incremental$.$anonfun$compile$4(Incremental.scala:100)
sbt.internal.inc.IncrementalCommon.recompileClasses(IncrementalCommon.scala:180)
sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:98)
sbt.internal.inc.Incremental$.$anonfun$compile$3(Incremental.scala:102)
sbt.internal.inc.Incremental$.manageClassfiles(Incremental.scala:155)
sbt.internal.inc.Incremental$.compile(Incremental.scala:92)
sbt.internal.inc.IncrementalCompile$.apply(Compile.scala:75)
sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:348)
sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:301)
sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:168)
sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:248)
sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:74)
sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:1762)
sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:1735)
scala.Function1.$anonfun$compose$1(Function1.scala:49)
sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
sbt.std.Transform$$anon$4.work(Transform.scala:67)
sbt.Execute.$anonfun$submit$2(Execute.scala:281)
sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:19)
sbt.Execute.work(Execute.scala:290)
sbt.Execute.$anonfun$submit$1(Execute.scala:281)
sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:178)
sbt.CompletionService$$anon$2.call(CompletionService.scala:37)
java.util.concurrent.FutureTask.run(FutureTask.java:266)
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
java.util.concurrent.FutureTask.run(FutureTask.java:266)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
java.lang.Thread.run(Thread.java:748)

Version: 0.21.0-RC1

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions