[JS IR BE] unsigned literal support

This commit is contained in:
Anton Bannykh
2018-09-18 20:10:23 +03:00
parent 9f16e4f709
commit 06ecca4144
73 changed files with 84 additions and 226 deletions
@@ -148,8 +148,8 @@ class JsIntrinsics(private val irBuiltIns: IrBuiltIns, val context: JsIrBackendC
val jsNumberRangeToNumber = getInternalFunction("numberRangeToNumber") val jsNumberRangeToNumber = getInternalFunction("numberRangeToNumber")
val jsNumberRangeToLong = getInternalFunction("numberRangeToLong") val jsNumberRangeToLong = getInternalFunction("numberRangeToLong")
val longConstructor = val longClassSymbol = getInternalClassWithoutPackage("kotlin.Long")
context.symbolTable.referenceConstructor(context.getClass(FqName("kotlin.Long")).constructors.single())
val longToDouble = context.symbolTable.referenceSimpleFunction( val longToDouble = context.symbolTable.referenceSimpleFunction(
context.getClass(FqName("kotlin.Long")).unsubstitutedMemberScope.findSingleFunction( context.getClass(FqName("kotlin.Long")).unsubstitutedMemberScope.findSingleFunction(
Name.identifier("toDouble") Name.identifier("toDouble")
@@ -161,7 +161,12 @@ class JsIntrinsics(private val irBuiltIns: IrBuiltIns, val context: JsIrBackendC
) )
) )
val charConstructor = context.symbolTable.referenceConstructor(context.getClass(KotlinBuiltIns.FQ_NAMES._char.toSafe()).constructors.single()) val charClassSymbol = getInternalClassWithoutPackage("kotlin.Char")
val uByteClassSymbol = getInternalClassWithoutPackage("kotlin.UByte")
val uShortClassSymbol = getInternalClassWithoutPackage("kotlin.UShort")
val uIntClassSymbol = getInternalClassWithoutPackage("kotlin.UInt")
val uLongClassSymbol = getInternalClassWithoutPackage("kotlin.ULong")
val unreachable = defineUnreachableIntrinsic() val unreachable = defineUnreachableIntrinsic()
@@ -222,6 +227,9 @@ class JsIntrinsics(private val irBuiltIns: IrBuiltIns, val context: JsIrBackendC
private fun getInternalWithoutPackage(name: String) = private fun getInternalWithoutPackage(name: String) =
context.symbolTable.referenceSimpleFunction(context.getFunctions(FqName(name)).single()) context.symbolTable.referenceSimpleFunction(context.getFunctions(FqName(name)).single())
private fun getInternalClassWithoutPackage(fqName: String) =
context.symbolTable.referenceClass(context.getClass(FqName(fqName)))
// TODO: unify how we create intrinsic symbols // TODO: unify how we create intrinsic symbols
private fun defineObjectCreateIntrinsic() = private fun defineObjectCreateIntrinsic() =
JsIrBuilder.buildFunction("Object\$create", isInline = true, origin = JsLoweredDeclarationOrigin.JS_INTRINSICS_STUB).also { JsIrBuilder.buildFunction("Object\$create", isInline = true, origin = JsLoweredDeclarationOrigin.JS_INTRINSICS_STUB).also {
@@ -23,6 +23,7 @@ import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.*
import org.jetbrains.kotlin.ir.expressions.* import org.jetbrains.kotlin.ir.expressions.*
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
import org.jetbrains.kotlin.ir.expressions.impl.IrConstImpl
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
@@ -189,18 +190,13 @@ class IntrinsicifyCallsLowering(private val context: JsIrBackendContext) : FileL
for (type in arrayOf(irBuiltIns.byteType, irBuiltIns.intType)) { for (type in arrayOf(irBuiltIns.byteType, irBuiltIns.intType)) {
op(type, ConversionNames.TO_CHAR) { op(type, ConversionNames.TO_CHAR) {
irCall(it, intrinsics.charConstructor, dispatchReceiverAsFirstArgument = true) irCall(it, intrinsics.charClassSymbol.constructors.single(), dispatchReceiverAsFirstArgument = true)
} }
} }
for (type in arrayOf(irBuiltIns.floatType, irBuiltIns.doubleType)) { for (type in arrayOf(irBuiltIns.floatType, irBuiltIns.doubleType)) {
op(type, ConversionNames.TO_CHAR) { op(type, ConversionNames.TO_CHAR) {
IrCallImpl( JsIrBuilder.buildCall(intrinsics.charClassSymbol.constructors.single()).apply {
it.startOffset,
it.endOffset,
irBuiltIns.charType,
intrinsics.charConstructor
).apply {
putValueArgument(0, irCall(it, intrinsics.jsNumberToInt, dispatchReceiverAsFirstArgument = true)) putValueArgument(0, irCall(it, intrinsics.jsNumberToInt, dispatchReceiverAsFirstArgument = true))
} }
} }
@@ -306,42 +302,47 @@ class IntrinsicifyCallsLowering(private val context: JsIrBackendContext) : FileL
} }
} }
private fun lowerLongConst(value: Long, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET): IrExpression {
val high = (value shr 32).toInt()
val low = value.toInt()
return IrCallImpl(
startOffset,
endOffset,
irBuiltIns.longType,
context.intrinsics.longConstructor
).apply {
putValueArgument(0, JsIrBuilder.buildInt(context.irBuiltIns.intType, low))
putValueArgument(1, JsIrBuilder.buildInt(context.irBuiltIns.intType, high))
}
}
private fun lowerCharConst(value: Char, startOffset: Int = UNDEFINED_OFFSET, endOffset: Int = UNDEFINED_OFFSET): IrExpression {
return IrCallImpl(
startOffset,
endOffset,
irBuiltIns.charType,
context.intrinsics.charConstructor
).apply {
putValueArgument(0, JsIrBuilder.buildInt(context.irBuiltIns.intType, value.toInt()))
}
}
override fun lower(irFile: IrFile) { override fun lower(irFile: IrFile) {
irFile.transform(object : IrElementTransformerVoid() { irFile.transform(object : IrElementTransformerVoid() {
private fun <C> lowerConst(
irClass: IrClassSymbol,
carrierFactory: (Int, Int, IrType, C) -> IrExpression,
vararg args: C
): IrExpression {
val constructor = irClass.constructors.single()
val argType = constructor.owner.valueParameters.first().type
return JsIrBuilder.buildCall(constructor).apply {
for (i in args.indices) {
putValueArgument(i, carrierFactory(UNDEFINED_OFFSET, UNDEFINED_OFFSET, argType, args[i]))
}
}
}
private fun createLong(v: Long): IrExpression = lowerConst(context.intrinsics.longClassSymbol, IrConstImpl<*>::int, v.toInt(), (v shr 32).toInt())
// TODO should this be a separate lowering? // TODO should this be a separate lowering?
override fun <T> visitConst(expression: IrConst<T>): IrExpression { override fun <T> visitConst(expression: IrConst<T>): IrExpression {
if (expression.kind is IrConstKind.Long) { with(context.intrinsics) {
return lowerLongConst(IrConstKind.Long.valueOf(expression), expression.startOffset, expression.endOffset) return when (expression.type.classifierOrNull) {
} else if (expression.kind is IrConstKind.Char) { uByteClassSymbol -> lowerConst(uByteClassSymbol, IrConstImpl<*>::byte, IrConstKind.Byte.valueOf(expression))
return lowerCharConst(IrConstKind.Char.valueOf(expression), expression.startOffset, expression.endOffset)
uShortClassSymbol -> lowerConst(uShortClassSymbol, IrConstImpl<*>::short, IrConstKind.Short.valueOf(expression))
uIntClassSymbol -> lowerConst(uIntClassSymbol, IrConstImpl<*>::int, IrConstKind.Int.valueOf(expression))
uLongClassSymbol -> lowerConst(uLongClassSymbol, { _, _, _, v -> createLong(v) }, IrConstKind.Long.valueOf(expression))
else -> when {
expression.kind is IrConstKind.Char ->
lowerConst(charClassSymbol, IrConstImpl<*>::int, IrConstKind.Char.valueOf(expression).toInt())
expression.kind is IrConstKind.Long ->
createLong(IrConstKind.Long.valueOf(expression))
else -> super.visitConst(expression)
}
}
} }
return super.visitConst(expression)
} }
override fun visitCall(expression: IrCall): IrExpression { override fun visitCall(expression: IrCall): IrExpression {
@@ -1,5 +1,5 @@
// WITH_UNSIGNED // WITH_UNSIGNED
// IGNORE_BACKEND: JVM_IR, JS_IR // IGNORE_BACKEND: JVM_IR
val xs = Array(2) { 42u } val xs = Array(2) { 42u }
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,9 +1,9 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// Auto-generated by org.jetbrains.kotlin.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! // Auto-generated by org.jetbrains.kotlin.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT!
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,9 +1,9 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// Auto-generated by org.jetbrains.kotlin.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! // Auto-generated by org.jetbrains.kotlin.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT!
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,5 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,5 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,5 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,9 +1,9 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// Auto-generated by org.jetbrains.kotlin.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! // Auto-generated by org.jetbrains.kotlin.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT!
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,9 +1,9 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// Auto-generated by org.jetbrains.kotlin.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! // Auto-generated by org.jetbrains.kotlin.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT!
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,9 +1,9 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// Auto-generated by org.jetbrains.kotlin.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! // Auto-generated by org.jetbrains.kotlin.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT!
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,5 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,5 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,5 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,9 +1,9 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// Auto-generated by org.jetbrains.kotlin.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT! // Auto-generated by org.jetbrains.kotlin.generators.tests.GenerateRangesCodegenTestData. DO NOT EDIT!
// WITH_RUNTIME // WITH_RUNTIME
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,6 +1,3 @@
// TODO: muted automatically, investigate should it be ran for JS_IR or not
// IGNORE_BACKEND: JS_IR
// TODO: muted automatically, investigate should it be ran for JVM_IR or not // TODO: muted automatically, investigate should it be ran for JVM_IR or not
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
@@ -1,5 +1,5 @@
// WITH_UNSIGNED // WITH_UNSIGNED
// IGNORE_BACKEND: JVM_IR, JS_IR // IGNORE_BACKEND: JVM_IR
const val maxUByte: UByte = 0xFFu const val maxUByte: UByte = 0xFFu
@@ -1,5 +1,5 @@
// WITH_UNSIGNED // WITH_UNSIGNED
// IGNORE_BACKEND: JVM_IR, JS_IR // IGNORE_BACKEND: JVM_IR
fun box(): String { fun box(): String {
val good = 42.toUInt() val good = 42.toUInt()
@@ -1,4 +1,4 @@
// IGNORE_BACKEND: JVM_IR, JS_IR // IGNORE_BACKEND: JVM_IR
// WITH_UNSIGNED // WITH_UNSIGNED
fun box(): String { fun box(): String {
@@ -1,6 +1,5 @@
// WITH_UNSIGNED // WITH_UNSIGNED
// IGNORE_BACKEND: JVM_IR // IGNORE_BACKEND: JVM_IR
// IGNORE_BACKEND: JS_IR
fun box(): String { fun box(): String {
var sum = 0u var sum = 0u
+1 -1
View File
@@ -1,5 +1,5 @@
// WITH_UNSIGNED // WITH_UNSIGNED
// IGNORE_BACKEND: JVM_IR, JS_IR // IGNORE_BACKEND: JVM_IR
import kotlin.reflect.KProperty import kotlin.reflect.KProperty
import kotlin.reflect.KProperty0 import kotlin.reflect.KProperty0
@@ -1,5 +1,5 @@
// WITH_UNSIGNED // WITH_UNSIGNED
// IGNORE_BACKEND: JVM_IR, JS_IR // IGNORE_BACKEND: JVM_IR
fun box(): String { fun box(): String {
val maxULong = 0xFFFF_FFFF_FFFF_FFFFuL val maxULong = 0xFFFF_FFFF_FFFF_FFFFuL
@@ -1,5 +1,5 @@
// WITH_UNSIGNED // WITH_UNSIGNED
// IGNORE_BACKEND: JVM_IR, JS_IR // IGNORE_BACKEND: JVM_IR
fun box(): String { fun box(): String {
val u1: UByte = 255u val u1: UByte = 255u
@@ -1,5 +1,5 @@
// WITH_UNSIGNED // WITH_UNSIGNED
// IGNORE_BACKEND: JS_IR, JVM_IR // IGNORE_BACKEND: JVM_IR
fun prefixDecrementUByteLocal(): Any? { fun prefixDecrementUByteLocal(): Any? {
var a: UByte = 0u var a: UByte = 0u
@@ -1,5 +1,5 @@
// WITH_UNSIGNED // WITH_UNSIGNED
// IGNORE_BACKEND: JVM_IR, JS_IR // IGNORE_BACKEND: JVM_IR
const val MAX_BYTE: UByte = 0xFFu const val MAX_BYTE: UByte = 0xFFu
const val HUNDRED: UByte = 100u const val HUNDRED: UByte = 100u
@@ -121,6 +121,10 @@ public class GenerateRangesCodegenTestData {
private static final List<String> IGNORED_FOR_JS_BACKEND = Collections.emptyList(); private static final List<String> IGNORED_FOR_JS_BACKEND = Collections.emptyList();
private static final List<String> IGNORED_FOR_JS_IR_BACKEND = Arrays.asList("inexactDownToMinValue.kt",
"inexactToMaxValue.kt",
"simpleRangeWithNonConstantEnds.kt");
private static final List<String> IGNORED_FOR_NATIVE_BACKEND = Collections.emptyList(); private static final List<String> IGNORED_FOR_NATIVE_BACKEND = Collections.emptyList();
private static void writeIgnoreBackendDirective(PrintWriter out, String backendName) { private static void writeIgnoreBackendDirective(PrintWriter out, String backendName) {
@@ -138,13 +142,15 @@ public class GenerateRangesCodegenTestData {
throw new AssertionError(e); throw new AssertionError(e);
} }
// Ranges are not supported in JS_IR, JVM_IR yet // Ranges are not supported in JVM_IR yet
writeIgnoreBackendDirective(out, "JS_IR");
writeIgnoreBackendDirective(out, "JVM_IR"); writeIgnoreBackendDirective(out, "JVM_IR");
if (IGNORED_FOR_JS_BACKEND.contains(file.getName())) { if (IGNORED_FOR_JS_BACKEND.contains(file.getName())) {
writeIgnoreBackendDirective(out, "JS"); writeIgnoreBackendDirective(out, "JS");
} }
if (IGNORED_FOR_JS_IR_BACKEND.contains(file.getName())) {
writeIgnoreBackendDirective(out, "JS_IR");
}
if (IGNORED_FOR_NATIVE_BACKEND.contains(file.getName())) { if (IGNORED_FOR_NATIVE_BACKEND.contains(file.getName())) {
writeIgnoreBackendDirective(out, "NATIVE"); writeIgnoreBackendDirective(out, "NATIVE");
} }