diff --git a/compiler/src/dotty/tools/backend/ScalaPrimitivesOps.scala b/compiler/src/dotty/tools/backend/ScalaPrimitivesOps.scala index 40b567b640b8..6b5bfbc3e00e 100644 --- a/compiler/src/dotty/tools/backend/ScalaPrimitivesOps.scala +++ b/compiler/src/dotty/tools/backend/ScalaPrimitivesOps.scala @@ -5,161 +5,161 @@ object ScalaPrimitivesOps extends ScalaPrimitivesOps class ScalaPrimitivesOps { // Arithmetic unary operations - final val POS = 1 // +x - final val NEG = 2 // -x - final val NOT = 3 // ~x + inline val POS = 1 // +x + inline val NEG = 2 // -x + inline val NOT = 3 // ~x // Arithmetic binary operations - final val ADD = 10 // x + y - final val SUB = 11 // x - y - final val MUL = 12 // x * y - final val DIV = 13 // x / y - final val MOD = 14 // x % y + inline val ADD = 10 // x + y + inline val SUB = 11 // x - y + inline val MUL = 12 // x * y + inline val DIV = 13 // x / y + inline val MOD = 14 // x % y // Bitwise operations - final val OR = 20 // x | y - final val XOR = 21 // x ^ y - final val AND = 22 // x & y + inline val OR = 20 // x | y + inline val XOR = 21 // x ^ y + inline val AND = 22 // x & y // Shift operations - final val LSL = 30 // x << y - final val LSR = 31 // x >>> y - final val ASR = 32 // x >> y + inline val LSL = 30 // x << y + inline val LSR = 31 // x >>> y + inline val ASR = 32 // x >> y // Comparison operations - final val ID = 40 // x eq y - final val NI = 41 // x ne y - final val EQ = 42 // x == y - final val NE = 43 // x != y - final val LT = 44 // x < y - final val LE = 45 // x <= y - final val GT = 46 // x > y - final val GE = 47 // x >= y + inline val ID = 40 // x eq y + inline val NI = 41 // x ne y + inline val EQ = 42 // x == y + inline val NE = 43 // x != y + inline val LT = 44 // x < y + inline val LE = 45 // x <= y + inline val GT = 46 // x > y + inline val GE = 47 // x >= y // Boolean unary operations - final val ZNOT = 50 // !x + inline val ZNOT = 50 // !x // Boolean binary operations - final val ZOR = 60 // x || y - final val ZAND = 61 // x && y + inline val ZOR = 60 // x || y + inline val ZAND = 61 // x && y // Array operations - final val LENGTH = 70 // x.length - final val APPLY = 71 // x(y) - final val UPDATE = 72 // x(y) = z + inline val LENGTH = 70 // x.length + inline val APPLY = 71 // x(y) + inline val UPDATE = 72 // x(y) = z // Any operations - final val IS = 80 // x.is[y] - final val AS = 81 // x.as[y] - final val HASH = 87 // x.## + inline val IS = 80 // x.is[y] + inline val AS = 81 // x.as[y] + inline val HASH = 87 // x.## // AnyRef operations - final val SYNCHRONIZED = 90 // x.synchronized(y) + inline val SYNCHRONIZED = 90 // x.synchronized(y) // String operations - final val CONCAT = 100 // String.valueOf(x)+String.valueOf(y) + inline val CONCAT = 100 // String.valueOf(x)+String.valueOf(y) // coercions - final val COERCE = 101 + inline val COERCE = 101 // RunTime operations - final val BOX = 110 // RunTime.box_(x) - final val UNBOX = 111 // RunTime.unbox_(x) - final val NEW_ZARRAY = 112 // RunTime.zarray(x) - final val NEW_BARRAY = 113 // RunTime.barray(x) - final val NEW_SARRAY = 114 // RunTime.sarray(x) - final val NEW_CARRAY = 115 // RunTime.carray(x) - final val NEW_IARRAY = 116 // RunTime.iarray(x) - final val NEW_LARRAY = 117 // RunTime.larray(x) - final val NEW_FARRAY = 118 // RunTime.farray(x) - final val NEW_DARRAY = 119 // RunTime.darray(x) - final val NEW_OARRAY = 120 // RunTime.oarray(x) - - final val ZARRAY_LENGTH = 131 // RunTime.zarray_length(x) - final val BARRAY_LENGTH = 132 // RunTime.barray_length(x) - final val SARRAY_LENGTH = 133 // RunTime.sarray_length(x) - final val CARRAY_LENGTH = 134 // RunTime.carray_length(x) - final val IARRAY_LENGTH = 135 // RunTime.iarray_length(x) - final val LARRAY_LENGTH = 136 // RunTime.larray_length(x) - final val FARRAY_LENGTH = 137 // RunTime.farray_length(x) - final val DARRAY_LENGTH = 138 // RunTime.darray_length(x) - final val OARRAY_LENGTH = 139 // RunTime.oarray_length(x) - - final val ZARRAY_GET = 140 // RunTime.zarray_get(x,y) - final val BARRAY_GET = 141 // RunTime.barray_get(x,y) - final val SARRAY_GET = 142 // RunTime.sarray_get(x,y) - final val CARRAY_GET = 143 // RunTime.carray_get(x,y) - final val IARRAY_GET = 144 // RunTime.iarray_get(x,y) - final val LARRAY_GET = 145 // RunTime.larray_get(x,y) - final val FARRAY_GET = 146 // RunTime.farray_get(x,y) - final val DARRAY_GET = 147 // RunTime.darray_get(x,y) - final val OARRAY_GET = 148 // RunTime.oarray_get(x,y) - - final val ZARRAY_SET = 150 // RunTime.zarray(x,y,z) - final val BARRAY_SET = 151 // RunTime.barray(x,y,z) - final val SARRAY_SET = 152 // RunTime.sarray(x,y,z) - final val CARRAY_SET = 153 // RunTime.carray(x,y,z) - final val IARRAY_SET = 154 // RunTime.iarray(x,y,z) - final val LARRAY_SET = 155 // RunTime.larray(x,y,z) - final val FARRAY_SET = 156 // RunTime.farray(x,y,z) - final val DARRAY_SET = 157 // RunTime.darray(x,y,z) - final val OARRAY_SET = 158 // RunTime.oarray(x,y,z) - - final val B2B = 200 // RunTime.b2b(x) - final val B2S = 201 // RunTime.b2s(x) - final val B2C = 202 // RunTime.b2c(x) - final val B2I = 203 // RunTime.b2i(x) - final val B2L = 204 // RunTime.b2l(x) - final val B2F = 205 // RunTime.b2f(x) - final val B2D = 206 // RunTime.b2d(x) - - final val S2B = 210 // RunTime.s2b(x) - final val S2S = 211 // RunTime.s2s(x) - final val S2C = 212 // RunTime.s2c(x) - final val S2I = 213 // RunTime.s2i(x) - final val S2L = 214 // RunTime.s2l(x) - final val S2F = 215 // RunTime.s2f(x) - final val S2D = 216 // RunTime.s2d(x) - - final val C2B = 220 // RunTime.c2b(x) - final val C2S = 221 // RunTime.c2s(x) - final val C2C = 222 // RunTime.c2c(x) - final val C2I = 223 // RunTime.c2i(x) - final val C2L = 224 // RunTime.c2l(x) - final val C2F = 225 // RunTime.c2f(x) - final val C2D = 226 // RunTime.c2d(x) - - final val I2B = 230 // RunTime.i2b(x) - final val I2S = 231 // RunTime.i2s(x) - final val I2C = 232 // RunTime.i2c(x) - final val I2I = 233 // RunTime.i2i(x) - final val I2L = 234 // RunTime.i2l(x) - final val I2F = 235 // RunTime.i2f(x) - final val I2D = 236 // RunTime.i2d(x) - - final val L2B = 240 // RunTime.l2b(x) - final val L2S = 241 // RunTime.l2s(x) - final val L2C = 242 // RunTime.l2c(x) - final val L2I = 243 // RunTime.l2i(x) - final val L2L = 244 // RunTime.l2l(x) - final val L2F = 245 // RunTime.l2f(x) - final val L2D = 246 // RunTime.l2d(x) - - final val F2B = 250 // RunTime.f2b(x) - final val F2S = 251 // RunTime.f2s(x) - final val F2C = 252 // RunTime.f2c(x) - final val F2I = 253 // RunTime.f2i(x) - final val F2L = 254 // RunTime.f2l(x) - final val F2F = 255 // RunTime.f2f(x) - final val F2D = 256 // RunTime.f2d(x) - - final val D2B = 260 // RunTime.d2b(x) - final val D2S = 261 // RunTime.d2s(x) - final val D2C = 262 // RunTime.d2c(x) - final val D2I = 263 // RunTime.d2i(x) - final val D2L = 264 // RunTime.d2l(x) - final val D2F = 265 // RunTime.d2f(x) - final val D2D = 266 // RunTime.d2d(x) + inline val BOX = 110 // RunTime.box_(x) + inline val UNBOX = 111 // RunTime.unbox_(x) + inline val NEW_ZARRAY = 112 // RunTime.zarray(x) + inline val NEW_BARRAY = 113 // RunTime.barray(x) + inline val NEW_SARRAY = 114 // RunTime.sarray(x) + inline val NEW_CARRAY = 115 // RunTime.carray(x) + inline val NEW_IARRAY = 116 // RunTime.iarray(x) + inline val NEW_LARRAY = 117 // RunTime.larray(x) + inline val NEW_FARRAY = 118 // RunTime.farray(x) + inline val NEW_DARRAY = 119 // RunTime.darray(x) + inline val NEW_OARRAY = 120 // RunTime.oarray(x) + + inline val ZARRAY_LENGTH = 131 // RunTime.zarray_length(x) + inline val BARRAY_LENGTH = 132 // RunTime.barray_length(x) + inline val SARRAY_LENGTH = 133 // RunTime.sarray_length(x) + inline val CARRAY_LENGTH = 134 // RunTime.carray_length(x) + inline val IARRAY_LENGTH = 135 // RunTime.iarray_length(x) + inline val LARRAY_LENGTH = 136 // RunTime.larray_length(x) + inline val FARRAY_LENGTH = 137 // RunTime.farray_length(x) + inline val DARRAY_LENGTH = 138 // RunTime.darray_length(x) + inline val OARRAY_LENGTH = 139 // RunTime.oarray_length(x) + + inline val ZARRAY_GET = 140 // RunTime.zarray_get(x,y) + inline val BARRAY_GET = 141 // RunTime.barray_get(x,y) + inline val SARRAY_GET = 142 // RunTime.sarray_get(x,y) + inline val CARRAY_GET = 143 // RunTime.carray_get(x,y) + inline val IARRAY_GET = 144 // RunTime.iarray_get(x,y) + inline val LARRAY_GET = 145 // RunTime.larray_get(x,y) + inline val FARRAY_GET = 146 // RunTime.farray_get(x,y) + inline val DARRAY_GET = 147 // RunTime.darray_get(x,y) + inline val OARRAY_GET = 148 // RunTime.oarray_get(x,y) + + inline val ZARRAY_SET = 150 // RunTime.zarray(x,y,z) + inline val BARRAY_SET = 151 // RunTime.barray(x,y,z) + inline val SARRAY_SET = 152 // RunTime.sarray(x,y,z) + inline val CARRAY_SET = 153 // RunTime.carray(x,y,z) + inline val IARRAY_SET = 154 // RunTime.iarray(x,y,z) + inline val LARRAY_SET = 155 // RunTime.larray(x,y,z) + inline val FARRAY_SET = 156 // RunTime.farray(x,y,z) + inline val DARRAY_SET = 157 // RunTime.darray(x,y,z) + inline val OARRAY_SET = 158 // RunTime.oarray(x,y,z) + + inline val B2B = 200 // RunTime.b2b(x) + inline val B2S = 201 // RunTime.b2s(x) + inline val B2C = 202 // RunTime.b2c(x) + inline val B2I = 203 // RunTime.b2i(x) + inline val B2L = 204 // RunTime.b2l(x) + inline val B2F = 205 // RunTime.b2f(x) + inline val B2D = 206 // RunTime.b2d(x) + + inline val S2B = 210 // RunTime.s2b(x) + inline val S2S = 211 // RunTime.s2s(x) + inline val S2C = 212 // RunTime.s2c(x) + inline val S2I = 213 // RunTime.s2i(x) + inline val S2L = 214 // RunTime.s2l(x) + inline val S2F = 215 // RunTime.s2f(x) + inline val S2D = 216 // RunTime.s2d(x) + + inline val C2B = 220 // RunTime.c2b(x) + inline val C2S = 221 // RunTime.c2s(x) + inline val C2C = 222 // RunTime.c2c(x) + inline val C2I = 223 // RunTime.c2i(x) + inline val C2L = 224 // RunTime.c2l(x) + inline val C2F = 225 // RunTime.c2f(x) + inline val C2D = 226 // RunTime.c2d(x) + + inline val I2B = 230 // RunTime.i2b(x) + inline val I2S = 231 // RunTime.i2s(x) + inline val I2C = 232 // RunTime.i2c(x) + inline val I2I = 233 // RunTime.i2i(x) + inline val I2L = 234 // RunTime.i2l(x) + inline val I2F = 235 // RunTime.i2f(x) + inline val I2D = 236 // RunTime.i2d(x) + + inline val L2B = 240 // RunTime.l2b(x) + inline val L2S = 241 // RunTime.l2s(x) + inline val L2C = 242 // RunTime.l2c(x) + inline val L2I = 243 // RunTime.l2i(x) + inline val L2L = 244 // RunTime.l2l(x) + inline val L2F = 245 // RunTime.l2f(x) + inline val L2D = 246 // RunTime.l2d(x) + + inline val F2B = 250 // RunTime.f2b(x) + inline val F2S = 251 // RunTime.f2s(x) + inline val F2C = 252 // RunTime.f2c(x) + inline val F2I = 253 // RunTime.f2i(x) + inline val F2L = 254 // RunTime.f2l(x) + inline val F2F = 255 // RunTime.f2f(x) + inline val F2D = 256 // RunTime.f2d(x) + + inline val D2B = 260 // RunTime.d2b(x) + inline val D2S = 261 // RunTime.d2s(x) + inline val D2C = 262 // RunTime.d2c(x) + inline val D2I = 263 // RunTime.d2i(x) + inline val D2L = 264 // RunTime.d2l(x) + inline val D2F = 265 // RunTime.d2f(x) + inline val D2D = 266 // RunTime.d2d(x) /** Check whether the given operation code is an array operation. */ def isArrayOp(code: Int): Boolean = diff --git a/compiler/src/dotty/tools/backend/jvm/AsmUtils.scala b/compiler/src/dotty/tools/backend/jvm/AsmUtils.scala index 7f5887d99a7f..8a71a09aa7ab 100644 --- a/compiler/src/dotty/tools/backend/jvm/AsmUtils.scala +++ b/compiler/src/dotty/tools/backend/jvm/AsmUtils.scala @@ -19,8 +19,8 @@ object AsmUtils { /** * Print the bytecode of classes generated by GenBCode to the standard output. */ - final val traceClassEnabled = false - final val traceClassPattern = "" + inline val traceClassEnabled = false + inline val traceClassPattern = "" /** * Print the bytedcode of classes as they are serialized by the ASM library. The serialization @@ -28,8 +28,8 @@ object AsmUtils { * introduces stack map frames, it computes the maximal stack sizes, and it replaces dead * code by NOPs (see also https://github.com/scala/scala/pull/3726#issuecomment-42861780). */ - final val traceSerializedClassEnabled = false - final val traceSerializedClassPattern = "" + inline val traceSerializedClassEnabled = false + inline val traceSerializedClassPattern = "" def traceMethod(mnode: MethodNode1): Unit = { println(s"Bytecode for method ${mnode.name}") diff --git a/compiler/src/dotty/tools/backend/jvm/BCodeSkelBuilder.scala b/compiler/src/dotty/tools/backend/jvm/BCodeSkelBuilder.scala index 95ebf439fa6d..86150f114d2c 100644 --- a/compiler/src/dotty/tools/backend/jvm/BCodeSkelBuilder.scala +++ b/compiler/src/dotty/tools/backend/jvm/BCodeSkelBuilder.scala @@ -70,7 +70,7 @@ trait BCodeSkelBuilder extends BCodeHelpers { with BCJGenSigGen { // Strangely I can't find this in the asm code 255, but reserving 1 for "this" - final val MaximumJvmParameters = 254 + inline val MaximumJvmParameters = 254 // current class var cnode: ClassNode1 = null diff --git a/compiler/src/dotty/tools/backend/sjs/JSCodeGen.scala b/compiler/src/dotty/tools/backend/sjs/JSCodeGen.scala index e30ddd9a55da..56e16647d080 100644 --- a/compiler/src/dotty/tools/backend/sjs/JSCodeGen.scala +++ b/compiler/src/dotty/tools/backend/sjs/JSCodeGen.scala @@ -4369,7 +4369,7 @@ class JSCodeGen()(using genCtx: Context) { js.LoadJSConstructor(encodeClassName(sym)) } - private final val GenericGlobalObjectInformationMsg = { + private inline val GenericGlobalObjectInformationMsg = { "\n " + "See https://www.scala-js.org/doc/interoperability/global-scope.html " + "for further information." diff --git a/compiler/src/dotty/tools/backend/sjs/JSPrimitives.scala b/compiler/src/dotty/tools/backend/sjs/JSPrimitives.scala index 372393733051..ac7b492e3e1f 100644 --- a/compiler/src/dotty/tools/backend/sjs/JSPrimitives.scala +++ b/compiler/src/dotty/tools/backend/sjs/JSPrimitives.scala @@ -16,42 +16,42 @@ import scala.collection.mutable object JSPrimitives { - final val FirstJSPrimitiveCode = 300 + inline val FirstJSPrimitiveCode = 300 - final val DYNNEW = FirstJSPrimitiveCode + 1 // Instantiate a new JavaScript object + inline val DYNNEW = FirstJSPrimitiveCode + 1 // Instantiate a new JavaScript object - final val ARR_CREATE = DYNNEW + 1 // js.Array.apply (array literal syntax) + inline val ARR_CREATE = DYNNEW + 1 // js.Array.apply (array literal syntax) - final val TYPEOF = ARR_CREATE + 1 // typeof x - final val JS_NATIVE = TYPEOF + 1 // js.native. Marker method. Fails if tried to be emitted. + inline val TYPEOF = ARR_CREATE + 1 // typeof x + inline val JS_NATIVE = TYPEOF + 1 // js.native. Marker method. Fails if tried to be emitted. - final val UNITVAL = JS_NATIVE + 1 // () value, which is undefined + inline val UNITVAL = JS_NATIVE + 1 // () value, which is undefined - final val JS_IMPORT = UNITVAL + 1 // js.import.apply(specifier) - final val JS_IMPORT_META = JS_IMPORT + 1 // js.import.meta + inline val JS_IMPORT = UNITVAL + 1 // js.import.apply(specifier) + inline val JS_IMPORT_META = JS_IMPORT + 1 // js.import.meta - final val CONSTRUCTOROF = JS_IMPORT_META + 1 // runtime.constructorOf(clazz) - final val CREATE_INNER_JS_CLASS = CONSTRUCTOROF + 1 // runtime.createInnerJSClass - final val CREATE_LOCAL_JS_CLASS = CREATE_INNER_JS_CLASS + 1 // runtime.createLocalJSClass - final val WITH_CONTEXTUAL_JS_CLASS_VALUE = CREATE_LOCAL_JS_CLASS + 1 // runtime.withContextualJSClassValue - final val LINKING_INFO = WITH_CONTEXTUAL_JS_CLASS_VALUE + 1 // runtime.linkingInfo + inline val CONSTRUCTOROF = JS_IMPORT_META + 1 // runtime.constructorOf(clazz) + inline val CREATE_INNER_JS_CLASS = CONSTRUCTOROF + 1 // runtime.createInnerJSClass + inline val CREATE_LOCAL_JS_CLASS = CREATE_INNER_JS_CLASS + 1 // runtime.createLocalJSClass + inline val WITH_CONTEXTUAL_JS_CLASS_VALUE = CREATE_LOCAL_JS_CLASS + 1 // runtime.withContextualJSClassValue + inline val LINKING_INFO = WITH_CONTEXTUAL_JS_CLASS_VALUE + 1 // runtime.linkingInfo - final val STRICT_EQ = LINKING_INFO + 1 // js.special.strictEquals - final val IN = STRICT_EQ + 1 // js.special.in - final val INSTANCEOF = IN + 1 // js.special.instanceof - final val DELETE = INSTANCEOF + 1 // js.special.delete - final val FORIN = DELETE + 1 // js.special.forin - final val DEBUGGER = FORIN + 1 // js.special.debugger + inline val STRICT_EQ = LINKING_INFO + 1 // js.special.strictEquals + inline val IN = STRICT_EQ + 1 // js.special.in + inline val INSTANCEOF = IN + 1 // js.special.instanceof + inline val DELETE = INSTANCEOF + 1 // js.special.delete + inline val FORIN = DELETE + 1 // js.special.forin + inline val DEBUGGER = FORIN + 1 // js.special.debugger - final val THROW = DEBUGGER + 1 + inline val THROW = DEBUGGER + 1 - final val UNION_FROM = THROW + 1 // js.|.from - final val UNION_FROM_TYPE_CONSTRUCTOR = UNION_FROM + 1 // js.|.fromTypeConstructor + inline val UNION_FROM = THROW + 1 // js.|.from + inline val UNION_FROM_TYPE_CONSTRUCTOR = UNION_FROM + 1 // js.|.fromTypeConstructor - final val REFLECT_SELECTABLE_SELECTDYN = UNION_FROM_TYPE_CONSTRUCTOR + 1 // scala.reflect.Selectable.selectDynamic - final val REFLECT_SELECTABLE_APPLYDYN = REFLECT_SELECTABLE_SELECTDYN + 1 // scala.reflect.Selectable.applyDynamic + inline val REFLECT_SELECTABLE_SELECTDYN = UNION_FROM_TYPE_CONSTRUCTOR + 1 // scala.reflect.Selectable.selectDynamic + inline val REFLECT_SELECTABLE_APPLYDYN = REFLECT_SELECTABLE_SELECTDYN + 1 // scala.reflect.Selectable.applyDynamic - final val LastJSPrimitiveCode = REFLECT_SELECTABLE_APPLYDYN + inline val LastJSPrimitiveCode = REFLECT_SELECTABLE_APPLYDYN def isJSPrimitive(code: Int): Boolean = code >= FirstJSPrimitiveCode && code <= LastJSPrimitiveCode diff --git a/compiler/src/dotty/tools/dotc/core/Constants.scala b/compiler/src/dotty/tools/dotc/core/Constants.scala index c3f749a4b607..f2e6f6fc489a 100644 --- a/compiler/src/dotty/tools/dotc/core/Constants.scala +++ b/compiler/src/dotty/tools/dotc/core/Constants.scala @@ -9,19 +9,19 @@ import Decorators._ object Constants { - final val NoTag = 0 - final val UnitTag = 1 - final val BooleanTag = 2 - final val ByteTag = 3 - final val ShortTag = 4 - final val CharTag = 5 - final val IntTag = 6 - final val LongTag = 7 - final val FloatTag = 8 - final val DoubleTag = 9 - final val StringTag = 10 - final val NullTag = 11 - final val ClazzTag = 12 + inline val NoTag = 0 + inline val UnitTag = 1 + inline val BooleanTag = 2 + inline val ByteTag = 3 + inline val ShortTag = 4 + inline val CharTag = 5 + inline val IntTag = 6 + inline val LongTag = 7 + inline val FloatTag = 8 + inline val DoubleTag = 9 + inline val StringTag = 10 + inline val NullTag = 11 + inline val ClazzTag = 12 class Constant(val value: Any, val tag: Int) extends printing.Showable with Product1[Any] { import java.lang.Double.doubleToRawLongBits diff --git a/compiler/src/dotty/tools/dotc/core/Decorators.scala b/compiler/src/dotty/tools/dotc/core/Decorators.scala index 49897a7bb275..3ea05af0292a 100644 --- a/compiler/src/dotty/tools/dotc/core/Decorators.scala +++ b/compiler/src/dotty/tools/dotc/core/Decorators.scala @@ -74,7 +74,7 @@ object Decorators { NoSymbol } - final val MaxFilterRecursions = 10 + inline val MaxFilterRecursions = 10 /** Implements filterConserve, zipWithConserve methods * on lists that avoid duplication of list nodes where feasible. diff --git a/compiler/src/dotty/tools/dotc/core/Hashable.scala b/compiler/src/dotty/tools/dotc/core/Hashable.scala index 1a1550183f93..713555bed517 100644 --- a/compiler/src/dotty/tools/dotc/core/Hashable.scala +++ b/compiler/src/dotty/tools/dotc/core/Hashable.scala @@ -19,20 +19,20 @@ object Hashable { /** A hash value indicating that the underlying type is not * cached in uniques. */ - final val NotCached = 0 + inline val NotCached = 0 /** An alternative value returned from `hash` if the * computed hashCode would be `NotCached`. */ - private[core] final val NotCachedAlt = Int.MinValue + private[core] inline val NotCachedAlt = Int.MinValue /** A value that indicates that the hash code is unknown */ - private[core] final val HashUnknown = 1234 + private[core] inline val HashUnknown = 1234 /** An alternative value if computeHash would otherwise yield HashUnknown */ - private[core] final val HashUnknownAlt = 4321 + private[core] inline val HashUnknownAlt = 4321 } trait Hashable { diff --git a/compiler/src/dotty/tools/dotc/core/NameOps.scala b/compiler/src/dotty/tools/dotc/core/NameOps.scala index d0b7e811eb4b..fb35ac0ac91f 100644 --- a/compiler/src/dotty/tools/dotc/core/NameOps.scala +++ b/compiler/src/dotty/tools/dotc/core/NameOps.scala @@ -17,7 +17,7 @@ object NameOps { object compactify { lazy val md5: MessageDigest = MessageDigest.getInstance("MD5") - final val CLASSFILE_NAME_CHAR_LIMIT = 240 + inline val CLASSFILE_NAME_CHAR_LIMIT = 240 /** COMPACTIFY * diff --git a/compiler/src/dotty/tools/dotc/core/NameTags.scala b/compiler/src/dotty/tools/dotc/core/NameTags.scala index 67dfcec73c53..7ee7758a506b 100644 --- a/compiler/src/dotty/tools/dotc/core/NameTags.scala +++ b/compiler/src/dotty/tools/dotc/core/NameTags.scala @@ -5,32 +5,32 @@ import dotty.tools.tasty.TastyFormat /** The possible tags of a NameKind */ object NameTags extends TastyFormat.NameTags { - final val FLATTENED = 5 // A flat name, generated by Flatten + inline val FLATTENED = 5 // A flat name, generated by Flatten - final val TRAITSETTER = 6 // A Scala-2 trait setter, generated by AugmentScala2Traits + inline val TRAITSETTER = 6 // A Scala-2 trait setter, generated by AugmentScala2Traits - final val OUTERSELECT = 13 // A name `_outer`, used by the inliner to indicate an + inline val OUTERSELECT = 13 // A name `_outer`, used by the inliner to indicate an // outer accessor that will be filled in by ExplicitOuter. // indicates the number of hops needed to select the outer field. - final val PROTECTEDACCESSOR = 24 // The name of a protected accesor `protected$` created by ProtectedAccessors. + inline val PROTECTEDACCESSOR = 24 // The name of a protected accesor `protected$` created by ProtectedAccessors. - final val INITIALIZER = 26 // A mixin initializer method + inline val INITIALIZER = 26 // A mixin initializer method - final val FIELD = 29 // Used by Memoize to tag the name of a class member field. + inline val FIELD = 29 // Used by Memoize to tag the name of a class member field. - final val EXTMETH = 30 // Used by ExtensionMethods for the name of an extension method + inline val EXTMETH = 30 // Used by ExtensionMethods for the name of an extension method // implementing a value class method. - final val ADAPTEDCLOSURE = 31 // Used in Erasure to adapt closures over primitive types. + inline val ADAPTEDCLOSURE = 31 // Used in Erasure to adapt closures over primitive types. - final val DIRECT = 32 // Used to define implementations of methods with + inline val DIRECT = 32 // Used to define implementations of methods with // erased context function results that can override some // other method. - final val PARAMACC = 33 // Used for a private parameter alias + inline val PARAMACC = 33 // Used for a private parameter alias - final val SETTER = 34 // A synthesized += suffix. + inline val SETTER = 34 // A synthesized += suffix. def nameTagToString(tag: Int): String = tag match { case UTF8 => "UTF8" diff --git a/compiler/src/dotty/tools/dotc/core/Periods.scala b/compiler/src/dotty/tools/dotc/core/Periods.scala index d5944beedc2a..44d83dcb5278 100644 --- a/compiler/src/dotty/tools/dotc/core/Periods.scala +++ b/compiler/src/dotty/tools/dotc/core/Periods.scala @@ -126,18 +126,18 @@ object Periods { /** An ordinal number for compiler runs. First run has number 1. */ type RunId = Int - final val NoRunId = 0 - final val InitialRunId = 1 - final val RunWidth = java.lang.Integer.SIZE - PhaseWidth * 2 - 1/* sign */ - final val MaxPossibleRunId = (1 << RunWidth) - 1 + inline val NoRunId = 0 + inline val InitialRunId = 1 + inline val RunWidth = java.lang.Integer.SIZE - PhaseWidth * 2 - 1/* sign */ + inline val MaxPossibleRunId = (1 << RunWidth) - 1 /** An ordinal number for phases. First phase has number 1. */ type PhaseId = Int - final val NoPhaseId = 0 - final val FirstPhaseId = 1 + inline val NoPhaseId = 0 + inline val FirstPhaseId = 1 /** The number of bits needed to encode a phase identifier. */ - final val PhaseWidth = 7 - final val PhaseMask = (1 << PhaseWidth) - 1 - final val MaxPossiblePhaseId = PhaseMask + inline val PhaseWidth = 7 + inline val PhaseMask = (1 << PhaseWidth) - 1 + inline val MaxPossiblePhaseId = PhaseMask } diff --git a/compiler/src/dotty/tools/dotc/core/Scopes.scala b/compiler/src/dotty/tools/dotc/core/Scopes.scala index 5dc7ce168c24..1553093a2b87 100644 --- a/compiler/src/dotty/tools/dotc/core/Scopes.scala +++ b/compiler/src/dotty/tools/dotc/core/Scopes.scala @@ -24,19 +24,19 @@ import collection.mutable object Scopes { /** Maximal fill factor of hash table */ - private final val FillFactor = 2.0/3.0 + private inline val FillFactor = 2.0/3.0 /** A hashtable is created once current size exceeds MinHash * FillFactor * The initial hash table has twice that size (i.e 16). * This value must be a power of two, so that the index of an element can * be computed as element.hashCode & (hashTable.length - 1) */ - final val MinHashedScopeSize = 8 + inline val MinHashedScopeSize = 8 /** The maximal permissible number of recursions when creating * a hashtable */ - private final val MaxRecursions = 1000 + private inline val MaxRecursions = 1000 /** A function that optionally produces synthesized symbols with * the given name in the given context. Returns `NoSymbol` if the diff --git a/compiler/src/dotty/tools/dotc/core/StdNames.scala b/compiler/src/dotty/tools/dotc/core/StdNames.scala index 2e0b229ca42c..349f80d11d8a 100644 --- a/compiler/src/dotty/tools/dotc/core/StdNames.scala +++ b/compiler/src/dotty/tools/dotc/core/StdNames.scala @@ -13,33 +13,33 @@ object StdNames { /** Base strings from which synthetic names are derived. */ object str { - final val SETTER_SUFFIX = "_=" - final val EXPAND_SEPARATOR = "$$" - final val TRAIT_SETTER_SEPARATOR = "$_setter_$" - final val SUPER_PREFIX = "super$" - final val INITIALIZER_PREFIX = "initial$" - final val AVOID_CLASH_SUFFIX = "$_avoid_name_clash_$" - final val MODULE_SUFFIX = "$" - final val TOPLEVEL_SUFFIX = "$package" - final val NAME_JOIN = "$" - final val DEFAULT_GETTER = "$default$" - final val LOCALDUMMY_PREFIX = "]""", """\$""") } diff --git a/compiler/src/dotty/tools/dotc/core/classfile/ClassfileConstants.scala b/compiler/src/dotty/tools/dotc/core/classfile/ClassfileConstants.scala index 93603e8a9d37..3b05ee351b86 100644 --- a/compiler/src/dotty/tools/dotc/core/classfile/ClassfileConstants.scala +++ b/compiler/src/dotty/tools/dotc/core/classfile/ClassfileConstants.scala @@ -6,11 +6,11 @@ import scala.annotation.switch object ClassfileConstants { - final val JAVA_MAGIC = 0xCAFEBABE - final val JAVA_MAJOR_VERSION = 45 - final val JAVA_MINOR_VERSION = 3 + inline val JAVA_MAGIC = 0xCAFEBABE + inline val JAVA_MAJOR_VERSION = 45 + inline val JAVA_MINOR_VERSION = 3 - final val JAVA8_MAJOR_VERSION = 52 + inline val JAVA8_MAJOR_VERSION = 52 /** (see http://java.sun.com/docs/books/jvms/second_edition/jvms-clarify.html) * @@ -38,298 +38,298 @@ object ClassfileConstants { * https://groups.google.com/forum/?hl=en#!topic/jvm-languages/jVhzvq8-ZIk * */ // Class Field Method - final val JAVA_ACC_PUBLIC = 0x0001 // X X X - final val JAVA_ACC_PRIVATE = 0x0002 // X X - final val JAVA_ACC_PROTECTED = 0x0004 // X X - final val JAVA_ACC_STATIC = 0x0008 // X X - final val JAVA_ACC_FINAL = 0x0010 // X X X - final val JAVA_ACC_SUPER = 0x0020 // X - final val JAVA_ACC_SYNCHRONIZED = 0x0020 // X - final val JAVA_ACC_VOLATILE = 0x0040 // X - final val JAVA_ACC_BRIDGE = 0x0040 // X - final val JAVA_ACC_TRANSIENT = 0x0080 // X - final val JAVA_ACC_VARARGS = 0x0080 // X - final val JAVA_ACC_NATIVE = 0x0100 // X - final val JAVA_ACC_INTERFACE = 0x0200 // X - final val JAVA_ACC_ABSTRACT = 0x0400 // X X - final val JAVA_ACC_STRICT = 0x0800 // X - final val JAVA_ACC_SYNTHETIC = 0x1000 // X X X - final val JAVA_ACC_ANNOTATION = 0x2000 // X - final val JAVA_ACC_ENUM = 0x4000 // X X + inline val JAVA_ACC_PUBLIC = 0x0001 // X X X + inline val JAVA_ACC_PRIVATE = 0x0002 // X X + inline val JAVA_ACC_PROTECTED = 0x0004 // X X + inline val JAVA_ACC_STATIC = 0x0008 // X X + inline val JAVA_ACC_FINAL = 0x0010 // X X X + inline val JAVA_ACC_SUPER = 0x0020 // X + inline val JAVA_ACC_SYNCHRONIZED = 0x0020 // X + inline val JAVA_ACC_VOLATILE = 0x0040 // X + inline val JAVA_ACC_BRIDGE = 0x0040 // X + inline val JAVA_ACC_TRANSIENT = 0x0080 // X + inline val JAVA_ACC_VARARGS = 0x0080 // X + inline val JAVA_ACC_NATIVE = 0x0100 // X + inline val JAVA_ACC_INTERFACE = 0x0200 // X + inline val JAVA_ACC_ABSTRACT = 0x0400 // X X + inline val JAVA_ACC_STRICT = 0x0800 // X + inline val JAVA_ACC_SYNTHETIC = 0x1000 // X X X + inline val JAVA_ACC_ANNOTATION = 0x2000 // X + inline val JAVA_ACC_ENUM = 0x4000 // X X // tags describing the type of a literal in the constant pool - final val CONSTANT_UTF8 = 1 - final val CONSTANT_UNICODE = 2 - final val CONSTANT_INTEGER = 3 - final val CONSTANT_FLOAT = 4 - final val CONSTANT_LONG = 5 - final val CONSTANT_DOUBLE = 6 - final val CONSTANT_CLASS = 7 - final val CONSTANT_STRING = 8 - final val CONSTANT_FIELDREF = 9 - final val CONSTANT_METHODREF = 10 - final val CONSTANT_INTFMETHODREF = 11 - final val CONSTANT_NAMEANDTYPE = 12 - - final val CONSTANT_METHODHANDLE = 15 - final val CONSTANT_METHODTYPE = 16 - final val CONSTANT_INVOKEDYNAMIC = 18 + inline val CONSTANT_UTF8 = 1 + inline val CONSTANT_UNICODE = 2 + inline val CONSTANT_INTEGER = 3 + inline val CONSTANT_FLOAT = 4 + inline val CONSTANT_LONG = 5 + inline val CONSTANT_DOUBLE = 6 + inline val CONSTANT_CLASS = 7 + inline val CONSTANT_STRING = 8 + inline val CONSTANT_FIELDREF = 9 + inline val CONSTANT_METHODREF = 10 + inline val CONSTANT_INTFMETHODREF = 11 + inline val CONSTANT_NAMEANDTYPE = 12 + + inline val CONSTANT_METHODHANDLE = 15 + inline val CONSTANT_METHODTYPE = 16 + inline val CONSTANT_INVOKEDYNAMIC = 18 // tags describing the type of a literal in attribute values - final val BYTE_TAG = 'B' - final val CHAR_TAG = 'C' - final val DOUBLE_TAG = 'D' - final val FLOAT_TAG = 'F' - final val INT_TAG = 'I' - final val LONG_TAG = 'J' - final val SHORT_TAG = 'S' - final val BOOL_TAG = 'Z' - final val STRING_TAG = 's' - final val ENUM_TAG = 'e' - final val CLASS_TAG = 'c' - final val ARRAY_TAG = '[' - final val VOID_TAG = 'V' - final val TVAR_TAG = 'T' - final val OBJECT_TAG = 'L' - final val ANNOTATION_TAG = '@' - final val SCALA_NOTHING = "scala.runtime.Nothing$" - final val SCALA_NULL = "scala.runtime.Null$" + inline val BYTE_TAG = 'B' + inline val CHAR_TAG = 'C' + inline val DOUBLE_TAG = 'D' + inline val FLOAT_TAG = 'F' + inline val INT_TAG = 'I' + inline val LONG_TAG = 'J' + inline val SHORT_TAG = 'S' + inline val BOOL_TAG = 'Z' + inline val STRING_TAG = 's' + inline val ENUM_TAG = 'e' + inline val CLASS_TAG = 'c' + inline val ARRAY_TAG = '[' + inline val VOID_TAG = 'V' + inline val TVAR_TAG = 'T' + inline val OBJECT_TAG = 'L' + inline val ANNOTATION_TAG = '@' + inline val SCALA_NOTHING = "scala.runtime.Nothing$" + inline val SCALA_NULL = "scala.runtime.Null$" // tags describing the type of newarray - final val T_BOOLEAN = 4 - final val T_CHAR = 5 - final val T_FLOAT = 6 - final val T_DOUBLE = 7 - final val T_BYTE = 8 - final val T_SHORT = 9 - final val T_INT = 10 - final val T_LONG = 11 + inline val T_BOOLEAN = 4 + inline val T_CHAR = 5 + inline val T_FLOAT = 6 + inline val T_DOUBLE = 7 + inline val T_BYTE = 8 + inline val T_SHORT = 9 + inline val T_INT = 10 + inline val T_LONG = 11 // JVM mnemonics - final val nop = 0x00 - final val aconst_null = 0x01 - final val iconst_m1 = 0x02 - - final val iconst_0 = 0x03 - final val iconst_1 = 0x04 - final val iconst_2 = 0x05 - final val iconst_3 = 0x06 - final val iconst_4 = 0x07 - final val iconst_5 = 0x08 - - final val lconst_0 = 0x09 - final val lconst_1 = 0x0a - final val fconst_0 = 0x0b - final val fconst_1 = 0x0c - final val fconst_2 = 0x0d - final val dconst_0 = 0x0e - final val dconst_1 = 0x0f - - final val bipush = 0x10 - final val sipush = 0x11 - final val ldc = 0x12 - final val ldc_w = 0x13 - final val ldc2_w = 0x14 - - final val iload = 0x15 - final val lload = 0x16 - final val fload = 0x17 - final val dload = 0x18 - final val aload = 0x19 - - final val iload_0 = 0x1a - final val iload_1 = 0x1b - final val iload_2 = 0x1c - final val iload_3 = 0x1d - final val lload_0 = 0x1e - final val lload_1 = 0x1f - final val lload_2 = 0x20 - final val lload_3 = 0x21 - final val fload_0 = 0x22 - final val fload_1 = 0x23 - final val fload_2 = 0x24 - final val fload_3 = 0x25 - final val dload_0 = 0x26 - final val dload_1 = 0x27 - final val dload_2 = 0x28 - final val dload_3 = 0x29 - final val aload_0 = 0x2a - final val aload_1 = 0x2b - final val aload_2 = 0x2c - final val aload_3 = 0x2d - final val iaload = 0x2e - final val laload = 0x2f - final val faload = 0x30 - final val daload = 0x31 - final val aaload = 0x32 - final val baload = 0x33 - final val caload = 0x34 - final val saload = 0x35 - - final val istore = 0x36 - final val lstore = 0x37 - final val fstore = 0x38 - final val dstore = 0x39 - final val astore = 0x3a - final val istore_0 = 0x3b - final val istore_1 = 0x3c - final val istore_2 = 0x3d - final val istore_3 = 0x3e - final val lstore_0 = 0x3f - final val lstore_1 = 0x40 - final val lstore_2 = 0x41 - final val lstore_3 = 0x42 - final val fstore_0 = 0x43 - final val fstore_1 = 0x44 - final val fstore_2 = 0x45 - final val fstore_3 = 0x46 - final val dstore_0 = 0x47 - final val dstore_1 = 0x48 - final val dstore_2 = 0x49 - final val dstore_3 = 0x4a - final val astore_0 = 0x4b - final val astore_1 = 0x4c - final val astore_2 = 0x4d - final val astore_3 = 0x4e - final val iastore = 0x4f - final val lastore = 0x50 - final val fastore = 0x51 - final val dastore = 0x52 - final val aastore = 0x53 - final val bastore = 0x54 - final val castore = 0x55 - final val sastore = 0x56 - - final val pop = 0x57 - final val pop2 = 0x58 - final val dup = 0x59 - final val dup_x1 = 0x5a - final val dup_x2 = 0x5b - final val dup2 = 0x5c - final val dup2_x1 = 0x5d - final val dup2_x2 = 0x5e - final val swap = 0x5f - - final val iadd = 0x60 - final val ladd = 0x61 - final val fadd = 0x62 - final val dadd = 0x63 - final val isub = 0x64 - final val lsub = 0x65 - final val fsub = 0x66 - final val dsub = 0x67 - final val imul = 0x68 - final val lmul = 0x69 - final val fmul = 0x6a - final val dmul = 0x6b - final val idiv = 0x6c - final val ldiv = 0x6d - final val fdiv = 0x6e - final val ddiv = 0x6f - final val irem = 0x70 - final val lrem = 0x71 - final val frem = 0x72 - final val drem = 0x73 - - final val ineg = 0x74 - final val lneg = 0x75 - final val fneg = 0x76 - final val dneg = 0x77 - - final val ishl = 0x78 - final val lshl = 0x79 - final val ishr = 0x7a - final val lshr = 0x7b - final val iushr = 0x7c - final val lushr = 0x7d - final val iand = 0x7e - final val land = 0x7f - final val ior = 0x80 - final val lor = 0x81 - final val ixor = 0x82 - final val lxor = 0x83 - final val iinc = 0x84 - - final val i2l = 0x85 - final val i2f = 0x86 - final val i2d = 0x87 - final val l2i = 0x88 - final val l2f = 0x89 - final val l2d = 0x8a - final val f2i = 0x8b - final val f2l = 0x8c - final val f2d = 0x8d - final val d2i = 0x8e - final val d2l = 0x8f - final val d2f = 0x90 - final val i2b = 0x91 - final val i2c = 0x92 - final val i2s = 0x93 - - final val lcmp = 0x94 - final val fcmpl = 0x95 - final val fcmpg = 0x96 - final val dcmpl = 0x97 - final val dcmpg = 0x98 - - final val ifeq = 0x99 - final val ifne = 0x9a - final val iflt = 0x9b - final val ifge = 0x9c - final val ifgt = 0x9d - final val ifle = 0x9e - final val if_icmpeq = 0x9f - final val if_icmpne = 0xa0 - final val if_icmplt = 0xa1 - final val if_icmpge = 0xa2 - final val if_icmpgt = 0xa3 - final val if_icmple = 0xa4 - final val if_acmpeq = 0xa5 - final val if_acmpne = 0xa6 - final val goto = 0xa7 - final val jsr = 0xa8 - final val ret = 0xa9 - final val tableswitch = 0xaa - final val lookupswitch = 0xab - final val ireturn = 0xac - final val lreturn = 0xad - final val freturn = 0xae - final val dreturn = 0xaf - final val areturn = 0xb0 - final val return_ = 0xb1 - - final val getstatic = 0xb2 - final val putstatic = 0xb3 - final val getfield = 0xb4 - final val putfield = 0xb5 - - final val invokevirtual = 0xb6 - final val invokespecial = 0xb7 - final val invokestatic = 0xb8 - final val invokeinterface = 0xb9 - final val xxxunusedxxxx = 0xba - - final val new_ = 0xbb - final val newarray = 0xbc - final val anewarray = 0xbd - final val arraylength = 0xbe - final val athrow = 0xbf - final val checkcast = 0xc0 - final val instanceof = 0xc1 - final val monitorenter = 0xc2 - final val monitorexit = 0xc3 - final val wide = 0xc4 - final val multianewarray = 0xc5 - final val ifnull = 0xc6 - final val ifnonnull = 0xc7 - final val goto_w = 0xc8 - final val jsr_w = 0xc9 + inline val nop = 0x00 + inline val aconst_null = 0x01 + inline val iconst_m1 = 0x02 + + inline val iconst_0 = 0x03 + inline val iconst_1 = 0x04 + inline val iconst_2 = 0x05 + inline val iconst_3 = 0x06 + inline val iconst_4 = 0x07 + inline val iconst_5 = 0x08 + + inline val lconst_0 = 0x09 + inline val lconst_1 = 0x0a + inline val fconst_0 = 0x0b + inline val fconst_1 = 0x0c + inline val fconst_2 = 0x0d + inline val dconst_0 = 0x0e + inline val dconst_1 = 0x0f + + inline val bipush = 0x10 + inline val sipush = 0x11 + inline val ldc = 0x12 + inline val ldc_w = 0x13 + inline val ldc2_w = 0x14 + + inline val iload = 0x15 + inline val lload = 0x16 + inline val fload = 0x17 + inline val dload = 0x18 + inline val aload = 0x19 + + inline val iload_0 = 0x1a + inline val iload_1 = 0x1b + inline val iload_2 = 0x1c + inline val iload_3 = 0x1d + inline val lload_0 = 0x1e + inline val lload_1 = 0x1f + inline val lload_2 = 0x20 + inline val lload_3 = 0x21 + inline val fload_0 = 0x22 + inline val fload_1 = 0x23 + inline val fload_2 = 0x24 + inline val fload_3 = 0x25 + inline val dload_0 = 0x26 + inline val dload_1 = 0x27 + inline val dload_2 = 0x28 + inline val dload_3 = 0x29 + inline val aload_0 = 0x2a + inline val aload_1 = 0x2b + inline val aload_2 = 0x2c + inline val aload_3 = 0x2d + inline val iaload = 0x2e + inline val laload = 0x2f + inline val faload = 0x30 + inline val daload = 0x31 + inline val aaload = 0x32 + inline val baload = 0x33 + inline val caload = 0x34 + inline val saload = 0x35 + + inline val istore = 0x36 + inline val lstore = 0x37 + inline val fstore = 0x38 + inline val dstore = 0x39 + inline val astore = 0x3a + inline val istore_0 = 0x3b + inline val istore_1 = 0x3c + inline val istore_2 = 0x3d + inline val istore_3 = 0x3e + inline val lstore_0 = 0x3f + inline val lstore_1 = 0x40 + inline val lstore_2 = 0x41 + inline val lstore_3 = 0x42 + inline val fstore_0 = 0x43 + inline val fstore_1 = 0x44 + inline val fstore_2 = 0x45 + inline val fstore_3 = 0x46 + inline val dstore_0 = 0x47 + inline val dstore_1 = 0x48 + inline val dstore_2 = 0x49 + inline val dstore_3 = 0x4a + inline val astore_0 = 0x4b + inline val astore_1 = 0x4c + inline val astore_2 = 0x4d + inline val astore_3 = 0x4e + inline val iastore = 0x4f + inline val lastore = 0x50 + inline val fastore = 0x51 + inline val dastore = 0x52 + inline val aastore = 0x53 + inline val bastore = 0x54 + inline val castore = 0x55 + inline val sastore = 0x56 + + inline val pop = 0x57 + inline val pop2 = 0x58 + inline val dup = 0x59 + inline val dup_x1 = 0x5a + inline val dup_x2 = 0x5b + inline val dup2 = 0x5c + inline val dup2_x1 = 0x5d + inline val dup2_x2 = 0x5e + inline val swap = 0x5f + + inline val iadd = 0x60 + inline val ladd = 0x61 + inline val fadd = 0x62 + inline val dadd = 0x63 + inline val isub = 0x64 + inline val lsub = 0x65 + inline val fsub = 0x66 + inline val dsub = 0x67 + inline val imul = 0x68 + inline val lmul = 0x69 + inline val fmul = 0x6a + inline val dmul = 0x6b + inline val idiv = 0x6c + inline val ldiv = 0x6d + inline val fdiv = 0x6e + inline val ddiv = 0x6f + inline val irem = 0x70 + inline val lrem = 0x71 + inline val frem = 0x72 + inline val drem = 0x73 + + inline val ineg = 0x74 + inline val lneg = 0x75 + inline val fneg = 0x76 + inline val dneg = 0x77 + + inline val ishl = 0x78 + inline val lshl = 0x79 + inline val ishr = 0x7a + inline val lshr = 0x7b + inline val iushr = 0x7c + inline val lushr = 0x7d + inline val iand = 0x7e + inline val land = 0x7f + inline val ior = 0x80 + inline val lor = 0x81 + inline val ixor = 0x82 + inline val lxor = 0x83 + inline val iinc = 0x84 + + inline val i2l = 0x85 + inline val i2f = 0x86 + inline val i2d = 0x87 + inline val l2i = 0x88 + inline val l2f = 0x89 + inline val l2d = 0x8a + inline val f2i = 0x8b + inline val f2l = 0x8c + inline val f2d = 0x8d + inline val d2i = 0x8e + inline val d2l = 0x8f + inline val d2f = 0x90 + inline val i2b = 0x91 + inline val i2c = 0x92 + inline val i2s = 0x93 + + inline val lcmp = 0x94 + inline val fcmpl = 0x95 + inline val fcmpg = 0x96 + inline val dcmpl = 0x97 + inline val dcmpg = 0x98 + + inline val ifeq = 0x99 + inline val ifne = 0x9a + inline val iflt = 0x9b + inline val ifge = 0x9c + inline val ifgt = 0x9d + inline val ifle = 0x9e + inline val if_icmpeq = 0x9f + inline val if_icmpne = 0xa0 + inline val if_icmplt = 0xa1 + inline val if_icmpge = 0xa2 + inline val if_icmpgt = 0xa3 + inline val if_icmple = 0xa4 + inline val if_acmpeq = 0xa5 + inline val if_acmpne = 0xa6 + inline val goto = 0xa7 + inline val jsr = 0xa8 + inline val ret = 0xa9 + inline val tableswitch = 0xaa + inline val lookupswitch = 0xab + inline val ireturn = 0xac + inline val lreturn = 0xad + inline val freturn = 0xae + inline val dreturn = 0xaf + inline val areturn = 0xb0 + inline val return_ = 0xb1 + + inline val getstatic = 0xb2 + inline val putstatic = 0xb3 + inline val getfield = 0xb4 + inline val putfield = 0xb5 + + inline val invokevirtual = 0xb6 + inline val invokespecial = 0xb7 + inline val invokestatic = 0xb8 + inline val invokeinterface = 0xb9 + inline val xxxunusedxxxx = 0xba + + inline val new_ = 0xbb + inline val newarray = 0xbc + inline val anewarray = 0xbd + inline val arraylength = 0xbe + inline val athrow = 0xbf + inline val checkcast = 0xc0 + inline val instanceof = 0xc1 + inline val monitorenter = 0xc2 + inline val monitorexit = 0xc3 + inline val wide = 0xc4 + inline val multianewarray = 0xc5 + inline val ifnull = 0xc6 + inline val ifnonnull = 0xc7 + inline val goto_w = 0xc8 + inline val jsr_w = 0xc9 // reserved opcodes - final val breakpoint = 0xca - final val impdep1 = 0xfe - final val impdep2 = 0xff + inline val breakpoint = 0xca + inline val impdep1 = 0xfe + inline val impdep2 = 0xff import Flags._ abstract class FlagTranslation { diff --git a/compiler/src/dotty/tools/dotc/core/tasty/TreeBuffer.scala b/compiler/src/dotty/tools/dotc/core/tasty/TreeBuffer.scala index 268b02b4389f..a3dedaaec685 100644 --- a/compiler/src/dotty/tools/dotc/core/tasty/TreeBuffer.scala +++ b/compiler/src/dotty/tools/dotc/core/tasty/TreeBuffer.scala @@ -13,7 +13,7 @@ import ast.untpd.Tree class TreeBuffer extends TastyBuffer(50000) { - private final val ItemsOverOffsets = 2 + private inline val ItemsOverOffsets = 2 private val initialOffsetSize = bytes.length / (AddrWidth * ItemsOverOffsets) private var offsets = new Array[Int](initialOffsetSize) private var isRelative = new Array[Boolean](initialOffsetSize) diff --git a/compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala b/compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala index e4a5c0ae8c6d..af186e825591 100644 --- a/compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala +++ b/compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala @@ -1522,9 +1522,9 @@ object TreeUnpickler { /** An enumeration indicating which subtrees should be added to an OwnerTree. */ type MemberDefMode = Int - final val MemberDefsOnly = 0 // add only member defs; skip other statements - final val NoMemberDefs = 1 // add only statements that are not member defs - final val AllDefs = 2 // add everything + inline val MemberDefsOnly = 0 // add only member defs; skip other statements + inline val NoMemberDefs = 1 // add only statements that are not member defs + inline val AllDefs = 2 // add everything class TreeWithoutOwner extends Exception } diff --git a/compiler/src/dotty/tools/dotc/core/unpickleScala2/PickleBuffer.scala b/compiler/src/dotty/tools/dotc/core/unpickleScala2/PickleBuffer.scala index fc06ce4da8a3..2aeb1bdeefcc 100644 --- a/compiler/src/dotty/tools/dotc/core/unpickleScala2/PickleBuffer.scala +++ b/compiler/src/dotty/tools/dotc/core/unpickleScala2/PickleBuffer.scala @@ -189,9 +189,9 @@ class PickleBuffer(data: Array[Byte], from: Int, to: Int) { object PickleBuffer { - private final val ScalaFlagEnd = 48 - private final val ChunkBits = 8 - private final val ChunkSize = 1 << ChunkBits + private inline val ScalaFlagEnd = 48 + private inline val ChunkBits = 8 + private inline val ChunkSize = 1 << ChunkBits private type FlagMap = Array[Array[Long]] private val (scalaTermFlagMap, scalaTypeFlagMap) = { diff --git a/compiler/src/dotty/tools/dotc/core/unpickleScala2/PickleFormat.scala b/compiler/src/dotty/tools/dotc/core/unpickleScala2/PickleFormat.scala index a9a64a9bb7ee..f135de7e43e9 100644 --- a/compiler/src/dotty/tools/dotc/core/unpickleScala2/PickleFormat.scala +++ b/compiler/src/dotty/tools/dotc/core/unpickleScala2/PickleFormat.scala @@ -119,109 +119,109 @@ object PickleFormat { val MajorVersion: Int = 5 val MinorVersion: Int = 2 - final val TERMname = 1 - final val TYPEname = 2 - final val NONEsym = 3 - final val TYPEsym = 4 - final val ALIASsym = 5 - final val CLASSsym = 6 - final val MODULEsym = 7 - final val VALsym = 8 - final val EXTref = 9 - final val EXTMODCLASSref = 10 - final val NOtpe = 11 - final val NOPREFIXtpe = 12 - final val THIStpe = 13 - final val SINGLEtpe = 14 - final val CONSTANTtpe = 15 - final val TYPEREFtpe = 16 - final val TYPEBOUNDStpe = 17 - final val REFINEDtpe = 18 - final val CLASSINFOtpe = 19 - final val METHODtpe = 20 - final val POLYtpe = 21 - final val IMPLICITMETHODtpe = 22 // no longer generated + inline val TERMname = 1 + inline val TYPEname = 2 + inline val NONEsym = 3 + inline val TYPEsym = 4 + inline val ALIASsym = 5 + inline val CLASSsym = 6 + inline val MODULEsym = 7 + inline val VALsym = 8 + inline val EXTref = 9 + inline val EXTMODCLASSref = 10 + inline val NOtpe = 11 + inline val NOPREFIXtpe = 12 + inline val THIStpe = 13 + inline val SINGLEtpe = 14 + inline val CONSTANTtpe = 15 + inline val TYPEREFtpe = 16 + inline val TYPEBOUNDStpe = 17 + inline val REFINEDtpe = 18 + inline val CLASSINFOtpe = 19 + inline val METHODtpe = 20 + inline val POLYtpe = 21 + inline val IMPLICITMETHODtpe = 22 // no longer generated - final val LITERAL = 23 // base line for literals - final val LITERALunit = 24 - final val LITERALboolean = 25 - final val LITERALbyte = 26 - final val LITERALshort = 27 - final val LITERALchar = 28 - final val LITERALint = 29 - final val LITERALlong = 30 - final val LITERALfloat = 31 - final val LITERALdouble = 32 - final val LITERALstring = 33 - final val LITERALnull = 34 - final val LITERALclass = 35 - final val LITERALenum = 36 - final val SYMANNOT = 40 - final val CHILDREN = 41 - final val ANNOTATEDtpe = 42 - final val ANNOTINFO = 43 - final val ANNOTARGARRAY = 44 + inline val LITERAL = 23 // base line for literals + inline val LITERALunit = 24 + inline val LITERALboolean = 25 + inline val LITERALbyte = 26 + inline val LITERALshort = 27 + inline val LITERALchar = 28 + inline val LITERALint = 29 + inline val LITERALlong = 30 + inline val LITERALfloat = 31 + inline val LITERALdouble = 32 + inline val LITERALstring = 33 + inline val LITERALnull = 34 + inline val LITERALclass = 35 + inline val LITERALenum = 36 + inline val SYMANNOT = 40 + inline val CHILDREN = 41 + inline val ANNOTATEDtpe = 42 + inline val ANNOTINFO = 43 + inline val ANNOTARGARRAY = 44 - final val SUPERtpe = 46 - final val DEBRUIJNINDEXtpe = 47 // no longer generated - final val EXISTENTIALtpe = 48 + inline val SUPERtpe = 46 + inline val DEBRUIJNINDEXtpe = 47 // no longer generated + inline val EXISTENTIALtpe = 48 - final val TREE = 49 // prefix code that means a tree is coming - final val EMPTYtree = 1 - final val PACKAGEtree = 2 - final val CLASStree = 3 - final val MODULEtree = 4 - final val VALDEFtree = 5 - final val DEFDEFtree = 6 - final val TYPEDEFtree = 7 - final val LABELtree = 8 - final val IMPORTtree = 9 - final val DOCDEFtree = 11 - final val TEMPLATEtree = 12 - final val BLOCKtree = 13 - final val CASEtree = 14 + inline val TREE = 49 // prefix code that means a tree is coming + inline val EMPTYtree = 1 + inline val PACKAGEtree = 2 + inline val CLASStree = 3 + inline val MODULEtree = 4 + inline val VALDEFtree = 5 + inline val DEFDEFtree = 6 + inline val TYPEDEFtree = 7 + inline val LABELtree = 8 + inline val IMPORTtree = 9 + inline val DOCDEFtree = 11 + inline val TEMPLATEtree = 12 + inline val BLOCKtree = 13 + inline val CASEtree = 14 // This node type has been removed. - // final val SEQUENCEtree = 15 - final val ALTERNATIVEtree = 16 - final val STARtree = 17 - final val BINDtree = 18 - final val UNAPPLYtree = 19 - final val ARRAYVALUEtree = 20 - final val FUNCTIONtree = 21 - final val ASSIGNtree = 22 - final val IFtree = 23 - final val MATCHtree = 24 - final val RETURNtree = 25 - final val TREtree = 26 - final val THROWtree = 27 - final val NEWtree = 28 - final val TYPEDtree = 29 - final val TYPEAPPLYtree = 30 - final val APPLYtree = 31 - final val APPLYDYNAMICtree = 32 - final val SUPERtree = 33 - final val THIStree = 34 - final val SELECTtree = 35 - final val IDENTtree = 36 - final val LITERALtree = 37 - final val TYPEtree = 38 - final val ANNOTATEDtree = 39 - final val SINGLETONTYPEtree = 40 - final val SELECTFROMTYPEtree = 41 - final val COMPOUNDTYPEtree = 42 - final val APPLIEDTYPEtree = 43 - final val TYPEBOUNDStree = 44 - final val EXISTENTIALTYPEtree = 45 + // inline val SEQUENCEtree = 15 + inline val ALTERNATIVEtree = 16 + inline val STARtree = 17 + inline val BINDtree = 18 + inline val UNAPPLYtree = 19 + inline val ARRAYVALUEtree = 20 + inline val FUNCTIONtree = 21 + inline val ASSIGNtree = 22 + inline val IFtree = 23 + inline val MATCHtree = 24 + inline val RETURNtree = 25 + inline val TREtree = 26 + inline val THROWtree = 27 + inline val NEWtree = 28 + inline val TYPEDtree = 29 + inline val TYPEAPPLYtree = 30 + inline val APPLYtree = 31 + inline val APPLYDYNAMICtree = 32 + inline val SUPERtree = 33 + inline val THIStree = 34 + inline val SELECTtree = 35 + inline val IDENTtree = 36 + inline val LITERALtree = 37 + inline val TYPEtree = 38 + inline val ANNOTATEDtree = 39 + inline val SINGLETONTYPEtree = 40 + inline val SELECTFROMTYPEtree = 41 + inline val COMPOUNDTYPEtree = 42 + inline val APPLIEDTYPEtree = 43 + inline val TYPEBOUNDStree = 44 + inline val EXISTENTIALTYPEtree = 45 - final val MODIFIERS = 50 + inline val MODIFIERS = 50 - final val firstSymTag = NONEsym - final val lastSymTag = VALsym - final val lastExtSymTag = EXTMODCLASSref + inline val firstSymTag = NONEsym + inline val lastSymTag = VALsym + inline val lastExtSymTag = EXTMODCLASSref } //The following two are no longer accurate, because ANNOTATEDtpe, //SUPERtpe, ... are not in the same range as the other types - //final val firstTypeTag = NOtpe - //final val lastTypeTag = POLYtpe + //inline val firstTypeTag = NOtpe + //inline val lastTypeTag = POLYtpe diff --git a/compiler/src/dotty/tools/dotc/core/unpickleScala2/Scala2Flags.scala b/compiler/src/dotty/tools/dotc/core/unpickleScala2/Scala2Flags.scala index 5749706270c9..6cf08b3384d9 100644 --- a/compiler/src/dotty/tools/dotc/core/unpickleScala2/Scala2Flags.scala +++ b/compiler/src/dotty/tools/dotc/core/unpickleScala2/Scala2Flags.scala @@ -12,96 +12,96 @@ package unpickleScala2 /** Scala2 flags, adapted from https://github.com/scala/scala/blob/2.11.x/src/reflect/scala/reflect/internal/Flags.scala */ object Scala2Flags { - final val IMPLICIT = 1 << 9 - final val FINAL = 1 << 5 // May not be overridden. Note that java final implies much more than scala final. - final val PRIVATE = 1 << 2 - final val PROTECTED = 1 << 0 + inline val IMPLICIT = 1 << 9 + inline val FINAL = 1 << 5 // May not be overridden. Note that java final implies much more than scala final. + inline val PRIVATE = 1 << 2 + inline val PROTECTED = 1 << 0 - final val SEALED = 1 << 10 - final val OVERRIDE = 1 << 1 - final val CASE = 1 << 11 - final val ABSTRACT = 1 << 3 // abstract class, or used in conjunction with abstract override. + inline val SEALED = 1 << 10 + inline val OVERRIDE = 1 << 1 + inline val CASE = 1 << 11 + inline val ABSTRACT = 1 << 3 // abstract class, or used in conjunction with abstract override. // Note difference to DEFERRED! - final val DEFERRED = 1 << 4 // was `abstract' for members | trait is virtual - final val INTERFACE = 1 << 7 // symbol is an interface (i.e. a trait which defines only abstract methods) - final val MUTABLE = 1 << 12 // symbol is a mutable variable. - final val PARAM = 1 << 13 // symbol is a (value or type) parameter to a method - final val MACRO = 1 << 15 // symbol is a macro definition + inline val DEFERRED = 1 << 4 // was `abstract' for members | trait is virtual + inline val INTERFACE = 1 << 7 // symbol is an interface (i.e. a trait which defines only abstract methods) + inline val MUTABLE = 1 << 12 // symbol is a mutable variable. + inline val PARAM = 1 << 13 // symbol is a (value or type) parameter to a method + inline val MACRO = 1 << 15 // symbol is a macro definition - final val COVARIANT = 1 << 16 // symbol is a covariant type variable - final val BYNAMEPARAM = 1 << 16 // parameter is by name - final val CONTRAVARIANT = 1 << 17 // symbol is a contravariant type variable - final val ABSOVERRIDE = 1 << 18 // combination of abstract & override - final val LOCAL = 1 << 19 // symbol is local to current class (i.e. private[this] or protected + inline val COVARIANT = 1 << 16 // symbol is a covariant type variable + inline val BYNAMEPARAM = 1 << 16 // parameter is by name + inline val CONTRAVARIANT = 1 << 17 // symbol is a contravariant type variable + inline val ABSOVERRIDE = 1 << 18 // combination of abstract & override + inline val LOCAL = 1 << 19 // symbol is local to current class (i.e. private[this] or protected // pre: PRIVATE or PROTECTED are also set - final val JAVA = 1 << 20 // symbol was defined by a Java class - final val STATIC = 1 << 23 // static field, method or class - final val CASEACCESSOR = 1 << 24 // symbol is a case parameter (or its accessor, or a GADT skolem) - final val TRAIT = 1 << 25 // symbol is a trait - final val DEFAULTPARAM = 1 << 25 // the parameter has a default value - final val PARAMACCESSOR = 1 << 29 // for field definitions generated for primary constructor + inline val JAVA = 1 << 20 // symbol was defined by a Java class + inline val STATIC = 1 << 23 // static field, method or class + inline val CASEACCESSOR = 1 << 24 // symbol is a case parameter (or its accessor, or a GADT skolem) + inline val TRAIT = 1 << 25 // symbol is a trait + inline val DEFAULTPARAM = 1 << 25 // the parameter has a default value + inline val PARAMACCESSOR = 1 << 29 // for field definitions generated for primary constructor // parameters (no matter if it's a 'val' parameter or not) // for parameters of a primary constructor ('val' or not) // for the accessor methods generated for 'val' or 'var' parameters - final val LAZY = 1L << 31 // symbol is a lazy val. can't have MUTABLE unless transformed by typer - final val PRESUPER = 1L << 37 // value is evaluated before super call - final val DEFAULTINIT = 1L << 41 // symbol is initialized to the default value: used by -Xcheckinit - final val ARTIFACT = 1L << 46 // symbol should be ignored when typechecking; will be marked ACC_SYNTHETIC in bytecode + inline val LAZY = 1L << 31 // symbol is a lazy val. can't have MUTABLE unless transformed by typer + inline val PRESUPER = 1L << 37 // value is evaluated before super call + inline val DEFAULTINIT = 1L << 41 // symbol is initialized to the default value: used by -Xcheckinit + inline val ARTIFACT = 1L << 46 // symbol should be ignored when typechecking; will be marked ACC_SYNTHETIC in bytecode // to see which symbols are marked as ARTIFACT, see scaladocs for FlagValues.ARTIFACT - final val DEFAULTMETHOD = 1L << 47 // symbol is a java default method - final val ENUM = 1L << 48 // symbol is an enum + inline val DEFAULTMETHOD = 1L << 47 // symbol is a java default method + inline val ENUM = 1L << 48 // symbol is an enum - final val PrivateLocal = PRIVATE | LOCAL - final val ProtectedLocal = PROTECTED | LOCAL - final val AccessFlags = PRIVATE | PROTECTED | LOCAL + inline val PrivateLocal = PRIVATE | LOCAL + inline val ProtectedLocal = PROTECTED | LOCAL + inline val AccessFlags = PRIVATE | PROTECTED | LOCAL - final val METHOD = 1 << 6 // a method - final val MODULE = 1 << 8 // symbol is module or class implementing a module - final val PACKAGE = 1 << 14 // symbol is a java package + inline val METHOD = 1 << 6 // a method + inline val MODULE = 1 << 8 // symbol is module or class implementing a module + inline val PACKAGE = 1 << 14 // symbol is a java package - final val CAPTURED = 1 << 16 // variable is accessed from nested function. Set by LambdaLift. - final val LABEL = 1 << 17 // method symbol is a label. Set by TailCall - final val INCONSTRUCTOR = 1 << 17 // class symbol is defined in this/superclass constructor. - final val SYNTHETIC = 1 << 21 // symbol is compiler-generated (compare with ARTIFACT) - final val STABLE = 1 << 22 // functions that are assumed to be stable + inline val CAPTURED = 1 << 16 // variable is accessed from nested function. Set by LambdaLift. + inline val LABEL = 1 << 17 // method symbol is a label. Set by TailCall + inline val INCONSTRUCTOR = 1 << 17 // class symbol is defined in this/superclass constructor. + inline val SYNTHETIC = 1 << 21 // symbol is compiler-generated (compare with ARTIFACT) + inline val STABLE = 1 << 22 // functions that are assumed to be stable // (typically, access methods for valdefs) // or classes that do not contain abstract types. - final val BRIDGE = 1 << 26 // function is a bridge method. Set by Erasure - final val ACCESSOR = 1 << 27 // a value or variable accessor (getter or setter) + inline val BRIDGE = 1 << 26 // function is a bridge method. Set by Erasure + inline val ACCESSOR = 1 << 27 // a value or variable accessor (getter or setter) - final val SUPERACCESSOR = 1 << 28 // a super accessor - final val MODULEVAR = 1 << 30 // for variables: is the variable caching a module value + inline val SUPERACCESSOR = 1 << 28 // a super accessor + inline val MODULEVAR = 1 << 30 // for variables: is the variable caching a module value - final val IS_ERROR = 1L << 32 // symbol is an error symbol - final val OVERLOADED = 1L << 33 // symbol is overloaded - final val LIFTED = 1L << 34 // class has been lifted out to package level + inline val IS_ERROR = 1L << 32 // symbol is an error symbol + inline val OVERLOADED = 1L << 33 // symbol is overloaded + inline val LIFTED = 1L << 34 // class has been lifted out to package level // local value has been lifted out to class level // todo: make LIFTED = latePRIVATE? - final val MIXEDIN = 1L << 35 // term member has been mixed in - final val EXISTENTIAL = 1L << 35 // type is an existential parameter or skolem - final val EXPANDEDNAME = 1L << 36 // name has been expanded with class suffix - final val TRANS_FLAG = 1L << 38 // transient flag guaranteed to be reset after each phase. + inline val MIXEDIN = 1L << 35 // term member has been mixed in + inline val EXISTENTIAL = 1L << 35 // type is an existential parameter or skolem + inline val EXPANDEDNAME = 1L << 36 // name has been expanded with class suffix + inline val TRANS_FLAG = 1L << 38 // transient flag guaranteed to be reset after each phase. - final val LOCKED = 1L << 39 // temporary flag to catch cyclic dependencies - final val SPECIALIZED = 1L << 40 // symbol is a generated specialized member - final val VBRIDGE = 1L << 42 // symbol is a varargs bridge + inline val LOCKED = 1L << 39 // temporary flag to catch cyclic dependencies + inline val SPECIALIZED = 1L << 40 // symbol is a generated specialized member + inline val VBRIDGE = 1L << 42 // symbol is a varargs bridge - final val VARARGS = 1L << 43 // symbol is a Java-style varargs method - final val TRIEDCOOKING = 1L << 44 // `Cooking` has been tried on this symbol + inline val VARARGS = 1L << 43 // symbol is a Java-style varargs method + inline val TRIEDCOOKING = 1L << 44 // `Cooking` has been tried on this symbol // A Java method's type is `cooked` by transforming raw types to existentials - final val SYNCHRONIZED = 1L << 45 // symbol is a method which should be marked ACC_SYNCHRONIZED + inline val SYNCHRONIZED = 1L << 45 // symbol is a method which should be marked ACC_SYNCHRONIZED - final val IMPLICIT_PKL = (1 << 0) - final val FINAL_PKL = (1 << 1) - final val PRIVATE_PKL = (1 << 2) - final val PROTECTED_PKL = (1 << 3) - final val SEALED_PKL = (1 << 4) - final val OVERRIDE_PKL = (1 << 5) - final val CASE_PKL = (1 << 6) - final val ABSTRACT_PKL = (1 << 7) - final val DEFERRED_PKL = (1 << 8) - final val METHOD_PKL = (1 << 9) - final val MODULE_PKL = (1 << 10) - final val INTERFACE_PKL = (1 << 11) + inline val IMPLICIT_PKL = (1 << 0) + inline val FINAL_PKL = (1 << 1) + inline val PRIVATE_PKL = (1 << 2) + inline val PROTECTED_PKL = (1 << 3) + inline val SEALED_PKL = (1 << 4) + inline val OVERRIDE_PKL = (1 << 5) + inline val CASE_PKL = (1 << 6) + inline val ABSTRACT_PKL = (1 << 7) + inline val DEFERRED_PKL = (1 << 8) + inline val METHOD_PKL = (1 << 9) + inline val MODULE_PKL = (1 << 10) + inline val INTERFACE_PKL = (1 << 11) } diff --git a/compiler/src/dotty/tools/dotc/parsing/JavaTokens.scala b/compiler/src/dotty/tools/dotc/parsing/JavaTokens.scala index 5c333f8646e5..3e73b6d95adb 100644 --- a/compiler/src/dotty/tools/dotc/parsing/JavaTokens.scala +++ b/compiler/src/dotty/tools/dotc/parsing/JavaTokens.scala @@ -5,7 +5,7 @@ package parsing import collection.immutable.BitSet object JavaTokens extends TokensCommon { - final val minToken = EMPTY + inline val minToken = EMPTY final def maxToken: Int = DOUBLE final val javaOnlyKeywords: TokenSet = tokenRange(INSTANCEOF, ASSERT) @@ -15,78 +15,78 @@ object JavaTokens extends TokensCommon { final val keywords: BitSet = sharedKeywords | javaOnlyKeywords | primTypes /** keywords */ - final val INSTANCEOF = 101; enter(INSTANCEOF, "instanceof") - final val CONST = 102; enter(CONST, "const") + inline val INSTANCEOF = 101; enter(INSTANCEOF, "instanceof") + inline val CONST = 102; enter(CONST, "const") /** templates */ - final val INTERFACE = 105; enter(INTERFACE, "interface") - final val ENUM = 106; enter(ENUM, "enum") - final val IMPLEMENTS = 107; enter(IMPLEMENTS, "implements") + inline val INTERFACE = 105; enter(INTERFACE, "interface") + inline val ENUM = 106; enter(ENUM, "enum") + inline val IMPLEMENTS = 107; enter(IMPLEMENTS, "implements") /** modifiers */ - final val PUBLIC = 110; enter(PUBLIC, "public") - final val DEFAULT = 111; enter(DEFAULT, "default") - final val STATIC = 112; enter(STATIC, "static") - final val TRANSIENT = 113; enter(TRANSIENT, "transient") - final val VOLATILE = 114; enter(VOLATILE, "volatile") - final val SYNCHRONIZED = 115; enter(SYNCHRONIZED, "synchronized") - final val NATIVE = 116; enter(NATIVE, "native") - final val STRICTFP = 117; enter(STRICTFP, "strictfp") - final val THROWS = 118; enter(THROWS, "throws") + inline val PUBLIC = 110; enter(PUBLIC, "public") + inline val DEFAULT = 111; enter(DEFAULT, "default") + inline val STATIC = 112; enter(STATIC, "static") + inline val TRANSIENT = 113; enter(TRANSIENT, "transient") + inline val VOLATILE = 114; enter(VOLATILE, "volatile") + inline val SYNCHRONIZED = 115; enter(SYNCHRONIZED, "synchronized") + inline val NATIVE = 116; enter(NATIVE, "native") + inline val STRICTFP = 117; enter(STRICTFP, "strictfp") + inline val THROWS = 118; enter(THROWS, "throws") /** control structures */ - final val BREAK = 130; enter(BREAK, "break") - final val CONTINUE = 131; enter(CONTINUE, "continue") - final val GOTO = 132; enter(GOTO, "goto") - final val SWITCH = 133; enter(SWITCH, "switch") - final val ASSERT = 134; enter(ASSERT, "assert") + inline val BREAK = 130; enter(BREAK, "break") + inline val CONTINUE = 131; enter(CONTINUE, "continue") + inline val GOTO = 132; enter(GOTO, "goto") + inline val SWITCH = 133; enter(SWITCH, "switch") + inline val ASSERT = 134; enter(ASSERT, "assert") /** special symbols */ - final val EQEQ = 140 - final val BANGEQ = 141 - final val LT = 142 - final val GT = 143 - final val LTEQ = 144 - final val GTEQ = 145 - final val BANG = 146 - final val QMARK = 147 - final val AMP = 148 - final val BAR = 149 - final val PLUS = 150 - final val MINUS = 151 - final val ASTERISK = 152 - final val SLASH = 153 - final val PERCENT = 154 - final val HAT = 155 - final val LTLT = 156 - final val GTGT = 157 - final val GTGTGT = 158 - final val AMPAMP = 159 - final val BARBAR = 160 - final val PLUSPLUS = 161 - final val MINUSMINUS = 162 - final val TILDE = 163 - final val DOTDOTDOT = 164 - final val AMPEQ = 165 - final val BAREQ = 166 - final val PLUSEQ = 167 - final val MINUSEQ = 168 - final val ASTERISKEQ = 169 - final val SLASHEQ = 170 - final val PERCENTEQ = 171 - final val HATEQ = 172 - final val LTLTEQ = 173 - final val GTGTEQ = 174 - final val GTGTGTEQ = 175 + inline val EQEQ = 140 + inline val BANGEQ = 141 + inline val LT = 142 + inline val GT = 143 + inline val LTEQ = 144 + inline val GTEQ = 145 + inline val BANG = 146 + inline val QMARK = 147 + inline val AMP = 148 + inline val BAR = 149 + inline val PLUS = 150 + inline val MINUS = 151 + inline val ASTERISK = 152 + inline val SLASH = 153 + inline val PERCENT = 154 + inline val HAT = 155 + inline val LTLT = 156 + inline val GTGT = 157 + inline val GTGTGT = 158 + inline val AMPAMP = 159 + inline val BARBAR = 160 + inline val PLUSPLUS = 161 + inline val MINUSMINUS = 162 + inline val TILDE = 163 + inline val DOTDOTDOT = 164 + inline val AMPEQ = 165 + inline val BAREQ = 166 + inline val PLUSEQ = 167 + inline val MINUSEQ = 168 + inline val ASTERISKEQ = 169 + inline val SLASHEQ = 170 + inline val PERCENTEQ = 171 + inline val HATEQ = 172 + inline val LTLTEQ = 173 + inline val GTGTEQ = 174 + inline val GTGTGTEQ = 175 /** primitive types */ - final val VOID = 180; enter(VOID, "void") - final val BOOLEAN = 181; enter(BOOLEAN, "boolean") - final val BYTE = 182; enter(BYTE, "byte") - final val SHORT = 183; enter(SHORT, "short") - final val CHAR = 184; enter(CHAR, "char") - final val INT = 185; enter(INT, "int") - final val LONG = 186; enter(LONG, "long") - final val FLOAT = 187; enter(FLOAT, "float") - final val DOUBLE = 188; enter(DOUBLE, "double") + inline val VOID = 180; enter(VOID, "void") + inline val BOOLEAN = 181; enter(BOOLEAN, "boolean") + inline val BYTE = 182; enter(BYTE, "byte") + inline val SHORT = 183; enter(SHORT, "short") + inline val CHAR = 184; enter(CHAR, "char") + inline val INT = 185; enter(INT, "int") + inline val LONG = 186; enter(LONG, "long") + inline val FLOAT = 187; enter(FLOAT, "float") + inline val DOUBLE = 188; enter(DOUBLE, "double") } diff --git a/compiler/src/dotty/tools/dotc/parsing/Tokens.scala b/compiler/src/dotty/tools/dotc/parsing/Tokens.scala index cba07a6e5a34..55f428cef5a4 100644 --- a/compiler/src/dotty/tools/dotc/parsing/Tokens.scala +++ b/compiler/src/dotty/tools/dotc/parsing/Tokens.scala @@ -30,107 +30,107 @@ abstract class TokensCommon { } /** special tokens */ - final val EMPTY = 0; enter(EMPTY, "") // a missing token, used in lookahead - final val ERROR = 1; enter(ERROR, "erroneous token") // an erroneous token - final val EOF = 2; enter(EOF, "eof") + inline val EMPTY = 0; enter(EMPTY, "") // a missing token, used in lookahead + inline val ERROR = 1; enter(ERROR, "erroneous token") // an erroneous token + inline val EOF = 2; enter(EOF, "eof") /** literals */ - final val CHARLIT = 3; enter(CHARLIT, "character literal") - final val INTLIT = 4; enter(INTLIT, "integer literal") - final val DECILIT = 5; enter(DECILIT, "number literal") // with decimal point - final val EXPOLIT = 6; enter(EXPOLIT, "number literal with exponent") - final val LONGLIT = 7; enter(LONGLIT, "long literal") - final val FLOATLIT = 8; enter(FLOATLIT, "float literal") - final val DOUBLELIT = 9; enter(DOUBLELIT, "double literal") - final val STRINGLIT = 10; enter(STRINGLIT, "string literal") - final val STRINGPART = 11; enter(STRINGPART, "string literal", "string literal part") - //final val INTERPOLATIONID = 12; enter(INTERPOLATIONID, "string interpolator") - //final val QUOTEID = 13; enter(QUOTEID, "quoted identifier") // TODO: deprecate + inline val CHARLIT = 3; enter(CHARLIT, "character literal") + inline val INTLIT = 4; enter(INTLIT, "integer literal") + inline val DECILIT = 5; enter(DECILIT, "number literal") // with decimal point + inline val EXPOLIT = 6; enter(EXPOLIT, "number literal with exponent") + inline val LONGLIT = 7; enter(LONGLIT, "long literal") + inline val FLOATLIT = 8; enter(FLOATLIT, "float literal") + inline val DOUBLELIT = 9; enter(DOUBLELIT, "double literal") + inline val STRINGLIT = 10; enter(STRINGLIT, "string literal") + inline val STRINGPART = 11; enter(STRINGPART, "string literal", "string literal part") + //inline val INTERPOLATIONID = 12; enter(INTERPOLATIONID, "string interpolator") + //inline val QUOTEID = 13; enter(QUOTEID, "quoted identifier") // TODO: deprecate /** identifiers */ - final val IDENTIFIER = 14; enter(IDENTIFIER, "identifier") - //final val BACKQUOTED_IDENT = 15; enter(BACKQUOTED_IDENT, "identifier", "backquoted ident") + inline val IDENTIFIER = 14; enter(IDENTIFIER, "identifier") + //inline val BACKQUOTED_IDENT = 15; enter(BACKQUOTED_IDENT, "identifier", "backquoted ident") /** alphabetic keywords */ - final val IF = 20; enter(IF, "if") - final val FOR = 21; enter(FOR, "for") - final val ELSE = 22; enter(ELSE, "else") - final val THIS = 23; enter(THIS, "this") - final val NULL = 24; enter(NULL, "null") - final val NEW = 25; enter(NEW, "new") - //final val WITH = 26; enter(WITH, "with") - final val SUPER = 27; enter(SUPER, "super") - //final val CASE = 28; enter(CASE, "case") - //final val CASECLASS = 29; enter(CASECLASS, "case class") - //final val CASEOBJECT = 30; enter(CASEOBJECT, "case object") - //final val VAL = 31; enter(VAL, "val") - final val ABSTRACT = 32; enter(ABSTRACT, "abstract") - final val FINAL = 33; enter(FINAL, "final") - final val PRIVATE = 34; enter(PRIVATE, "private") - final val PROTECTED = 35; enter(PROTECTED, "protected") - final val OVERRIDE = 36; enter(OVERRIDE, "override") - //final val IMPLICIT = 37; enter(IMPLICIT, "implicit") - //final val VAR = 38; enter(VAR, "var") - //final val DEF = 39; enter(DEF, "def") - //final val TYPE = 40; enter(TYPE, "type") - final val EXTENDS = 41; enter(EXTENDS, "extends") - final val TRUE = 42; enter(TRUE, "true") - final val FALSE = 43; enter(FALSE, "false") - //final val OBJECT = 44; enter(OBJECT, "object") - final val CLASS = 45; enter(CLASS, "class") - final val IMPORT = 46; enter(IMPORT, "import") - final val PACKAGE = 47; enter(PACKAGE, "package") - //final val YIELD = 48; enter(YIELD, "yield") - final val DO = 49; enter(DO, "do") - //final val TRAIT = 50; enter(TRAIT, "trait") - //final val SEALED = 51; enter(SEALED, "sealed") - final val THROW = 52; enter(THROW, "throw") - final val TRY = 53; enter(TRY, "try") - final val CATCH = 54; enter(CATCH, "catch") - final val FINALLY = 55; enter(FINALLY, "finally") - final val WHILE = 56; enter(WHILE, "while") - final val RETURN = 57; enter(RETURN, "return") - //final val MATCH = 58; enter(MATCH, "match") - //final val LAZY = 59; enter(LAZY, "lazy") - //final val THEN = 60; enter(THEN, "then") - //final val FORSOME = 61; enter(FORSOME, "forSome") // TODO: deprecate - //final val ENUM = 62; enter(ENUM, "enum") + inline val IF = 20; enter(IF, "if") + inline val FOR = 21; enter(FOR, "for") + inline val ELSE = 22; enter(ELSE, "else") + inline val THIS = 23; enter(THIS, "this") + inline val NULL = 24; enter(NULL, "null") + inline val NEW = 25; enter(NEW, "new") + //inline val WITH = 26; enter(WITH, "with") + inline val SUPER = 27; enter(SUPER, "super") + //inline val CASE = 28; enter(CASE, "case") + //inline val CASECLASS = 29; enter(CASECLASS, "case class") + //inline val CASEOBJECT = 30; enter(CASEOBJECT, "case object") + //inline val VAL = 31; enter(VAL, "val") + inline val ABSTRACT = 32; enter(ABSTRACT, "abstract") + inline val FINAL = 33; enter(FINAL, "final") + inline val PRIVATE = 34; enter(PRIVATE, "private") + inline val PROTECTED = 35; enter(PROTECTED, "protected") + inline val OVERRIDE = 36; enter(OVERRIDE, "override") + //inline val IMPLICIT = 37; enter(IMPLICIT, "implicit") + //inline val VAR = 38; enter(VAR, "var") + //inline val DEF = 39; enter(DEF, "def") + //inline val TYPE = 40; enter(TYPE, "type") + inline val EXTENDS = 41; enter(EXTENDS, "extends") + inline val TRUE = 42; enter(TRUE, "true") + inline val FALSE = 43; enter(FALSE, "false") + //inline val OBJECT = 44; enter(OBJECT, "object") + inline val CLASS = 45; enter(CLASS, "class") + inline val IMPORT = 46; enter(IMPORT, "import") + inline val PACKAGE = 47; enter(PACKAGE, "package") + //inline val YIELD = 48; enter(YIELD, "yield") + inline val DO = 49; enter(DO, "do") + //inline val TRAIT = 50; enter(TRAIT, "trait") + //inline val SEALED = 51; enter(SEALED, "sealed") + inline val THROW = 52; enter(THROW, "throw") + inline val TRY = 53; enter(TRY, "try") + inline val CATCH = 54; enter(CATCH, "catch") + inline val FINALLY = 55; enter(FINALLY, "finally") + inline val WHILE = 56; enter(WHILE, "while") + inline val RETURN = 57; enter(RETURN, "return") + //inline val MATCH = 58; enter(MATCH, "match") + //inline val LAZY = 59; enter(LAZY, "lazy") + //inline val THEN = 60; enter(THEN, "then") + //inline val FORSOME = 61; enter(FORSOME, "forSome") // TODO: deprecate + //inline val ENUM = 62; enter(ENUM, "enum") /** special symbols */ - final val COMMA = 70; enter(COMMA, "','") - final val SEMI = 71; enter(SEMI, "';'") - final val DOT = 72; enter(DOT, "'.'") - //final val NEWLINE = 78; enter(NEWLINE, "end of statement", "new line") - //final val NEWLINES = 79; enter(NEWLINES, "end of statement", "new lines") + inline val COMMA = 70; enter(COMMA, "','") + inline val SEMI = 71; enter(SEMI, "';'") + inline val DOT = 72; enter(DOT, "'.'") + //inline val NEWLINE = 78; enter(NEWLINE, "end of statement", "new line") + //inline val NEWLINES = 79; enter(NEWLINES, "end of statement", "new lines") /** special keywords */ - //final val USCORE = 73; enter(USCORE, "_") - final val COLON = 74; enter(COLON, ":") - final val EQUALS = 75; enter(EQUALS, "=") - //final val LARROW = 76; enter(LARROW, "<-") - //final val ARROW = 77; enter(ARROW, "=>") - //final val SUBTYPE = 80; enter(SUBTYPE, "<:") - //final val SUPERTYPE = 81; enter(SUPERTYPE, ">:") - //final val HASH = 82; enter(HASH, "#") - final val AT = 83; enter(AT, "@") - //final val VIEWBOUND = 84; enter(VIEWBOUND, "<%") + //inline val USCORE = 73; enter(USCORE, "_") + inline val COLON = 74; enter(COLON, ":") + inline val EQUALS = 75; enter(EQUALS, "=") + //inline val LARROW = 76; enter(LARROW, "<-") + //inline val ARROW = 77; enter(ARROW, "=>") + //inline val SUBTYPE = 80; enter(SUBTYPE, "<:") + //inline val SUPERTYPE = 81; enter(SUPERTYPE, ">:") + //inline val HASH = 82; enter(HASH, "#") + inline val AT = 83; enter(AT, "@") + //inline val VIEWBOUND = 84; enter(VIEWBOUND, "<%") val keywords: TokenSet def isKeyword(token: Token): Boolean = keywords contains token /** parentheses */ - final val LPAREN = 91; enter(LPAREN, "'('") - final val RPAREN = 92; enter(RPAREN, "')'") - final val LBRACKET = 93; enter(LBRACKET, "'['") - final val RBRACKET = 94; enter(RBRACKET, "']'") - final val LBRACE = 95; enter(LBRACE, "'{'") - final val RBRACE = 96; enter(RBRACE, "'}'") - final val INDENT = 97; enter(INDENT, "indent") - final val OUTDENT = 98; enter(OUTDENT, "unindent") - - final val firstParen = LPAREN - final val lastParen = OUTDENT + inline val LPAREN = 91; enter(LPAREN, "'('") + inline val RPAREN = 92; enter(RPAREN, "')'") + inline val LBRACKET = 93; enter(LBRACKET, "'['") + inline val RBRACKET = 94; enter(RBRACKET, "']'") + inline val LBRACE = 95; enter(LBRACE, "'{'") + inline val RBRACE = 96; enter(RBRACE, "'}'") + inline val INDENT = 97; enter(INDENT, "indent") + inline val OUTDENT = 98; enter(OUTDENT, "unindent") + + inline val firstParen = LPAREN + inline val lastParen = OUTDENT def buildKeywordArray(keywords: TokenSet): (Int, Array[Int]) = { def start(tok: Token) = tokenString(tok).toTermName.asSimpleName.start @@ -148,13 +148,13 @@ abstract class TokensCommon { } object Tokens extends TokensCommon { - final val minToken = EMPTY + inline val minToken = EMPTY final def maxToken: Int = XMLSTART - final val INTERPOLATIONID = 12; enter(INTERPOLATIONID, "string interpolator") - final val QUOTEID = 13; enter(QUOTEID, "quoted identifier") // TODO: deprecate + inline val INTERPOLATIONID = 12; enter(INTERPOLATIONID, "string interpolator") + inline val QUOTEID = 13; enter(QUOTEID, "quoted identifier") // TODO: deprecate - final val BACKQUOTED_IDENT = 15; enter(BACKQUOTED_IDENT, "identifier", "backquoted ident") + inline val BACKQUOTED_IDENT = 15; enter(BACKQUOTED_IDENT, "identifier", "backquoted ident") final val identifierTokens: TokenSet = BitSet(IDENTIFIER, BACKQUOTED_IDENT) @@ -162,51 +162,51 @@ object Tokens extends TokensCommon { token >= IDENTIFIER && token <= BACKQUOTED_IDENT /** alphabetic keywords */ - final val WITH = 26; enter(WITH, "with") - final val CASE = 28; enter(CASE, "case") - final val CASECLASS = 29; enter(CASECLASS, "case class") - final val CASEOBJECT = 30; enter(CASEOBJECT, "case object") - final val VAL = 31; enter(VAL, "val") - final val IMPLICIT = 37; enter(IMPLICIT, "implicit") - final val VAR = 38; enter(VAR, "var") - final val DEF = 39; enter(DEF, "def") - final val TYPE = 40; enter(TYPE, "type") - final val OBJECT = 44; enter(OBJECT, "object") - final val YIELD = 48; enter(YIELD, "yield") - final val TRAIT = 50; enter(TRAIT, "trait") - final val SEALED = 51; enter(SEALED, "sealed") - final val MATCH = 58; enter(MATCH, "match") - final val LAZY = 59; enter(LAZY, "lazy") - final val THEN = 60; enter(THEN, "then") - final val FORSOME = 61; enter(FORSOME, "forSome") // TODO: deprecate - final val ENUM = 62; enter(ENUM, "enum") - final val GIVEN = 63; enter(GIVEN, "given") - final val EXPORT = 64; enter(EXPORT, "export") - final val MACRO = 65; enter(MACRO, "macro") // TODO: remove - final val END = 66; enter(END, "end") + inline val WITH = 26; enter(WITH, "with") + inline val CASE = 28; enter(CASE, "case") + inline val CASECLASS = 29; enter(CASECLASS, "case class") + inline val CASEOBJECT = 30; enter(CASEOBJECT, "case object") + inline val VAL = 31; enter(VAL, "val") + inline val IMPLICIT = 37; enter(IMPLICIT, "implicit") + inline val VAR = 38; enter(VAR, "var") + inline val DEF = 39; enter(DEF, "def") + inline val TYPE = 40; enter(TYPE, "type") + inline val OBJECT = 44; enter(OBJECT, "object") + inline val YIELD = 48; enter(YIELD, "yield") + inline val TRAIT = 50; enter(TRAIT, "trait") + inline val SEALED = 51; enter(SEALED, "sealed") + inline val MATCH = 58; enter(MATCH, "match") + inline val LAZY = 59; enter(LAZY, "lazy") + inline val THEN = 60; enter(THEN, "then") + inline val FORSOME = 61; enter(FORSOME, "forSome") // TODO: deprecate + inline val ENUM = 62; enter(ENUM, "enum") + inline val GIVEN = 63; enter(GIVEN, "given") + inline val EXPORT = 64; enter(EXPORT, "export") + inline val MACRO = 65; enter(MACRO, "macro") // TODO: remove + inline val END = 66; enter(END, "end") /** special symbols */ - final val NEWLINE = 78; enter(NEWLINE, "end of statement", "new line") - final val NEWLINES = 79; enter(NEWLINES, "end of statement", "new lines") + inline val NEWLINE = 78; enter(NEWLINE, "end of statement", "new line") + inline val NEWLINES = 79; enter(NEWLINES, "end of statement", "new lines") /** special keywords */ - final val USCORE = 73; enter(USCORE, "_") - final val LARROW = 76; enter(LARROW, "<-") - final val ARROW = 77; enter(ARROW, "=>") - final val SUBTYPE = 80; enter(SUBTYPE, "<:") - final val SUPERTYPE = 81; enter(SUPERTYPE, ">:") - final val HASH = 82; enter(HASH, "#") - final val VIEWBOUND = 84; enter(VIEWBOUND, "<%") - final val TLARROW = 85; enter(TLARROW, "=>>") - final val CTXARROW = 86; enter(CTXARROW, "?=>") + inline val USCORE = 73; enter(USCORE, "_") + inline val LARROW = 76; enter(LARROW, "<-") + inline val ARROW = 77; enter(ARROW, "=>") + inline val SUBTYPE = 80; enter(SUBTYPE, "<:") + inline val SUPERTYPE = 81; enter(SUPERTYPE, ">:") + inline val HASH = 82; enter(HASH, "#") + inline val VIEWBOUND = 84; enter(VIEWBOUND, "<%") + inline val TLARROW = 85; enter(TLARROW, "=>>") + inline val CTXARROW = 86; enter(CTXARROW, "?=>") - final val QUOTE = 87; enter(QUOTE, "'") + inline val QUOTE = 87; enter(QUOTE, "'") - final val COLONEOL = 88; enter(COLONEOL, ":", ": at eol") - final val SELFARROW = 89; enter(SELFARROW, "=>") // reclassified ARROW following self-type + inline val COLONEOL = 88; enter(COLONEOL, ":", ": at eol") + inline val SELFARROW = 89; enter(SELFARROW, "=>") // reclassified ARROW following self-type /** XML mode */ - final val XMLSTART = 99; enter(XMLSTART, "$XMLSTART$<") // TODO: deprecate + inline val XMLSTART = 99; enter(XMLSTART, "$XMLSTART$<") // TODO: deprecate final val alphaKeywords: TokenSet = tokenRange(IF, END) final val symbolicKeywords: TokenSet = tokenRange(USCORE, CTXARROW) diff --git a/compiler/src/dotty/tools/dotc/printing/SyntaxHighlighting.scala b/compiler/src/dotty/tools/dotc/printing/SyntaxHighlighting.scala index cce2c6d00859..623f540bd721 100644 --- a/compiler/src/dotty/tools/dotc/printing/SyntaxHighlighting.scala +++ b/compiler/src/dotty/tools/dotc/printing/SyntaxHighlighting.scala @@ -17,7 +17,7 @@ import java.util.Arrays object SyntaxHighlighting { /** if true, log erroneous positions being highlighted */ - private final val debug = true + private inline val debug = true // Keep in sync with SyntaxHighlightingTests val NoColor: String = Console.RESET diff --git a/compiler/src/dotty/tools/dotc/transform/PatternMatcher.scala b/compiler/src/dotty/tools/dotc/transform/PatternMatcher.scala index 5a640c8f1d98..7546c1fd854d 100644 --- a/compiler/src/dotty/tools/dotc/transform/PatternMatcher.scala +++ b/compiler/src/dotty/tools/dotc/transform/PatternMatcher.scala @@ -54,10 +54,10 @@ object PatternMatcher { val name: String = "patternMatcher" - final val selfCheck = false // debug option, if on we check that no case gets generated twice + inline val selfCheck = false // debug option, if on we check that no case gets generated twice /** Minimal number of cases to emit a switch */ - final val MinSwitchCases = 4 + inline val MinSwitchCases = 4 val TrustedTypeTestKey: Key[Unit] = new StickyKey[Unit] diff --git a/compiler/src/dotty/tools/dotc/transform/sjs/JSExportUtils.scala b/compiler/src/dotty/tools/dotc/transform/sjs/JSExportUtils.scala index 6825ddcc1fef..57e5fc636ddc 100644 --- a/compiler/src/dotty/tools/dotc/transform/sjs/JSExportUtils.scala +++ b/compiler/src/dotty/tools/dotc/transform/sjs/JSExportUtils.scala @@ -26,9 +26,9 @@ import dotty.tools.backend.sjs.JSDefinitions.jsdefn /** Utilities for JS exports handling. */ object JSExportUtils { - private final val ExportPrefix = "$js$exported$" - private final val MethodExportPrefix = ExportPrefix + "meth$" - private final val PropExportPrefix = ExportPrefix + "prop$" + private inline val ExportPrefix = "$js$exported$" + private inline val MethodExportPrefix = ExportPrefix + "meth$" + private inline val PropExportPrefix = ExportPrefix + "prop$" /** Creates a name for an export specification. */ def makeExportName(jsName: String, isProp: Boolean): TermName = { diff --git a/compiler/src/dotty/tools/dotc/typer/Implicits.scala b/compiler/src/dotty/tools/dotc/typer/Implicits.scala index a3b0dd02714d..d7bf75f8bf73 100644 --- a/compiler/src/dotty/tools/dotc/typer/Implicits.scala +++ b/compiler/src/dotty/tools/dotc/typer/Implicits.scala @@ -66,10 +66,10 @@ object Implicits: } object Candidate { type Kind = Int - final val None = 0 - final val Value = 1 - final val Conversion = 2 - final val Extension = 4 + inline val None = 0 + inline val Value = 1 + inline val Conversion = 2 + inline val Extension = 4 } /** If `expected` is a selection prototype, does `tp` have an extension diff --git a/compiler/src/dotty/tools/dotc/util/Chars.scala b/compiler/src/dotty/tools/dotc/util/Chars.scala index 986b1fda58ec..4c54dc73459e 100644 --- a/compiler/src/dotty/tools/dotc/util/Chars.scala +++ b/compiler/src/dotty/tools/dotc/util/Chars.scala @@ -11,10 +11,10 @@ import java.lang.Character.UPPERCASE_LETTER /** Contains constants and classifier methods for characters */ object Chars { - final val LF = '\u000A' - final val FF = '\u000C' - final val CR = '\u000D' - final val SU = '\u001A' + inline val LF = '\u000A' + inline val FF = '\u000C' + inline val CR = '\u000D' + inline val SU = '\u001A' /** Convert a character digit to an Int according to given base, * -1 if no success diff --git a/compiler/src/dotty/tools/dotc/util/ReusableInstance.scala b/compiler/src/dotty/tools/dotc/util/ReusableInstance.scala index 16bd2decd908..4dd897dd082a 100644 --- a/compiler/src/dotty/tools/dotc/util/ReusableInstance.scala +++ b/compiler/src/dotty/tools/dotc/util/ReusableInstance.scala @@ -27,7 +27,7 @@ final class ReusableInstance[T <: AnyRef] private (make: => T) { } object ReusableInstance { - private final val InitialSize = 4 + private inline val InitialSize = 4 def apply[T <: AnyRef](make: => T): ReusableInstance[T] = new ReusableInstance[T](make) } diff --git a/compiler/src/dotty/tools/dotc/util/SixteenNibbles.scala b/compiler/src/dotty/tools/dotc/util/SixteenNibbles.scala index ebeb9f700273..42286aef5d31 100644 --- a/compiler/src/dotty/tools/dotc/util/SixteenNibbles.scala +++ b/compiler/src/dotty/tools/dotc/util/SixteenNibbles.scala @@ -22,7 +22,7 @@ class SixteenNibbles(val bits: Long) extends AnyVal { } object SixteenNibbles { - final val Width = 4 - final val Mask = (1 << Width) - 1 + inline val Width = 4 + inline val Mask = (1 << Width) - 1 final val LongMask: Long = Mask.toLong } diff --git a/compiler/src/dotty/tools/dotc/util/Spans.scala b/compiler/src/dotty/tools/dotc/util/Spans.scala index f73f1da86ce5..0a28c367ff29 100644 --- a/compiler/src/dotty/tools/dotc/util/Spans.scala +++ b/compiler/src/dotty/tools/dotc/util/Spans.scala @@ -15,9 +15,9 @@ import language.implicitConversions */ object Spans { - private final val StartEndBits = 26 - private final val StartEndMask = (1L << StartEndBits) - 1 - private final val SyntheticPointDelta = (1 << (64 - StartEndBits * 2)) - 1 + private inline val StartEndBits = 26 + private inline val StartEndMask = (1L << StartEndBits) - 1 + private inline val SyntheticPointDelta = (1 << (64 - StartEndBits * 2)) - 1 /** The maximal representable offset in a span */ final val MaxOffset = StartEndMask.toInt diff --git a/compiler/src/dotty/tools/dotc/util/Stats.scala b/compiler/src/dotty/tools/dotc/util/Stats.scala index 2de6e6554e15..60465e519452 100644 --- a/compiler/src/dotty/tools/dotc/util/Stats.scala +++ b/compiler/src/dotty/tools/dotc/util/Stats.scala @@ -9,7 +9,7 @@ import collection.mutable @sharable object Stats { - final val enabled = false + inline val enabled = false var monitored: Boolean = false @@ -43,7 +43,7 @@ import collection.mutable else op } - final val GroupChar = '/' + inline val GroupChar = '/' /** Aggregate all counts of all keys with a common prefix, followed by `:` */ private def aggregate(): Unit = {