Skip to content

Commit f3a1635

Browse files
committed
Upgrade to Scala.js 1.4.0.
The changes in `JSExportsGen` are ported from the upstream PR scala-js/scala-js#4334
1 parent d049102 commit f3a1635

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

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

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1420,7 +1420,7 @@ class JSCodeGen()(using genCtx: Context) {
14201420
/* This is a default parameter whose assignment was moved to
14211421
* a local variable. Put an undefined param instead.
14221422
*/
1423-
js.Transient(UndefinedParam)(toIRType(sym.info))
1423+
js.Transient(UndefinedParam)
14241424
} else {
14251425
js.VarRef(encodeLocalSym(sym))(toIRType(sym.info))
14261426
}
@@ -1691,7 +1691,7 @@ class JSCodeGen()(using genCtx: Context) {
16911691

16921692
fun match {
16931693
case _ if sym.isJSDefaultParam =>
1694-
js.Transient(UndefinedParam)(toIRType(sym.info.finalResultType))
1694+
js.Transient(UndefinedParam)
16951695

16961696
case Select(Super(_, _), _) =>
16971697
genSuperCall(tree, isStat)
@@ -4306,6 +4306,15 @@ object JSCodeGen {
43064306
* To be used inside a `js.Transient` node.
43074307
*/
43084308
case object UndefinedParam extends js.Transient.Value {
4309+
val tpe: jstpe.Type = jstpe.UndefType
4310+
4311+
def traverse(traverser: ir.Traversers.Traverser): Unit = ()
4312+
4313+
def transform(transformer: ir.Transformers.Transformer, isStat: Boolean)(
4314+
implicit pos: ir.Position): js.Tree = {
4315+
js.Transient(this)
4316+
}
4317+
43094318
def printIR(out: ir.Printers.IRTreePrinter): Unit =
43104319
out.print("<undefined-param>")
43114320
}

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -753,7 +753,10 @@ final class JSExportsGen(jsCodeGen: JSCodeGen)(using Context) {
753753

754754
if (targetSym.isJSType) {
755755
if (defaultGetter.owner.isNonNativeJSClass) {
756-
genApplyJSClassMethod(targetTree, defaultGetter, defaultGetterArgs)
756+
if (defaultGetter.hasAnnotation(jsdefn.JSOptionalAnnot))
757+
js.Undefined()
758+
else
759+
genApplyJSClassMethod(targetTree, defaultGetter, defaultGetterArgs)
757760
} else {
758761
report.error(
759762
"When overriding a native method with default arguments, " +

project/plugins.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//
33
// e.g. addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.1.0")
44

5-
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.3.1")
5+
addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.4.0")
66

77
addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.6")
88

0 commit comments

Comments
 (0)