Skip to content

Commit faec468

Browse files
committed
Partial fix for lampepfl#7113: Fix Scala.js codegen for Null/Nothing types
- Fix the encoding of the `NullClass` and `NothingClass` in `JSEncoding` to correctly map to the corresponding Scala.js IR Symbols - Enable the `javalib/net/URITest` for Scala.js, which uses default arguments with `null` values, which in turn are used as the return type of the default getters.
1 parent 705f304 commit faec468

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

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

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -398,8 +398,17 @@ object JSEncoding {
398398
paramAndResultTypeNames.mkString(SignatureSep, SignatureSep, "")
399399

400400
/** Computes the internal name for a type. */
401-
private def internalName(tpe: Type)(implicit ctx: Context): String =
402-
encodeTypeRef(toTypeRef(tpe))
401+
private def internalName(tpe: Type)(implicit ctx: Context): String = {
402+
val typeRef = toTypeRef(tpe)
403+
404+
val safeTypeRef: jstpe.TypeRef = typeRef match {
405+
case jstpe.ClassRef("s_Null") => jstpe.ClassRef(ir.Definitions.NullClass)
406+
case jstpe.ClassRef("s_Nothing") => jstpe.ClassRef(ir.Definitions.NothingClass)
407+
case otherTypeRef => otherTypeRef
408+
}
409+
410+
encodeTypeRef(safeTypeRef)
411+
}
403412

404413
/** Encodes a [[Types.TypeRef]], such as in an encoded method signature.
405414
*/

project/Build.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -981,7 +981,7 @@ object Build {
981981
++ (dir / "shared/src/test/scala/org/scalajs/testsuite/javalib/lang" ** (("*.scala": FileFilter) -- "ClassTest.scala" -- "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
984-
++ (dir / "shared/src/test/scala/org/scalajs/testsuite/javalib/net" ** (("*.scala": FileFilter) -- "URITest.scala")).get
984+
++ (dir / "shared/src/test/scala/org/scalajs/testsuite/javalib/net" ** "*.scala").get
985985
++ (dir / "shared/src/test/scala/org/scalajs/testsuite/javalib/security" ** "*.scala").get
986986
++ (dir / "shared/src/test/scala/org/scalajs/testsuite/javalib/util/regex" ** "*.scala").get
987987
++ (dir / "shared/src/test/scala/org/scalajs/testsuite/javalib/util/concurrent" ** (("*.scala": FileFilter) -- "ConcurrentHashMapTest.scala" -- "ConcurrentLinkedQueueTest.scala" -- "ConcurrentMapTest.scala" -- "ConcurrentSkipListSetTest.scala" -- "CopyOnWriteArrayListTest.scala")).get

0 commit comments

Comments
 (0)