Skip to content

Commit 6fd1274

Browse files
committed
Issue lampepfl#7113: Enable javalib/lang/ClassTest for Scala.js
- Fix an issue where BoxedUnit's TYPE member was not being correctly rewritten as java.lang.Void in Scala.js IR - Enable the ClassTest for Scala.js, which uses the scala.runtime.BoxedUnit.TYPE value in one of its tests
1 parent 809c786 commit 6fd1274

File tree

4 files changed

+7
-2
lines changed

4 files changed

+7
-2
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/backend/sjs/JSPrimitives.scala

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,9 @@ object JSPrimitives {
2424
final val JS_NATIVE = TYPEOF + 1 // js.native. Marker method. Fails if tried to be emitted.
2525

2626
final val UNITVAL = JS_NATIVE + 1 // () value, which is undefined
27+
final val UNITTYPE = UNITVAL + 1 // () type
2728

28-
final val CONSTRUCTOROF = UNITVAL + 1 // runtime.constructorOf(clazz)
29+
final val CONSTRUCTOROF = UNITTYPE + 1 // runtime.constructorOf(clazz)
2930
final val CREATE_INNER_JS_CLASS = CONSTRUCTOROF + 1 // runtime.createInnerJSClass
3031
final val CREATE_LOCAL_JS_CLASS = CREATE_INNER_JS_CLASS + 1 // runtime.createLocalJSClass
3132
final val WITH_CONTEXTUAL_JS_CLASS_VALUE = CREATE_LOCAL_JS_CLASS + 1 // runtime.withContextualJSClassValue
@@ -93,6 +94,7 @@ class JSPrimitives(ctx: Context) extends DottyPrimitives(ctx) {
9394
addPrimitive(jsdefn.JSPackage_native, JS_NATIVE)
9495

9596
addPrimitive(defn.BoxedUnit_UNIT, UNITVAL)
97+
addPrimitive(defn.BoxedUnit_TYPE, UNITTYPE)
9698

9799
addPrimitive(jsdefn.Runtime_constructorOf, CONSTRUCTOROF)
98100
/*addPrimitive(jsdefn.Runtime_createInnerJSClass, CREATE_INNER_JS_CLASS)

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)