Skip to content

Commit 1d15a39

Browse files
committed
Issue lampepfl#7113: Fix Scala.js codegen for BoxedUnit.TYPE
- `scala.runtime.BoxedUnit.TYPE` is now intercepted by `JSCodeGen` as a primitive for `ClassOf(ClassRef("V"))`, which Scala.js recognizes as `java.lang.Void` - Enable the javalib/lang/ClassTest for Scala.js, which contains a test that uses `BoxedUnit.TYPE`
1 parent 705f304 commit 1d15a39

File tree

3 files changed

+4
-1
lines changed

3 files changed

+4
-1
lines changed

compiler/src/dotty/tools/backend/sjs/JSCodeGen.scala

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2731,6 +2731,8 @@ class JSCodeGen()(implicit ctx: Context) {
27312731

27322732
if (sym == defn.BoxedUnit_UNIT) {
27332733
js.Undefined()
2734+
} else if (sym == defn.BoxedUnit_TYPE) {
2735+
js.ClassOf(jstpe.ClassRef("V"))
27342736
} else {
27352737
val inst = genLoadModule(sym.owner)
27362738
val method = encodeStaticMemberSym(sym)

compiler/src/dotty/tools/dotc/core/Definitions.scala

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,6 +466,7 @@ class Definitions {
466466

467467
@tu lazy val BoxedUnitClass: ClassSymbol = ctx.requiredClass("scala.runtime.BoxedUnit")
468468
def BoxedUnit_UNIT(given Context): TermSymbol = BoxedUnitClass.linkedClass.requiredValue("UNIT")
469+
def BoxedUnit_TYPE(given Context): TermSymbol = BoxedUnitClass.linkedClass.requiredValue("TYPE")
469470

470471
@tu lazy val BoxedBooleanClass: ClassSymbol = ctx.requiredClass("java.lang.Boolean")
471472
@tu lazy val BoxedByteClass : ClassSymbol = ctx.requiredClass("java.lang.Byte")

project/Build.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -978,7 +978,7 @@ object Build {
978978
val dir = fetchScalaJSSource.value / "test-suite"
979979
(
980980
(dir / "shared/src/test/scala/org/scalajs/testsuite/compiler" ** (("*.scala":FileFilter) -- "RegressionTest.scala" -- "ReflectiveCallTest.scala")).get
981-
++ (dir / "shared/src/test/scala/org/scalajs/testsuite/javalib/lang" ** (("*.scala": FileFilter) -- "ClassTest.scala" -- "StringTest.scala")).get
981+
++ (dir / "shared/src/test/scala/org/scalajs/testsuite/javalib/lang" ** (("*.scala": FileFilter) -- "StringTest.scala")).get
982982
++ (dir / "shared/src/test/scala/org/scalajs/testsuite/javalib/io" ** (("*.scala": FileFilter) -- "ByteArrayInputStreamTest.scala" -- "ByteArrayOutputStreamTest.scala" -- "DataInputStreamTest.scala" -- "DataOutputStreamTest.scala" -- "InputStreamTest.scala" -- "OutputStreamWriterTest.scala" -- "PrintStreamTest.scala" -- "ReadersTest.scala" -- "CommonStreamsTests.scala")).get
983983
++ (dir / "shared/src/test/scala/org/scalajs/testsuite/javalib/math" ** "*.scala").get
984984
++ (dir / "shared/src/test/scala/org/scalajs/testsuite/javalib/net" ** (("*.scala": FileFilter) -- "URITest.scala")).get

0 commit comments

Comments
 (0)