Closed
Description
$ cat abc.scala
class X(val i: Int) extends AnyVal { class Inner(val q: Int) { def plus = i + q } }
object Test extends App {
val x = new X(11)
val i = new x.Inner(22)
assert(i.plus == 33)
}
$ dotc abc.scala
exception while typing X.this of class class dotty.tools.dotc.ast.Trees$This # 151
exception while typing X.this.i of class class dotty.tools.dotc.ast.Trees$Select # 152
exception while typing X.this.i.+ of class class dotty.tools.dotc.ast.Trees$Select # 153
exception while typing X.this.i.+(Inner.this.q) of class class dotty.tools.dotc.ast.Trees$Apply # 367
exception while typing def plus: Int = X.this.i.+(Inner.this.q) of class class dotty.tools.dotc.ast.Trees$DefDef # 368
exception while typing class Inner(q: Int) extends Object() {
<accessor> def q: Int
def plus: Int = X.this.i.+(Inner.this.q)
private <accessor> def $outer: X
final def X$Inner$$$outer: X = Inner.this.$outer
} of class class dotty.tools.dotc.ast.Trees$TypeDef # 463
exception while typing @scala.annotation.internal.SourceFile("abc.scala") final class X(i: Int) extends AnyVal() {
<accessor> def i: Int
class Inner(q: Int) extends Object() {
<accessor> def q: Int
def plus: Int = X.this.i.+(Inner.this.q)
private <accessor> def $outer: X
final def X$Inner$$$outer: X = Inner.this.$outer
}
override def hashCode(): Int = X.hashCode$extension(this)()
override def equals(x$0: Any): Boolean = X.equals$extension(this)(x$0)
} of class class dotty.tools.dotc.ast.Trees$TypeDef # 465
exception while typing package <empty> {
@scala.annotation.internal.SourceFile("abc.scala") final class X(i: Int) extends AnyVal() {
<accessor> def i: Int
class Inner(q: Int) extends Object() {
<accessor> def q: Int
def plus: Int = X.this.i.+(Inner.this.q)
private <accessor> def $outer: X
final def X$Inner$$$outer: X = Inner.this.$outer
}
override def hashCode(): Int = X.hashCode$extension(this)()
override def equals(x$0: Any): Boolean = X.equals$extension(this)(x$0)
}
final lazy module val X: X$ = new X$()
@scala.annotation.internal.SourceFile("abc.scala") final module class X$() extends Object() {
override final def hashCode$extension($this: X)(): Int = $this.i.hashCode()
override final def equals$extension($this: X)(x$0: Any): Boolean =
{
case val selector11: Any = x$0
{
def case11(): Boolean =
{
def case21(): Boolean =
{
def matchFail11(): Boolean = throw new MatchError(selector11)
if selector11.isInstanceOf[Any] then
{
false
}
else matchFail11()
}
if selector11.isInstanceOf[X] then
{
val x$0: X = selector11.asInstanceOf[ErasedValueType(X, Int)(x$0)]
{
$this.i.==(x$0.i)
}
}
else case21()
}
case11()
}
}
}
final lazy module val Test: Test$ = new Test$()
@scala.annotation.internal.SourceFile("abc.scala") final module class Test$() extends Object() with App {
@deprecatedOverriding("args should not be overridden", "2.11.0") protected def args: Array{scala$Array$$T = String}
=
super[App].args
@deprecated("The delayedInit mechanism will disappear.", "2.11.0") override def delayedInit(body: => Unit): Unit =
super[App].delayedInit(body)
@deprecatedOverriding("main should not be overridden", "2.11.0") def main(args: Array{scala$Array$$T = String}):
Unit
= super[App].main(args)
<accessor> def x: X = new X(11)
<accessor> def i: Test.x.Inner = new Test.x.Inner(22)
assert(Test.i.plus.==(33))
}
} of class class dotty.tools.dotc.ast.Trees$PackageDef # 496
exception occurred while compiling abc.scala
Exception in thread "main" java.lang.ClassCastException: no path exists from class Inner to class X
at dotty.tools.dotc.transform.ExplicitOuter$OuterOps$.path$extension(ExplicitOuter.scala:346)
at dotty.tools.dotc.transform.Erasure$Typer.typedThis(Erasure.scala:395)
at dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:1440)
at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:1480)
at dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:95)
at dotty.tools.dotc.typer.Typer$$anonfun$typed$2.apply(Typer.scala:1490)
at dotty.tools.dotc.typer.Typer$$anonfun$typed$2.apply(Typer.scala:1488)
at dotty.tools.dotc.reporting.Reporting$class.traceIndented(Reporter.scala:132)
at dotty.tools.dotc.core.Contexts$Context.traceIndented(Contexts.scala:57)
at dotty.tools.dotc.typer.Typer.typed(Typer.scala:1488)
at dotty.tools.dotc.transform.Erasure$Typer.typedSelect(Erasure.scala:388)
at dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:1420)
at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:1478)
at dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:95)
at dotty.tools.dotc.typer.Typer$$anonfun$typed$2.apply(Typer.scala:1490)
at dotty.tools.dotc.typer.Typer$$anonfun$typed$2.apply(Typer.scala:1488)
at dotty.tools.dotc.reporting.Reporting$class.traceIndented(Reporter.scala:132)
at dotty.tools.dotc.core.Contexts$Context.traceIndented(Contexts.scala:57)
at dotty.tools.dotc.typer.Typer.typed(Typer.scala:1488)
at dotty.tools.dotc.transform.Erasure$Typer.typedSelect(Erasure.scala:388)
at dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:1420)
at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:1478)
at dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:95)
at dotty.tools.dotc.typer.Typer$$anonfun$typed$2.apply(Typer.scala:1490)
at dotty.tools.dotc.typer.Typer$$anonfun$typed$2.apply(Typer.scala:1488)
at dotty.tools.dotc.reporting.Reporting$class.traceIndented(Reporter.scala:132)
at dotty.tools.dotc.core.Contexts$Context.traceIndented(Contexts.scala:57)
at dotty.tools.dotc.typer.Typer.typed(Typer.scala:1488)
at dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:1540)
at dotty.tools.dotc.transform.Erasure$Typer.typedApply(Erasure.scala:430)
at dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:1439)
at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:1480)
at dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:95)
at dotty.tools.dotc.typer.Typer$$anonfun$typed$2.apply(Typer.scala:1490)
at dotty.tools.dotc.typer.Typer$$anonfun$typed$2.apply(Typer.scala:1488)
at dotty.tools.dotc.reporting.Reporting$class.traceIndented(Reporter.scala:132)
at dotty.tools.dotc.core.Contexts$Context.traceIndented(Contexts.scala:57)
at dotty.tools.dotc.typer.Typer.typed(Typer.scala:1488)
at dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:1540)
at dotty.tools.dotc.typer.Typer$$anonfun$typedDefDef$1.apply(Typer.scala:1171)
at dotty.tools.dotc.typer.Typer$$anonfun$typedDefDef$1.apply(Typer.scala:1154)
at dotty.tools.dotc.util.Stats$.track(Stats.scala:35)
at dotty.tools.dotc.typer.Typer.typedDefDef(Typer.scala:1154)
at dotty.tools.dotc.transform.Erasure$Typer.typedDefDef(Erasure.scala:485)
at dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:1427)
at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:1478)
at dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:95)
at dotty.tools.dotc.typer.Typer$$anonfun$typed$2.apply(Typer.scala:1490)
at dotty.tools.dotc.typer.Typer$$anonfun$typed$2.apply(Typer.scala:1488)
at dotty.tools.dotc.reporting.Reporting$class.traceIndented(Reporter.scala:132)
at dotty.tools.dotc.core.Contexts$Context.traceIndented(Contexts.scala:57)
at dotty.tools.dotc.typer.Typer.typed(Typer.scala:1488)
at dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:1512)
at dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:1528)
at dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:544)
at dotty.tools.dotc.typer.Typer$$anonfun$typedClassDef$1.apply(Typer.scala:1246)
at dotty.tools.dotc.typer.Typer$$anonfun$typedClassDef$1.apply(Typer.scala:1194)
at dotty.tools.dotc.util.Stats$.track(Stats.scala:35)
at dotty.tools.dotc.typer.Typer.typedClassDef(Typer.scala:1194)
at dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:1430)
at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:1478)
at dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:95)
at dotty.tools.dotc.typer.Typer$$anonfun$typed$2.apply(Typer.scala:1490)
at dotty.tools.dotc.typer.Typer$$anonfun$typed$2.apply(Typer.scala:1488)
at dotty.tools.dotc.reporting.Reporting$class.traceIndented(Reporter.scala:132)
at dotty.tools.dotc.core.Contexts$Context.traceIndented(Contexts.scala:57)
at dotty.tools.dotc.typer.Typer.typed(Typer.scala:1488)
at dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:1512)
at dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:1528)
at dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:544)
at dotty.tools.dotc.typer.Typer$$anonfun$typedClassDef$1.apply(Typer.scala:1246)
at dotty.tools.dotc.typer.Typer$$anonfun$typedClassDef$1.apply(Typer.scala:1194)
at dotty.tools.dotc.util.Stats$.track(Stats.scala:35)
at dotty.tools.dotc.typer.Typer.typedClassDef(Typer.scala:1194)
at dotty.tools.dotc.typer.Typer.typedNamed$1(Typer.scala:1430)
at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:1478)
at dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:95)
at dotty.tools.dotc.typer.Typer$$anonfun$typed$2.apply(Typer.scala:1490)
at dotty.tools.dotc.typer.Typer$$anonfun$typed$2.apply(Typer.scala:1488)
at dotty.tools.dotc.reporting.Reporting$class.traceIndented(Reporter.scala:132)
at dotty.tools.dotc.core.Contexts$Context.traceIndented(Contexts.scala:57)
at dotty.tools.dotc.typer.Typer.typed(Typer.scala:1488)
at dotty.tools.dotc.typer.Typer.traverse$1(Typer.scala:1512)
at dotty.tools.dotc.typer.Typer.typedStats(Typer.scala:1528)
at dotty.tools.dotc.transform.Erasure$Typer.typedStats(Erasure.scala:544)
at dotty.tools.dotc.typer.Typer$$anonfun$typedPackageDef$1.apply(Typer.scala:1346)
at dotty.tools.dotc.typer.Typer$$anonfun$typedPackageDef$1.apply(Typer.scala:1337)
at dotty.tools.dotc.util.Stats$.track(Stats.scala:35)
at dotty.tools.dotc.typer.Typer.typedPackageDef(Typer.scala:1337)
at dotty.tools.dotc.typer.Typer.typedUnnamed$1(Typer.scala:1468)
at dotty.tools.dotc.typer.Typer.typedUnadapted(Typer.scala:1480)
at dotty.tools.dotc.typer.ReTyper.typedUnadapted(ReTyper.scala:95)
at dotty.tools.dotc.typer.Typer$$anonfun$typed$2.apply(Typer.scala:1490)
at dotty.tools.dotc.typer.Typer$$anonfun$typed$2.apply(Typer.scala:1488)
at dotty.tools.dotc.reporting.Reporting$class.traceIndented(Reporter.scala:132)
at dotty.tools.dotc.core.Contexts$Context.traceIndented(Contexts.scala:57)
at dotty.tools.dotc.typer.Typer.typed(Typer.scala:1488)
at dotty.tools.dotc.typer.Typer.typedExpr(Typer.scala:1540)
at dotty.tools.dotc.transform.Erasure.run(Erasure.scala:78)
at dotty.tools.dotc.core.Phases$Phase$$anonfun$runOn$1.apply(Phases.scala:276)
at dotty.tools.dotc.core.Phases$Phase$$anonfun$runOn$1.apply(Phases.scala:274)
at scala.collection.immutable.List.map(List.scala:273)
at dotty.tools.dotc.core.Phases$Phase$class.runOn(Phases.scala:274)
at dotty.tools.dotc.transform.Erasure.runOn(Erasure.scala:30)
at dotty.tools.dotc.Run$$anonfun$compileUnits$1$$anonfun$apply$mcV$sp$1.apply(Run.scala:75)
at dotty.tools.dotc.Run$$anonfun$compileUnits$1$$anonfun$apply$mcV$sp$1.apply(Run.scala:72)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186)
at dotty.tools.dotc.Run$$anonfun$compileUnits$1.apply$mcV$sp(Run.scala:72)
at dotty.tools.dotc.Run$$anonfun$compileUnits$1.apply(Run.scala:66)
at dotty.tools.dotc.Run$$anonfun$compileUnits$1.apply(Run.scala:66)
at dotty.tools.dotc.util.Stats$.monitorHeartBeat(Stats.scala:76)
at dotty.tools.dotc.Run.compileUnits(Run.scala:66)
at dotty.tools.dotc.Run.compileSources(Run.scala:63)
at dotty.tools.dotc.Run.compile(Run.scala:47)
at dotty.tools.dotc.Driver.doCompile(Driver.scala:26)
at dotty.tools.dotc.Driver.process(Driver.scala:124)
at dotty.tools.dotc.Driver.process(Driver.scala:93)
at dotty.tools.dotc.Driver.process(Driver.scala:105)
at dotty.tools.dotc.Driver.main(Driver.scala:132)
at dotty.tools.dotc.Main.main(Main.scala)