Skip to content
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

Failure in construction of path for outer accessor #15666

Closed
WojciechMazur opened this issue Jul 13, 2022 · 4 comments · Fixed by #15671
Closed

Failure in construction of path for outer accessor #15666

WojciechMazur opened this issue Jul 13, 2022 · 4 comments · Fixed by #15671
Assignees
Milestone

Comments

@WojciechMazur
Copy link
Contributor

Community build regression for https://github.com/disneystreaming/smithy4s (maintainer @Baccata)
Based on Open Community Build #2474
Part of #15647 regressions tracker

Compiler version

Works with 3.1.3
Fails with 3.2.0-RC1
Fails with 3.2.1-RC1-bin-20220711-6efd92d-NIGHTLY

Minimized code

trait Isomorphism[A, B] {
  def to(a: A): B
  def from(b: B): A
}

abstract class Newtype[A] {
 def apply(a: A): A = a

  implicit val isomorphismInstance: Isomorphism[A, A] =
    new Isomorphism[A, A] {
      inline def from(b: A): A = b
      inline def to(a: A): A = apply(a)
    }
}

Output (click arrow to expand)

[error] [core3] java.lang.AssertionError: assertion failed: failure to construct path from value Newtype_this/method from$retainedBody/anonymous class Object with 
[error] [core3]   smithy4s.capability.Isomorphism[A, Newtype.this.Type]
[error] [core3]  {...}/getter isomorphismInstance/class Newtype/package smithy4s/package <root> to `this` of  <none>;
[error] [core3] class Newtype in package smithy4s does not have an outer accessor
[error] [core3] scala.runtime.Scala3RunTime$.assertFailed(Scala3RunTime.scala:8)
[error] [core3] dotty.tools.dotc.transform.ExplicitOuter$OuterOps$.loop$1(ExplicitOuter.scala:422)
[error] [core3] dotty.tools.dotc.transform.ExplicitOuter$OuterOps$.path$extension(ExplicitOuter.scala:441)
[error] [core3] dotty.tools.dotc.transform.ElimOuterSelect.transformSelect(ElimOuterSelect.scala:31)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.goSelect(MegaPhase.scala:605)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.goSelect(MegaPhase.scala:606)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.goSelect(MegaPhase.scala:606)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.goSelect(MegaPhase.scala:606)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.goSelect(MegaPhase.scala:606)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:228)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:425)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.mapValDef$1(MegaPhase.scala:234)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:239)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:425)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.recur$1(MegaPhase.scala:459)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformTrees(MegaPhase.scala:459)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformSpecificTrees(MegaPhase.scala:462)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:393)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:427)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.mapDefDef$1(MegaPhase.scala:248)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:251)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:425)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.loop$1(MegaPhase.scala:438)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:438)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:359)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:427)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:255)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:425)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.loop$2(MegaPhase.scala:444)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformBlock(MegaPhase.scala:449)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:298)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:427)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.mapValDef$1(MegaPhase.scala:234)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:239)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:425)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.loop$1(MegaPhase.scala:438)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:438)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:359)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:427)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformNamed$1(MegaPhase.scala:255)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:425)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.loop$1(MegaPhase.scala:438)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformStats(MegaPhase.scala:438)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.mapPackage$1(MegaPhase.scala:379)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformUnnamed$1(MegaPhase.scala:382)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformTree(MegaPhase.scala:427)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.transformUnit(MegaPhase.scala:454)
[error] [core3] dotty.tools.dotc.transform.MegaPhase.run(MegaPhase.scala:466)
[error] [core3] dotty.tools.dotc.core.Phases$Phase.runOn$$anonfun$1(Phases.scala:311)
[error] [core3] scala.collection.immutable.List.map(List.scala:250)
[error] [core3] dotty.tools.dotc.core.Phases$Phase.runOn(Phases.scala:312)
[error] [core3] dotty.tools.dotc.Run.runPhases$1$$anonfun$1(Run.scala:234)
[error] [core3] scala.runtime.function.JProcedure1.apply(JProcedure1.java:15)
[error] [core3] scala.runtime.function.JProcedure1.apply(JProcedure1.java:10)
[error] [core3] scala.collection.ArrayOps$.foreach$extension(ArrayOps.scala:1328)
[error] [core3] dotty.tools.dotc.Run.runPhases$1(Run.scala:245)
[error] [core3] dotty.tools.dotc.Run.compileUnits$$anonfun$1(Run.scala:253)
[error] [core3] dotty.tools.dotc.Run.compileUnits$$anonfun$adapted$1(Run.scala:262)
[error] [core3] dotty.tools.dotc.util.Stats$.maybeMonitored(Stats.scala:68)
[error] [core3] dotty.tools.dotc.Run.compileUnits(Run.scala:262)
[error] [core3] dotty.tools.dotc.Run.compileSources(Run.scala:186)
[error] [core3] dotty.tools.dotc.Run.compile(Run.scala:170)
[error] [core3] dotty.tools.dotc.Driver.doCompile(Driver.scala:35)
[error] [core3] dotty.tools.xsbt.CompilerBridgeDriver.run(CompilerBridgeDriver.java:88)
[error] [core3] dotty.tools.xsbt.CompilerBridge.run(CompilerBridge.java:22)
[error] [core3] sbt.internal.inc.AnalyzingCompiler.compile(AnalyzingCompiler.scala:91)
[error] [core3] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$7(MixedAnalyzingCompiler.scala:192)
[error] [core3] scala.runtime.java8.JFunction0$mcV$sp.apply(JFunction0$mcV$sp.java:23)
[error] [core3] sbt.internal.inc.MixedAnalyzingCompiler.timed(MixedAnalyzingCompiler.scala:247)
[error] [core3] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4(MixedAnalyzingCompiler.scala:182)
[error] [core3] sbt.internal.inc.MixedAnalyzingCompiler.$anonfun$compile$4$adapted(MixedAnalyzingCompiler.scala:163)
[error] [core3] sbt.internal.inc.JarUtils$.withPreviousJar(JarUtils.scala:239)
[error] [core3] sbt.internal.inc.MixedAnalyzingCompiler.compileScala$1(MixedAnalyzingCompiler.scala:163)
[error] [core3] sbt.internal.inc.MixedAnalyzingCompiler.compile(MixedAnalyzingCompiler.scala:210)
[error] [core3] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1(IncrementalCompilerImpl.scala:528)
[error] [core3] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileInternal$1$adapted(IncrementalCompilerImpl.scala:528)
[error] [core3] sbt.internal.inc.Incremental$.$anonfun$apply$5(Incremental.scala:177)
[error] [core3] sbt.internal.inc.Incremental$.$anonfun$apply$5$adapted(Incremental.scala:175)
[error] [core3] sbt.internal.inc.Incremental$$anon$2.run(Incremental.scala:461)
[error] [core3] sbt.internal.inc.IncrementalCommon$CycleState.next(IncrementalCommon.scala:116)
[error] [core3] sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:56)
[error] [core3] sbt.internal.inc.IncrementalCommon$$anon$1.next(IncrementalCommon.scala:52)
[error] [core3] sbt.internal.inc.IncrementalCommon.cycle(IncrementalCommon.scala:263)
[error] [core3] sbt.internal.inc.Incremental$.$anonfun$incrementalCompile$8(Incremental.scala:416)
[error] [core3] sbt.internal.inc.Incremental$.withClassfileManager(Incremental.scala:503)
[error] [core3] sbt.internal.inc.Incremental$.incrementalCompile(Incremental.scala:403)
[error] [core3] sbt.internal.inc.Incremental$.apply(Incremental.scala:169)
[error] [core3] sbt.internal.inc.IncrementalCompilerImpl.compileInternal(IncrementalCompilerImpl.scala:528)
[error] [core3] sbt.internal.inc.IncrementalCompilerImpl.$anonfun$compileIncrementally$1(IncrementalCompilerImpl.scala:482)
[error] [core3] sbt.internal.inc.IncrementalCompilerImpl.handleCompilationError(IncrementalCompilerImpl.scala:332)
[error] [core3] sbt.internal.inc.IncrementalCompilerImpl.compileIncrementally(IncrementalCompilerImpl.scala:420)
[error] [core3] sbt.internal.inc.IncrementalCompilerImpl.compile(IncrementalCompilerImpl.scala:137)
[error] [core3] sbt.Defaults$.compileIncrementalTaskImpl(Defaults.scala:2366)
[error] [core3] sbt.Defaults$.$anonfun$compileIncrementalTask$2(Defaults.scala:2316)
[error] [core3] sbt.internal.server.BspCompileTask$.$anonfun$compute$1(BspCompileTask.scala:30)
[error] [core3] sbt.internal.io.Retry$.apply(Retry.scala:46)
[error] [core3] sbt.internal.io.Retry$.apply(Retry.scala:28)
[error] [core3] sbt.internal.io.Retry$.apply(Retry.scala:23)
[error] [core3] sbt.internal.server.BspCompileTask$.compute(BspCompileTask.scala:30)
[error] [core3] sbt.Defaults$.$anonfun$compileIncrementalTask$1(Defaults.scala:2314)
[error] [core3] scala.Function1.$anonfun$compose$1(Function1.scala:49)
[error] [core3] sbt.internal.util.$tilde$greater.$anonfun$$u2219$1(TypeFunctions.scala:62)
[error] [core3] sbt.std.Transform$$anon$4.work(Transform.scala:68)
[error] [core3] sbt.Execute.$anonfun$submit$2(Execute.scala:282)
[error] [core3] sbt.internal.util.ErrorHandling$.wideConvert(ErrorHandling.scala:23)
[error] [core3] sbt.Execute.work(Execute.scala:291)
[error] [core3] sbt.Execute.$anonfun$submit$1(Execute.scala:282)
[error] [core3] sbt.ConcurrentRestrictions$$anon$4.$anonfun$submitValid$1(ConcurrentRestrictions.scala:265)
[error] [core3] sbt.CompletionService$$anon$2.call(CompletionService.scala:64)
[error] [core3] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] [core3] java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
[error] [core3] java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
[error] [core3] java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
[error] [core3] java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
[error] [core3] java.base/java.lang.Thread.run(Thread.java:834)
[error] [core3]            
[error] [core3] (core3 / Compile / compileIncremental) java.lang.AssertionError: assertion failed: failure to construct path from value Newtype_this/method from$retainedBody/anonymous class Object with 
[error] [core3]   smithy4s.capability.Isomorphism[A, Newtype.this.Type]
[error] [core3]  {...}/getter isomorphismInstance/class Newtype/package smithy4s/package <root> to `this` of  <none>;
[error] [core3] class Newtype in package smithy4s does not have an outer accessor
@KacperFKorban
Copy link
Member

A bit simpler minimization:

trait GetInt {
  def value: Int // if we add inline here, the program compiles
}

class Newtype {
  def f: Int = ???

  val g = new GetInt {
    inline def value: Int = f // has to be inline to crash
  }
}

@odersky
Copy link
Contributor

odersky commented Jul 13, 2022

Can we get the commit that failed? There were two PRs that could have touched this.

@KacperFKorban
Copy link
Member

Te first commit is 323dbce

@odersky odersky self-assigned this Jul 13, 2022
odersky added a commit to dotty-staging/dotty that referenced this issue Jul 13, 2022
@odersky
Copy link
Contributor

odersky commented Jul 13, 2022

In fact I wonder how this compiled at all before 323dbce. It seems that every call of the inline method would have caused an error then.

Ah, wait: It could be that only the implemented abstract method was a visible call target. But the the inline would in fact never be called.

@griggt griggt removed the stat:needs triage Every issue needs to have an "area" and "itype" label label Jul 16, 2022
Kordyjan pushed a commit to dotty-staging/dotty that referenced this issue Jul 26, 2022
bishabosha pushed a commit to dotty-staging/dotty that referenced this issue Oct 18, 2022
@Kordyjan Kordyjan added this to the 3.2.1 milestone Aug 1, 2023
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.

5 participants