-
Notifications
You must be signed in to change notification settings - Fork 1.1k
trait with named parameters would lead to compiler error in specific cases #9213
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
Labels
Comments
The definition of result of Foo.scala after erasure:
package foo {
@scala.annotation.internal.SourceFile("Foo.scala") trait A(a: Object, b: Int)
extends
Object {
private def a(): Object
private def b(): Int
}
final lazy module val B: foo.B$ = new foo.B$()
@scala.annotation.internal.SourceFile("Foo.scala") final module class B$()
extends
Object(), {
val a$1: String = new String("")
new foo.A(a$1, 0)
}, java.io.Serializable {
private def writeReplace(): Object =
new scala.runtime.ModuleSerializationProxy(classOf[foo.B$])
}
}
result of Foo.scala after MegaPhase{elimErasedValueType, vcElideAllocations, arrayApply, elimPolyFunction, tailrec, completeJavaEnums, mixin, lazyVals, memoize, nonLocalReturns, capturedVars}:
package foo {
@scala.annotation.internal.SourceFile("Foo.scala") trait A() extends Object {
def foo$A$$a(): Object
def foo$A$$b(): Int
}
final lazy module val B: foo.B$ = new foo.B$()
@scala.annotation.internal.SourceFile("Foo.scala") final module class B$()
extends
Object, foo.A, java.io.Serializable {
super()
private val foo$A$$a: Object = a$1
def foo$A$$a(): Object = foo.B.foo$A$$a
private val foo$A$$b: Int = 0
def foo$A$$b(): Int = foo.B.foo$A$$b
private def writeReplace(): Object =
new scala.runtime.ModuleSerializationProxy(classOf[foo.B$])
}
} |
odersky
added a commit
to dotty-staging/dotty
that referenced
this issue
Jun 22, 2020
odersky
added a commit
to dotty-staging/dotty
that referenced
this issue
Jun 22, 2020
odersky
added a commit
that referenced
this issue
Jun 24, 2020
Fix #9213: handle valdefs in mixin parent constructors
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Minimized code
Output
Error:dotc: Error: val a$1
java.util.NoSuchElementException: val a$1
at scala.collection.mutable.AnyRefMap$ExceptionDefault.apply(AnyRefMap.scala:504)
at scala.collection.mutable.AnyRefMap$ExceptionDefault.apply(AnyRefMap.scala:503)
at scala.collection.mutable.AnyRefMap.apply(AnyRefMap.scala:205)
at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder$locals$.load(BCodeSkelBuilder.scala:396)
at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:378)
at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genStat(BCodeBodyBuilder.scala:63)
at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genBlock$$anonfun$1(BCodeBodyBuilder.scala:912)
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.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genBlock(BCodeBodyBuilder.scala:912)
at dotty.tools.backend.jvm.BCodeBodyBuilder$PlainBodyBuilder.genLoad(BCodeBodyBuilder.scala:395)
at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.emitNormalMethodBody$1(BCodeSkelBuilder.scala:597)
at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.genDefDef(BCodeSkelBuilder.scala:630)
at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.gen(BCodeSkelBuilder.scala:501)
at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.gen$$anonfun$1(BCodeSkelBuilder.scala:503)
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.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.gen(BCodeSkelBuilder.scala:503)
at dotty.tools.backend.jvm.BCodeSkelBuilder$PlainSkelBuilder.genPlainClass(BCodeSkelBuilder.scala:109)
at dotty.tools.backend.jvm.GenBCodePipeline$Worker1.visit(GenBCode.scala:217)
at dotty.tools.backend.jvm.GenBCodePipeline$Worker1.run(GenBCode.scala:184)
at dotty.tools.backend.jvm.GenBCodePipeline.buildAndSendToDisk(GenBCode.scala:514)
at dotty.tools.backend.jvm.GenBCodePipeline.run(GenBCode.scala:480)
...
The text was updated successfully, but these errors were encountered: