Skip to content

Commit 6fba066

Browse files
authored
Merge pull request #8110 from dotty-staging/fix-performace-regressions
Adapt inline parameters
2 parents 5ad626e + 0746f00 commit 6fba066

File tree

5 files changed

+54
-95
lines changed

5 files changed

+54
-95
lines changed

compiler/src/dotty/tools/dotc/reporting/trace.scala

Lines changed: 13 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -25,69 +25,37 @@ object trace extends TraceSyntax {
2525
abstract class TraceSyntax {
2626
val isForced: Boolean
2727

28-
// FIXME Use this signature after reference compiler is updated
29-
// inline def onDebug[TD](inline question: String)(inline op: TD)(implicit ctx: Context): TD =
30-
inline def onDebug[TD](question: => String)(op: => TD)(implicit ctx: Context): TD =
28+
inline def onDebug[TD](inline question: String)(inline op: TD)(implicit ctx: Context): TD =
3129
conditionally(ctx.settings.YdebugTrace.value, question, false)(op)
3230

33-
// FIXME Use this implementation after reference compiler is updated
34-
// inline def conditionally[TC](inline cond: Boolean, inline question: String, inline show: Boolean)(op: => TC)(implicit ctx: Context): TC =
35-
// inline if (isForced || Config.tracingEnabled) {
36-
// if (cond) apply[TC](question, Printers.default, show)(op)
37-
// else op
38-
// }
39-
// else op
40-
inline def conditionally[TC](cond: Boolean, question: => String, show: Boolean)(op: => TC)(implicit ctx: Context): TC =
31+
inline def conditionally[TC](inline cond: Boolean, inline question: String, inline show: Boolean)(op: => TC)(implicit ctx: Context): TC =
4132
inline if (isForced || Config.tracingEnabled) {
42-
def op1 = op
43-
if (cond) apply[TC](question, Printers.default, show)(op1)
44-
else op1
33+
if (cond) apply[TC](question, Printers.default, show)(op)
34+
else op
4535
}
4636
else op
4737

48-
// FIXME Use this implementation after reference compiler is updated
49-
// inline def apply[T](inline question: String, inline printer: Printers.Printer, inline showOp: Any => String)(op: => T)(implicit ctx: Context): T =
50-
// inline if (isForced || Config.tracingEnabled) {
51-
// if (!isForced && printer.eq(config.Printers.noPrinter)) op
52-
// else doTrace[T](question, printer, showOp)(op)
53-
// }
54-
// else op
55-
inline def apply[T](question: => String, printer: Printers.Printer, showOp: Any => String)(op: => T)(implicit ctx: Context): T =
38+
inline def apply[T](inline question: String, inline printer: Printers.Printer, inline showOp: Any => String)(op: => T)(implicit ctx: Context): T =
5639
inline if (isForced || Config.tracingEnabled) {
57-
def op1 = op
58-
if (!isForced && printer.eq(config.Printers.noPrinter)) op1
59-
else doTrace[T](question, printer, showOp)(op1)
40+
if (!isForced && printer.eq(config.Printers.noPrinter)) op
41+
else doTrace[T](question, printer, showOp)(op)
6042
}
6143
else op
6244

63-
// FIXME Use this implementation after reference compiler is updated
64-
// inline def apply[T](inline question: String, inline printer: Printers.Printer, inline show: Boolean)(op: => T)(implicit ctx: Context): T =
65-
// inline if (isForced || Config.tracingEnabled) {
66-
// if (!isForced && printer.eq(config.Printers.noPrinter)) op
67-
// else doTrace[T](question, printer, if (show) showShowable(_) else alwaysToString)(op)
68-
// }
69-
// else op
70-
inline def apply[T](question: => String, printer: Printers.Printer, show: Boolean)(op: => T)(implicit ctx: Context): T =
45+
inline def apply[T](inline question: String, inline printer: Printers.Printer, inline show: Boolean)(op: => T)(implicit ctx: Context): T =
7146
inline if (isForced || Config.tracingEnabled) {
72-
def op1 = op
73-
if (!isForced && printer.eq(config.Printers.noPrinter)) op1
74-
else doTrace[T](question, printer, if (show) showShowable(_) else alwaysToString)(op1)
47+
if (!isForced && printer.eq(config.Printers.noPrinter)) op
48+
else doTrace[T](question, printer, if (show) showShowable(_) else alwaysToString)(op)
7549
}
7650
else op
7751

78-
// FIXME Use this signature after reference compiler is updated
79-
// inline def apply[T](inline question: String, inline printer: Printers.Printer)(inline op: T)(implicit ctx: Context): T =
80-
inline def apply[T](question: => String, printer: Printers.Printer)(op: => T)(implicit ctx: Context): T =
52+
inline def apply[T](inline question: String, inline printer: Printers.Printer)(inline op: T)(implicit ctx: Context): T =
8153
apply[T](question, printer, false)(op)
8254

83-
// FIXME Use this signature after reference compiler is updated
84-
// inline def apply[T](inline question: String, inline show: Boolean)(inline op: T)(implicit ctx: Context): T =
85-
inline def apply[T](question: => String, show: Boolean)(op: => T)(implicit ctx: Context): T =
55+
inline def apply[T](inline question: String, inline show: Boolean)(inline op: T)(implicit ctx: Context): T =
8656
apply[T](question, Printers.default, show)(op)
8757

88-
// FIXME Use this signature after reference compiler is updated
89-
// inline def apply[T](inline question: String)(inline op: T)(implicit ctx: Context): T =
90-
inline def apply[T](question: => String)(op: => T)(implicit ctx: Context): T =
58+
inline def apply[T](inline question: String)(inline op: T)(implicit ctx: Context): T =
9159
apply[T](question, Printers.default, false)(op)
9260

9361
private def showShowable(x: Any)(implicit ctx: Context) = x match {

compiler/src/dotty/tools/dotc/util/Stats.scala

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,7 @@ import collection.mutable
1919
override def default(key: String): Int = 0
2020
}
2121

22-
// FIXME Use this signature after reference compiler is updated
23-
// inline def record(inline fn: String, inline n: Int = 1): Unit =
24-
inline def record(fn: => String, n: => Int = 1): Unit =
22+
inline def record(inline fn: String, inline n: Int = 1): Unit =
2523
if (enabled) doRecord(fn, n)
2624

2725
def doRecord(fn: String, n: Int) =
@@ -30,9 +28,7 @@ import collection.mutable
3028
hits(name) += n
3129
}
3230

33-
// FIXME Use this signature after reference compiler is updated
34-
// inline def trackTime[T](fn: String)(inline op: T): T =
35-
inline def trackTime[T](fn: String)(op: => T): T =
31+
inline def trackTime[T](fn: String)(inline op: T): T =
3632
if (enabled) doTrackTime(fn)(op) else op
3733

3834
def doTrackTime[T](fn: String)(op: => T): T = {

compiler/test/dotty/tools/backend/jvm/ArrayApplyOptTest.scala

Lines changed: 28 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,7 @@ import scala.tools.asm.Opcodes._
88
class ArrayApplyOptTest extends DottyBytecodeTest {
99
import ASMConverters._
1010

11-
// FIXME: Re-enable IArray bytecode tests (requires updated reference compiler)
12-
// Also change: library/src/scala/IArray.scala
13-
@Test def testArrayEmptyGenericApply= {
11+
@Test def testArrayEmptyGenericApply = {
1412
test("Array[String]()", List(Op(ICONST_0), TypeOp(ANEWARRAY, "java/lang/String"), Op(POP), Op(RETURN)))
1513
test("Array[Unit]()", List(Op(ICONST_0), TypeOp(ANEWARRAY, "scala/runtime/BoxedUnit"), Op(POP), Op(RETURN)))
1614
test("Array[Object]()", List(Op(ICONST_0), TypeOp(ANEWARRAY, "java/lang/Object"), Op(POP), Op(RETURN)))
@@ -24,91 +22,91 @@ class ArrayApplyOptTest extends DottyBytecodeTest {
2422
test("Array[Char]()", newArray0Opcodes(T_CHAR))
2523
test("Array[T]()", newArray0Opcodes(T_INT))
2624

27-
// test("IArray[String]()", List(Op(ICONST_0), TypeOp(ANEWARRAY, "java/lang/String"), TypeOp(CHECKCAST, "[Ljava/lang/String;"), Op(POP), Op(RETURN)))
28-
// test("IArray[Unit]()", List(Op(ICONST_0), TypeOp(ANEWARRAY, "scala/runtime/BoxedUnit"), TypeOp(CHECKCAST, "[Lscala/runtime/BoxedUnit;"), Op(POP), Op(RETURN)))
29-
// test("IArray[Object]()", List(Op(ICONST_0), TypeOp(ANEWARRAY, "java/lang/Object"), TypeOp(CHECKCAST, "[Ljava/lang/Object;"), Op(POP), Op(RETURN)))
30-
// test("IArray[Boolean]()", newArray0Opcodes(T_BOOLEAN, TypeOp(CHECKCAST, "[Z") :: Nil))
31-
// test("IArray[Byte]()", newArray0Opcodes(T_BYTE, TypeOp(CHECKCAST, "[B") :: Nil))
32-
// test("IArray[Short]()", newArray0Opcodes(T_SHORT, TypeOp(CHECKCAST, "[S") :: Nil))
33-
// test("IArray[Int]()", newArray0Opcodes(T_INT, TypeOp(CHECKCAST, "[I") :: Nil))
34-
// test("IArray[Long]()", newArray0Opcodes(T_LONG, TypeOp(CHECKCAST, "[J") :: Nil))
35-
// test("IArray[Float]()", newArray0Opcodes(T_FLOAT, TypeOp(CHECKCAST, "[F") :: Nil))
36-
// test("IArray[Double]()", newArray0Opcodes(T_DOUBLE, TypeOp(CHECKCAST, "[D") :: Nil))
37-
// test("IArray[Char]()", newArray0Opcodes(T_CHAR, TypeOp(CHECKCAST, "[C") :: Nil))
38-
// test("IArray[T]()", newArray0Opcodes(T_INT, TypeOp(CHECKCAST, "[I") :: Nil))
25+
test("IArray[String]()", List(Op(ICONST_0), TypeOp(ANEWARRAY, "java/lang/String"), TypeOp(CHECKCAST, "[Ljava/lang/String;"), Op(POP), Op(RETURN)))
26+
test("IArray[Unit]()", List(Op(ICONST_0), TypeOp(ANEWARRAY, "scala/runtime/BoxedUnit"), TypeOp(CHECKCAST, "[Lscala/runtime/BoxedUnit;"), Op(POP), Op(RETURN)))
27+
test("IArray[Object]()", List(Op(ICONST_0), TypeOp(ANEWARRAY, "java/lang/Object"), TypeOp(CHECKCAST, "[Ljava/lang/Object;"), Op(POP), Op(RETURN)))
28+
test("IArray[Boolean]()", newArray0Opcodes(T_BOOLEAN, TypeOp(CHECKCAST, "[Z") :: Nil))
29+
test("IArray[Byte]()", newArray0Opcodes(T_BYTE, TypeOp(CHECKCAST, "[B") :: Nil))
30+
test("IArray[Short]()", newArray0Opcodes(T_SHORT, TypeOp(CHECKCAST, "[S") :: Nil))
31+
test("IArray[Int]()", newArray0Opcodes(T_INT, TypeOp(CHECKCAST, "[I") :: Nil))
32+
test("IArray[Long]()", newArray0Opcodes(T_LONG, TypeOp(CHECKCAST, "[J") :: Nil))
33+
test("IArray[Float]()", newArray0Opcodes(T_FLOAT, TypeOp(CHECKCAST, "[F") :: Nil))
34+
test("IArray[Double]()", newArray0Opcodes(T_DOUBLE, TypeOp(CHECKCAST, "[D") :: Nil))
35+
test("IArray[Char]()", newArray0Opcodes(T_CHAR, TypeOp(CHECKCAST, "[C") :: Nil))
36+
test("IArray[T]()", newArray0Opcodes(T_INT, TypeOp(CHECKCAST, "[I") :: Nil))
3937
}
4038

41-
@Test def testArrayGenericApply= {
39+
@Test def testArrayGenericApply = {
4240
def opCodes(tpe: String) =
4341
List(Op(ICONST_2), TypeOp(ANEWARRAY, tpe), Op(DUP), Op(ICONST_0), Ldc(LDC, "a"), Op(AASTORE), Op(DUP), Op(ICONST_1), Ldc(LDC, "b"), Op(AASTORE), Op(POP), Op(RETURN))
4442
test("""Array("a", "b")""", opCodes("java/lang/String"))
4543
test("""Array[Object]("a", "b")""", opCodes("java/lang/Object"))
4644

4745
def opCodes2(tpe: String) =
4846
List(Op(ICONST_2), TypeOp(ANEWARRAY, tpe), Op(DUP), Op(ICONST_0), Ldc(LDC, "a"), Op(AASTORE), Op(DUP), Op(ICONST_1), Ldc(LDC, "b"), Op(AASTORE), TypeOp(CHECKCAST, s"[L$tpe;"), Op(POP), Op(RETURN))
49-
// test("""IArray("a", "b")""", opCodes2("java/lang/String"))
50-
// test("""IArray[Object]("a", "b")""", opCodes2("java/lang/Object"))
47+
test("""IArray("a", "b")""", opCodes2("java/lang/String"))
48+
test("""IArray[Object]("a", "b")""", opCodes2("java/lang/Object"))
5149
}
5250

5351
@Test def testArrayApplyBoolean = {
5452
val init = List(Op(DUP), Op(ICONST_0), Op(ICONST_1), Op(BASTORE), Op(DUP), Op(ICONST_1), Op(ICONST_0), Op(BASTORE))
5553
test("Array(true, false)", newArray2Opcodes(T_BOOLEAN, init))
56-
// test("IArray(true, false)", newArray2Opcodes(T_BOOLEAN, init :+ TypeOp(CHECKCAST, "[Z")))
54+
test("IArray(true, false)", newArray2Opcodes(T_BOOLEAN, init :+ TypeOp(CHECKCAST, "[Z")))
5755
}
5856

5957
@Test def testArrayApplyByte = {
6058
val init = List(Op(DUP), Op(ICONST_0), Op(ICONST_1), Op(BASTORE), Op(DUP), Op(ICONST_1), Op(ICONST_2), Op(BASTORE))
6159
test("Array[Byte](1, 2)", newArray2Opcodes(T_BYTE, init))
62-
// test("IArray[Byte](1, 2)", newArray2Opcodes(T_BYTE, init :+ TypeOp(CHECKCAST, "[B")))
60+
test("IArray[Byte](1, 2)", newArray2Opcodes(T_BYTE, init :+ TypeOp(CHECKCAST, "[B")))
6361
}
6462

6563
@Test def testArrayApplyShort = {
6664
val init = List(Op(DUP), Op(ICONST_0), Op(ICONST_1), Op(SASTORE), Op(DUP), Op(ICONST_1), Op(ICONST_2), Op(SASTORE))
6765
test("Array[Short](1, 2)", newArray2Opcodes(T_SHORT, init))
68-
// test("IArray[Short](1, 2)", newArray2Opcodes(T_SHORT, init :+ TypeOp(CHECKCAST, "[S")))
66+
test("IArray[Short](1, 2)", newArray2Opcodes(T_SHORT, init :+ TypeOp(CHECKCAST, "[S")))
6967
}
7068

7169
@Test def testArrayApplyInt = {
7270
val init = List(Op(DUP), Op(ICONST_0), Op(ICONST_1), Op(IASTORE), Op(DUP), Op(ICONST_1), Op(ICONST_2), Op(IASTORE))
7371
test("Array(1, 2)", newArray2Opcodes(T_INT, init))
74-
// test("IArray(1, 2)", newArray2Opcodes(T_INT, init :+ TypeOp(CHECKCAST, "[I")))
72+
test("IArray(1, 2)", newArray2Opcodes(T_INT, init :+ TypeOp(CHECKCAST, "[I")))
7573

7674
val init2 = List(Op(DUP), Op(ICONST_0), Field(GETSTATIC, "Foo$", "MODULE$", "LFoo$;"), Invoke(INVOKEVIRTUAL, "Foo$", "t", "()I", false), Op(IASTORE), Op(DUP), Op(ICONST_1), Field(GETSTATIC, "Foo$", "MODULE$", "LFoo$;"), Invoke(INVOKEVIRTUAL, "Foo$", "t", "()I", false), Op(IASTORE))
7775
test("""Array[T](t, t)""", newArray2Opcodes(T_INT, init2))
78-
// test("""IArray[T](t, t)""", newArray2Opcodes(T_INT, init2 :+ TypeOp(CHECKCAST, "[I")))
76+
test("""IArray[T](t, t)""", newArray2Opcodes(T_INT, init2 :+ TypeOp(CHECKCAST, "[I")))
7977
}
8078

8179
@Test def testArrayApplyLong = {
8280
val init = List(Op(DUP), Op(ICONST_0), Ldc(LDC, 2), Op(LASTORE), Op(DUP), Op(ICONST_1), Ldc(LDC, 3), Op(LASTORE))
8381
test("Array(2L, 3L)", newArray2Opcodes(T_LONG, init))
84-
// test("IArray(2L, 3L)", newArray2Opcodes(T_LONG, init :+ TypeOp(CHECKCAST, "[J")))
82+
test("IArray(2L, 3L)", newArray2Opcodes(T_LONG, init :+ TypeOp(CHECKCAST, "[J")))
8583
}
8684

8785
@Test def testArrayApplyFloat = {
8886
val init = List(Op(DUP), Op(ICONST_0), Ldc(LDC, 2.1f), Op(FASTORE), Op(DUP), Op(ICONST_1), Ldc(LDC, 3.1f), Op(FASTORE))
8987
test("Array(2.1f, 3.1f)", newArray2Opcodes(T_FLOAT, init))
90-
// test("IArray(2.1f, 3.1f)", newArray2Opcodes(T_FLOAT, init :+ TypeOp(CHECKCAST, "[F")))
88+
test("IArray(2.1f, 3.1f)", newArray2Opcodes(T_FLOAT, init :+ TypeOp(CHECKCAST, "[F")))
9189
}
9290

9391
@Test def testArrayApplyDouble = {
9492
val init = List(Op(DUP), Op(ICONST_0), Ldc(LDC, 2.2d), Op(DASTORE), Op(DUP), Op(ICONST_1), Ldc(LDC, 3.2d), Op(DASTORE))
9593
test("Array(2.2d, 3.2d)", newArray2Opcodes(T_DOUBLE, init))
96-
// test("IArray(2.2d, 3.2d)", newArray2Opcodes(T_DOUBLE, init :+ TypeOp(CHECKCAST, "[D")))
94+
test("IArray(2.2d, 3.2d)", newArray2Opcodes(T_DOUBLE, init :+ TypeOp(CHECKCAST, "[D")))
9795
}
9896

9997
@Test def testArrayApplyChar = {
10098
val init = List(Op(DUP), Op(ICONST_0), IntOp(BIPUSH, 120), Op(CASTORE), Op(DUP), Op(ICONST_1), IntOp(BIPUSH, 121), Op(CASTORE))
10199
test("Array('x', 'y')", newArray2Opcodes(T_CHAR, init))
102-
// test("IArray('x', 'y')", newArray2Opcodes(T_CHAR, init :+ TypeOp(CHECKCAST, "[C")))
100+
test("IArray('x', 'y')", newArray2Opcodes(T_CHAR, init :+ TypeOp(CHECKCAST, "[C")))
103101
}
104102

105103
@Test def testArrayApplyUnit = {
106104
test("Array[Unit]((), ())", List(Op(ICONST_2), TypeOp(ANEWARRAY, "scala/runtime/BoxedUnit"), Op(DUP),
107105
Op(ICONST_0), Field(GETSTATIC, "scala/runtime/BoxedUnit", "UNIT", "Lscala/runtime/BoxedUnit;"), Op(AASTORE), Op(DUP),
108106
Op(ICONST_1), Field(GETSTATIC, "scala/runtime/BoxedUnit", "UNIT", "Lscala/runtime/BoxedUnit;"), Op(AASTORE), Op(POP), Op(RETURN)))
109-
// test("IArray[Unit]((), ())", List(Op(ICONST_2), TypeOp(ANEWARRAY, "scala/runtime/BoxedUnit"), Op(DUP),
110-
// Op(ICONST_0), Field(GETSTATIC, "scala/runtime/BoxedUnit", "UNIT", "Lscala/runtime/BoxedUnit;"), Op(AASTORE), Op(DUP),
111-
// Op(ICONST_1), Field(GETSTATIC, "scala/runtime/BoxedUnit", "UNIT", "Lscala/runtime/BoxedUnit;"), Op(AASTORE), TypeOp(CHECKCAST, "[Lscala/runtime/BoxedUnit;"), Op(POP), Op(RETURN)))
107+
test("IArray[Unit]((), ())", List(Op(ICONST_2), TypeOp(ANEWARRAY, "scala/runtime/BoxedUnit"), Op(DUP),
108+
Op(ICONST_0), Field(GETSTATIC, "scala/runtime/BoxedUnit", "UNIT", "Lscala/runtime/BoxedUnit;"), Op(AASTORE), Op(DUP),
109+
Op(ICONST_1), Field(GETSTATIC, "scala/runtime/BoxedUnit", "UNIT", "Lscala/runtime/BoxedUnit;"), Op(AASTORE), TypeOp(CHECKCAST, "[Lscala/runtime/BoxedUnit;"), Op(POP), Op(RETURN)))
112110
}
113111

114112
@Test def testArrayInlined = test(

library/src/scala/IArray.scala

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -284,29 +284,26 @@ object IArray {
284284
/** An immutable object array of length 0. */
285285
def emptyObjectIArray = Array.emptyObjectArray.asInstanceOf[IArray[Object]]
286286

287-
// FIXME: add inline parameters (requires updated reference compiler)
288-
// Also change: compiler/test/dotty/tools/backend/jvm/ArrayApplyOptTest.scala
289-
290287
/** An immutable array with given elements. */
291-
inline def apply[T](/*inline*/ xs: T*)(given ct: => ClassTag[T]): IArray[T] = Array(xs: _*).asInstanceOf
288+
inline def apply[T](inline xs: T*)(given inline ct: ClassTag[T]): IArray[T] = Array(xs: _*).asInstanceOf
292289
/** An immutable array with given elements. */
293-
inline def apply(/*inline*/ x: Boolean, /*inline*/ xs: Boolean*): IArray[Boolean] = Array(x, xs: _*).asInstanceOf
290+
inline def apply(inline x: Boolean, inline xs: Boolean*): IArray[Boolean] = Array(x, xs: _*).asInstanceOf
294291
/** An immutable array with given elements. */
295-
inline def apply(/*inline*/ x: Byte, /*inline*/ xs: Byte*): IArray[Byte] = Array(x, xs: _*).asInstanceOf
292+
inline def apply(inline x: Byte, inline xs: Byte*): IArray[Byte] = Array(x, xs: _*).asInstanceOf
296293
/** An immutable array with given elements. */
297-
inline def apply(/*inline*/ x: Short, /*inline*/ xs: Short*): IArray[Short] = Array(x, xs: _*).asInstanceOf
294+
inline def apply(inline x: Short, inline xs: Short*): IArray[Short] = Array(x, xs: _*).asInstanceOf
298295
/** An immutable array with given elements. */
299-
inline def apply(/*inline*/ x: Char, /*inline*/ xs: Char*): IArray[Char] = Array(x, xs: _*).asInstanceOf
296+
inline def apply(inline x: Char, inline xs: Char*): IArray[Char] = Array(x, xs: _*).asInstanceOf
300297
/** An immutable array with given elements. */
301-
inline def apply(/*inline*/ x: Int, /*inline*/ xs: Int*): IArray[Int] = Array(x, xs: _*).asInstanceOf
298+
inline def apply(inline x: Int, inline xs: Int*): IArray[Int] = Array(x, xs: _*).asInstanceOf
302299
/** An immutable array with given elements. */
303-
inline def apply(/*inline*/ x: Long, /*inline*/ xs: Long*): IArray[Long] = Array(x, xs: _*).asInstanceOf
300+
inline def apply(inline x: Long, inline xs: Long*): IArray[Long] = Array(x, xs: _*).asInstanceOf
304301
/** An immutable array with given elements. */
305-
inline def apply(/*inline*/ x: Float, /*inline*/ xs: Float*): IArray[Float] = Array(x, xs: _*).asInstanceOf
302+
inline def apply(inline x: Float, inline xs: Float*): IArray[Float] = Array(x, xs: _*).asInstanceOf
306303
/** An immutable array with given elements. */
307-
inline def apply(/*inline*/ x: Double, /*inline*/ xs: Double*): IArray[Double] = Array(x, xs: _*).asInstanceOf
304+
inline def apply(inline x: Double, inline xs: Double*): IArray[Double] = Array(x, xs: _*).asInstanceOf
308305
/** An immutable array with given elements. */
309-
inline def apply(/*inline*/ x: Unit, /*inline*/ xs: Unit*): IArray[Unit] = Array(x, xs: _*).asInstanceOf
306+
inline def apply(inline x: Unit, inline xs: Unit*): IArray[Unit] = Array(x, xs: _*).asInstanceOf
310307

311308
/** Concatenates all arrays into a single immutable array.
312309
*

project/Build.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ object MyScalaJSPlugin extends AutoPlugin {
6262
}
6363

6464
object Build {
65-
val referenceVersion = "0.22.0-bin-20200114-193f7de-NIGHTLY"
65+
val referenceVersion = "0.22.0-bin-20200127-f00fa72-NIGHTLY"
6666

6767
val baseVersion = "0.22.0"
6868
val baseSbtDottyVersion = "0.4.0"

0 commit comments

Comments
 (0)