Skip to content

Adapt to Scala 2.12 trait encoding (removal of impl classes) #2285

@retronym

Description

@retronym

We've just run a community build against my pull request, scala/scala#5003, that changes the Scala 2.12 trait encoding.

I was pleasantly surprised to find that everything worked... well everything other than Scala JS.

Here are the compile failure, related to methods I've removed about impl classes.

[scala-js] [error] /home/jenkins/workspace/scala-2.12.x-integrate-community-build/target-0.9.5/project-builds/scala-js-07830e1e11ee5f72b4b2d29aed7bb635b8f67ae2/compiler/src/main/scala/org/scalajs/core/compiler/GenJSCode.scala:240: value IMPL_CLASS_SUFFIX is not a member of object GenJSCode.this.global.nme
[scala-js] [error]                 sym.owner.info.decl(sym.name.dropRight(nme.IMPL_CLASS_SUFFIX.length)).tpe)
[scala-js] [error]                                                            ^
[scala-js] [error] /home/jenkins/workspace/scala-2.12.x-integrate-community-build/target-0.9.5/project-builds/scala-js-07830e1e11ee5f72b4b2d29aed7bb635b8f67ae2/compiler/src/main/scala/org/scalajs/core/compiler/GenJSCode.scala:240: value IMPL_CLASS_SUFFIX is not a member of object GenJSCode.this.global.nme
[scala-js] [error]                 sym.owner.info.decl(sym.name.dropRight(nme.IMPL_CLASS_SUFFIX.length)).tpe)
[scala-js] [error]                                                            ^
[scala-js] [error] /home/jenkins/workspace/scala-2.12.x-integrate-community-build/target-0.9.5/project-builds/scala-js-07830e1e11ee5f72b4b2d29aed7bb635b8f67ae2/compiler/src/main/scala/org/scalajs/core/compiler/GenJSCode.scala:1056: value implClass is not a member of GenJSCode.this.global.Symbol
[scala-js] [error]             val implClassSym = sym.owner.implClass
[scala-js] [error]                                          ^
[scala-js] [error] /home/jenkins/workspace/scala-2.12.x-integrate-community-build/target-0.9.5/project-builds/scala-js-07830e1e11ee5f72b4b2d29aed7bb635b8f67ae2/compiler/src/main/scala/org/scalajs/core/compiler/GenJSCode.scala:1056: value implClass is not a member of GenJSCode.this.global.Symbol
[scala-js] [error]             val implClassSym = sym.owner.implClass
[scala-js] [error]                                          ^
[scala-js] [error] /home/jenkins/workspace/scala-2.12.x-integrate-community-build/target-0.9.5/project-builds/scala-js-07830e1e11ee5f72b4b2d29aed7bb635b8f67ae2/compiler/src/main/scala/org/scalajs/core/compiler/JSEncoding.scala:189: value isImplClassName is not a member of object JSEncoding.this.global.nme
[scala-js] [error]     sym.isModuleClass && nme.isImplClassName(sym.name)
[scala-js] [error]                              ^
[scala-js] [error] /home/jenkins/workspace/scala-2.12.x-integrate-community-build/target-0.9.5/project-builds/scala-js-07830e1e11ee5f72b4b2d29aed7bb635b8f67ae2/compiler/src/main/scala/org/scalajs/core/compiler/JSEncoding.scala:189: value isImplClassName is not a member of object JSEncoding.this.global.nme
[scala-js] [error]     sym.isModuleClass && nme.isImplClassName(sym.name)
[scala-js] [error]                              ^
[scala-js] [error] /home/jenkins/workspace/scala-2.12.x-integrate-community-build/target-0.9.5/project-builds/scala-js-07830e1e11ee5f72b4b2d29aed7bb635b8f67ae2/compiler/src/main/scala/org/scalajs/core/compiler/TypeKinds.scala:238: value interfaceName is not a member of object TypeKinds.this.global.tpnme
[scala-js] [error]         val traitSym = sym.owner.info.decl(tpnme.interfaceName(sym.name))
[scala-js] [error]                                                  ^
[scala-js] [error] /home/jenkins/workspace/scala-2.12.x-integrate-community-build/target-0.9.5/project-builds/scala-js-07830e1e11ee5f72b4b2d29aed7bb635b8f67ae2/compiler/src/main/scala/org/scalajs/core/compiler/TypeKinds.scala:238: value interfaceName is not a member of object TypeKinds.this.global.tpnme
[scala-js] [error]         val traitSym = sym.owner.info.decl(tpnme.interfaceName(sym.name))
[scala-js] [error]                                                  ^

You can experiment with this build with 2.12.0-03cc6f9-SNAPSHOT from "pr-scala snapshots" at "https://scala-ci.typesafe.com/artifactory/scala-pr-validation-snapshots/"

Would you be willing to adapt to these changes on a 2.12.x branch of ScalaJS?

Metadata

Metadata

Assignees

Labels

upstreamThis issue derives from a bug or a change in one of our upstream dependencies.

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions