Skip to content

Stack overflow #9330

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

Closed
sir-wabbit opened this issue Jul 9, 2020 · 0 comments · Fixed by #10007
Closed

Stack overflow #9330

sir-wabbit opened this issue Jul 9, 2020 · 0 comments · Fixed by #10007

Comments

@sir-wabbit
Copy link

Minimized code

// SOE-5093e73d8c42e9bbd943e595ec6de228c36b538a
val x = {
  () == ""
  implicit def foo[A: A]
}

Output (click arrow to expand)

-- [E019] Syntax Error: test.scala:3:24 ----------------------------------------
3 |  implicit def foo[A: A]
  |                        ^
  |                        Missing return type

longer explanation available when compiling with `-explain`
-- [E053] Type Error: test.scala:3:20 ------------------------------------------
3 |  implicit def foo[A: A]
  |                    ^^^
  |                    A does not take type parameters

longer explanation available when compiling with `-explain`
-- Error: test.scala:3:15 ------------------------------------------------------
3 |  implicit def foo[A: A]
  |               ^
  |           result type of implicit definition needs to be given explicitly
java.lang.StackOverflowError while compiling test.scala
Exception in thread "main" java.lang.StackOverflowError
...
	at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3541)
	at dotty.tools.dotc.typer.Typer.op$3(Typer.scala:2881)
	at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:2882)
	at dotty.tools.dotc.typer.Implicits.op$2(Implicits.scala:1027)
	at dotty.tools.dotc.typer.Implicits.typedImplicit(Implicits.scala:1083)
	at dotty.tools.dotc.typer.Typer.typedImplicit(Typer.scala:89)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.tryImplicit(Implicits.scala:1116)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.rank$1(Implicits.scala:1196)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicits(Implicits.scala:1296)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1317)
	at dotty.tools.dotc.typer.Implicits.op$1(Implicits.scala:979)
	at dotty.tools.dotc.typer.Implicits.inferImplicit(Implicits.scala:1015)
	at dotty.tools.dotc.typer.Typer.inferImplicit(Typer.scala:89)
	at dotty.tools.dotc.typer.Implicits.inferImplicitArg(Implicits.scala:780)
	at dotty.tools.dotc.typer.Typer.inferImplicitArg(Typer.scala:89)
	at dotty.tools.dotc.typer.Typer.implicitArgs$2(Typer.scala:3028)
	at dotty.tools.dotc.typer.Typer.addImplicitArgs$3(Typer.scala:3053)
	at dotty.tools.dotc.typer.Typer.adaptNoArgsImplicitMethod$2(Typer.scala:3121)
	at dotty.tools.dotc.typer.Typer.adaptNoArgs$1(Typer.scala:3304)
	at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3557)
	at dotty.tools.dotc.typer.Typer.op$3(Typer.scala:2881)
	at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:2882)
	at dotty.tools.dotc.typer.Typer.readapt$1(Typer.scala:2892)
	at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3541)
	at dotty.tools.dotc.typer.Typer.op$3(Typer.scala:2881)
	at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:2882)
	at dotty.tools.dotc.typer.Implicits.op$2(Implicits.scala:1027)
	at dotty.tools.dotc.typer.Implicits.typedImplicit(Implicits.scala:1083)
	at dotty.tools.dotc.typer.Typer.typedImplicit(Typer.scala:89)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.tryImplicit(Implicits.scala:1116)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.rank$1(Implicits.scala:1196)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicits(Implicits.scala:1296)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1317)
	at dotty.tools.dotc.typer.Implicits.op$1(Implicits.scala:979)
	at dotty.tools.dotc.typer.Implicits.inferImplicit(Implicits.scala:1015)
	at dotty.tools.dotc.typer.Typer.inferImplicit(Typer.scala:89)
	at dotty.tools.dotc.typer.Implicits.inferImplicitArg(Implicits.scala:780)
	at dotty.tools.dotc.typer.Typer.inferImplicitArg(Typer.scala:89)
	at dotty.tools.dotc.typer.Typer.implicitArgs$2(Typer.scala:3028)
	at dotty.tools.dotc.typer.Typer.addImplicitArgs$3(Typer.scala:3053)
	at dotty.tools.dotc.typer.Typer.adaptNoArgsImplicitMethod$2(Typer.scala:3121)
	at dotty.tools.dotc.typer.Typer.adaptNoArgs$1(Typer.scala:3304)
	at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3557)
	at dotty.tools.dotc.typer.Typer.op$3(Typer.scala:2881)
	at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:2882)
	at dotty.tools.dotc.typer.Typer.readapt$1(Typer.scala:2892)
	at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3541)
	at dotty.tools.dotc.typer.Typer.op$3(Typer.scala:2881)
	at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:2882)
	at dotty.tools.dotc.typer.Implicits.op$2(Implicits.scala:1027)
	at dotty.tools.dotc.typer.Implicits.typedImplicit(Implicits.scala:1083)
	at dotty.tools.dotc.typer.Typer.typedImplicit(Typer.scala:89)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.tryImplicit(Implicits.scala:1116)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.rank$1(Implicits.scala:1196)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicits(Implicits.scala:1296)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1317)
	at dotty.tools.dotc.typer.Implicits.op$1(Implicits.scala:979)
	at dotty.tools.dotc.typer.Implicits.inferImplicit(Implicits.scala:1015)
	at dotty.tools.dotc.typer.Typer.inferImplicit(Typer.scala:89)
	at dotty.tools.dotc.typer.Implicits.inferImplicitArg(Implicits.scala:780)
	at dotty.tools.dotc.typer.Typer.inferImplicitArg(Typer.scala:89)
	at dotty.tools.dotc.typer.Typer.implicitArgs$2(Typer.scala:3028)
	at dotty.tools.dotc.typer.Typer.addImplicitArgs$3(Typer.scala:3053)
	at dotty.tools.dotc.typer.Typer.adaptNoArgsImplicitMethod$2(Typer.scala:3121)
	at dotty.tools.dotc.typer.Typer.adaptNoArgs$1(Typer.scala:3304)
	at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3557)
	at dotty.tools.dotc.typer.Typer.op$3(Typer.scala:2881)
	at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:2882)
	at dotty.tools.dotc.typer.Typer.readapt$1(Typer.scala:2892)
	at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3541)
	at dotty.tools.dotc.typer.Typer.op$3(Typer.scala:2881)
	at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:2882)
	at dotty.tools.dotc.typer.Implicits.op$2(Implicits.scala:1027)
	at dotty.tools.dotc.typer.Implicits.typedImplicit(Implicits.scala:1083)
	at dotty.tools.dotc.typer.Typer.typedImplicit(Typer.scala:89)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.tryImplicit(Implicits.scala:1116)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.rank$1(Implicits.scala:1196)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicits(Implicits.scala:1296)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1317)
	at dotty.tools.dotc.typer.Implicits.op$1(Implicits.scala:979)
	at dotty.tools.dotc.typer.Implicits.inferImplicit(Implicits.scala:1015)
	at dotty.tools.dotc.typer.Typer.inferImplicit(Typer.scala:89)
	at dotty.tools.dotc.typer.Implicits.inferImplicitArg(Implicits.scala:780)
	at dotty.tools.dotc.typer.Typer.inferImplicitArg(Typer.scala:89)
	at dotty.tools.dotc.typer.Typer.implicitArgs$2(Typer.scala:3028)
	at dotty.tools.dotc.typer.Typer.addImplicitArgs$3(Typer.scala:3053)
	at dotty.tools.dotc.typer.Typer.adaptNoArgsImplicitMethod$2(Typer.scala:3121)
	at dotty.tools.dotc.typer.Typer.adaptNoArgs$1(Typer.scala:3304)
	at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3557)
	at dotty.tools.dotc.typer.Typer.op$3(Typer.scala:2881)
	at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:2882)
	at dotty.tools.dotc.typer.Typer.readapt$1(Typer.scala:2892)
	at dotty.tools.dotc.typer.Typer.adapt1(Typer.scala:3541)
	at dotty.tools.dotc.typer.Typer.op$3(Typer.scala:2881)
	at dotty.tools.dotc.typer.Typer.adapt(Typer.scala:2882)
	at dotty.tools.dotc.typer.Implicits.op$2(Implicits.scala:1027)
	at dotty.tools.dotc.typer.Implicits.typedImplicit(Implicits.scala:1083)
	at dotty.tools.dotc.typer.Typer.typedImplicit(Typer.scala:89)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.tryImplicit(Implicits.scala:1116)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.rank$1(Implicits.scala:1196)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.searchImplicits(Implicits.scala:1296)
	at dotty.tools.dotc.typer.Implicits$ImplicitSearch.bestImplicit(Implicits.scala:1317)
	at dotty.tools.dotc.typer.Implicits.op$1(Implicits.scala:979)
	at dotty.tools.dotc.typer.Implicits.inferImplicit(Implicits.scala:1015)
	at dotty.tools.dotc.typer.Typer.inferImplicit(Typer.scala:89)
	at dotty.tools.dotc.typer.Implicits.inferImplicitArg(Implicits.scala:780)
	at dotty.tools.dotc.typer.Typer.inferImplicitArg(Typer.scala:89)
	at dotty.tools.dotc.typer.Implicits.implicitArgTree(Implicits.scala:790)
	at dotty.tools.dotc.typer.Typer.implicitArgTree(Typer.scala:89)
	at dotty.tools.dotc.typer.Implicits.checkCanEqual(Implicits.scala:961)
	at dotty.tools.dotc.typer.Typer.checkCanEqual(Typer.scala:89)
	at dotty.tools.dotc.typer.Applications.typedApply(Applications.scala:1004)
	at dotty.tools.dotc.typer.Typer.typedApply(Typer.scala:89)
	at dotty.tools.dotc.typer.Typer.typedInfixOp(Typer.scala:2307)
	at dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2456)
	at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2478)
	at dotty.tools.dotc.typer.Typer.op$1(Typer.scala:2544)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2553)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2556)
	at dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:2604)
	at dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:2626)
	at dotty.tools.dotc.typer.Typer.typedBlockStats(Typer.scala:863)
	at dotty.tools.dotc.typer.Typer.typedBlock(Typer.scala:867)
	at dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2426)
	at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2478)
	at dotty.tools.dotc.typer.Typer.op$1(Typer.scala:2544)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2553)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2556)
	at dotty.tools.dotc.typer.Namer.typedAheadExpr$$anonfun$1(Namer.scala:1363)
	at dotty.tools.dotc.typer.Namer.typedAhead(Namer.scala:1353)
	at dotty.tools.dotc.typer.Namer.typedAheadExpr(Namer.scala:1363)
	at dotty.tools.dotc.typer.Namer.rhsType$2(Namer.scala:1495)
	at dotty.tools.dotc.typer.Namer.cookedRhsType$1(Namer.scala:1506)
	at dotty.tools.dotc.typer.Namer.lhsType$1(Namer.scala:1507)
	at dotty.tools.dotc.typer.Namer.inferredType$1(Namer.scala:1518)
	at dotty.tools.dotc.typer.Namer.valOrDefDefSig(Namer.scala:1526)
	at dotty.tools.dotc.typer.Namer$Completer.typeSig(Namer.scala:821)
	at dotty.tools.dotc.typer.Namer$Completer.completeInCreationContext(Namer.scala:942)
	at dotty.tools.dotc.typer.Namer$Completer.complete(Namer.scala:853)
	at dotty.tools.dotc.core.SymDenotations$SymDenotation.completeFrom(SymDenotations.scala:259)
	at dotty.tools.dotc.core.Denotations$Denotation.completeInfo$1(Denotations.scala:188)
	at dotty.tools.dotc.core.Denotations$Denotation.info(Denotations.scala:190)
	at dotty.tools.dotc.core.SymDenotations$SymDenotation.ensureCompleted(SymDenotations.scala:445)
	at dotty.tools.dotc.typer.Typer.retrieveSym(Typer.scala:2360)
	at dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2385)
	at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2477)
	at dotty.tools.dotc.typer.Typer.op$1(Typer.scala:2544)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2553)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2556)
	at dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:2578)
	at dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:2626)
	at dotty.tools.dotc.typer.Typer.typedClassDef(Typer.scala:2076)
	at dotty.tools.dotc.typer.Typer.typedTypeOrClassDef$2(Typer.scala:2406)
	at dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:2410)
	at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2477)
	at dotty.tools.dotc.typer.Typer.op$1(Typer.scala:2544)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2553)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2556)
	at dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:2578)
	at dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:2626)
	at dotty.tools.dotc.typer.Typer.typedPackageDef(Typer.scala:2202)
	at dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:2450)
	at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:2478)
	at dotty.tools.dotc.typer.Typer.op$1(Typer.scala:2544)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2553)
	at dotty.tools.dotc.typer.Typer.typed(Typer.scala:2556)
	at dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:2670)
	at dotty.tools.dotc.typer.FrontEnd.liftedTree1$1(FrontEnd.scala:79)
	at dotty.tools.dotc.typer.FrontEnd.typeCheck$$anonfun$1(FrontEnd.scala:84)
	at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
	at dotty.tools.dotc.typer.FrontEnd.monitor(FrontEnd.scala:42)
	at dotty.tools.dotc.typer.FrontEnd.typeCheck(FrontEnd.scala:85)
	at dotty.tools.dotc.typer.FrontEnd.runOn$$anonfun$3(FrontEnd.scala:114)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.immutable.List.foreach(List.scala:333)
	at dotty.tools.dotc.typer.FrontEnd.runOn(FrontEnd.scala:114)
	at dotty.tools.dotc.Run.runPhases$4$$anonfun$4(Run.scala:180)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:15)
	at dotty.runtime.function.JProcedure1.apply(JProcedure1.java:10)
	at scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1323)
	at dotty.tools.dotc.Run.runPhases$5(Run.scala:190)
	at dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:198)
	at dotty.runtime.function.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:12)
	at dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:64)
	at dotty.tools.dotc.Run.compileUnits(Run.scala:205)
	at dotty.tools.dotc.Run.compileSources(Run.scala:142)
	at dotty.tools.dotc.Run.compile(Run.scala:124)
	at dotty.tools.dotc.Driver.doCompile(Driver.scala:38)
	at dotty.tools.dotc.Driver.process(Driver.scala:194)
	at dotty.tools.dotc.Driver.process(Driver.scala:163)
	at dotty.tools.dotc.Driver.process(Driver.scala:175)
	at dotty.tools.dotc.Driver.main(Driver.scala:202)
	at dotty.tools.dotc.Main.main(Main.scala)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants