9dd8eda1c9
Library methods such as 'listOf' are resolved to have the package fragments as their parents, but JVM expects their containing file classes as parents. This fix generates those file classes and uses them as parent replacements for such library methods.
71 lines
2.5 KiB
Kotlin
Vendored
71 lines
2.5 KiB
Kotlin
Vendored
// KJS_WITH_FULL_RUNTIME
|
|
// WITH_RUNTIME
|
|
import kotlin.experimental.*
|
|
|
|
fun box(): String {
|
|
// D = 1101 C = 1100
|
|
// 6 = 0110 5 = 0101
|
|
var iarg1: Int = 0xDC56DC56.toInt()
|
|
var iarg2: Int = 0x65DC65DC
|
|
var i1: Any = iarg1 and iarg2
|
|
var i2: Any = iarg1 or iarg2
|
|
var i3: Any = iarg1 xor iarg2
|
|
var i4: Any = iarg1.inv()
|
|
var i5: Any = iarg1 shl 16
|
|
var i6: Any = iarg1 shr 16
|
|
var i7: Any = iarg1 ushr 16
|
|
|
|
if (i1 != 0x44544454.toInt()) return "fail: Int.and"
|
|
if (i2 != 0xFDDEFDDE.toInt()) return "fail: Int.or"
|
|
if (i3 != 0xB98AB98A.toInt()) return "fail: Int.xor"
|
|
if (i4 != 0x23A923A9.toInt()) return "fail: Int.inv"
|
|
if (i5 != 0xDC560000.toInt()) return "fail: Int.shl"
|
|
if (i6 != 0xFFFFDC56.toInt()) return "fail: Int.shr"
|
|
if (i7 != 0x0000DC56.toInt()) return "fail: Int.ushr"
|
|
|
|
|
|
// TODO: Use long hex constants after KT-4749 is fixed
|
|
var larg1: Long = (0xDC56DC56L shl 32) + 0xDC56DC56 // !!!!
|
|
var larg2: Long = 0x65DC65DC65DC65DC
|
|
var l1: Any = larg1 and larg2
|
|
var l2: Any = larg1 or larg2
|
|
var l3: Any = larg1 xor larg2
|
|
var l4: Any = larg1.inv()
|
|
var l5: Any = larg1 shl 32
|
|
var l6: Any = larg1 shr 32
|
|
var l7: Any = larg1 ushr 32
|
|
|
|
if (l1 != 0x4454445444544454) return "fail: Long.and"
|
|
if (l2 != (0xFDDEFDDEL shl 32) + 0xFDDEFDDE) return "fail: Long.or"
|
|
if (l3 != (0xB98AB98AL shl 32) + 0xB98AB98A) return "fail: Long.xor"
|
|
if (l4 != 0x23A923A923A923A9) return "fail: Long.inv"
|
|
if (l5 != (0xDC56DC56L shl 32)/*!!!*/) return "fail: Long.shl"
|
|
if (l6 != (0xFFFFFFFFL shl 32) + 0xDC56DC56) return "fail: Long.shr"
|
|
if (l7 != (0x00000000L shl 32) + 0xDC56DC56.toLong()) return "fail: Long.ushr"
|
|
|
|
var sarg1: Short = 0xDC56.toShort()
|
|
var sarg2: Short = 0x65DC.toShort()
|
|
var s1: Any = sarg1 and sarg2
|
|
var s2: Any = sarg1 or sarg2
|
|
var s3: Any = sarg1 xor sarg2
|
|
var s4: Any = sarg1.inv()
|
|
|
|
if (s1 != 0x4454.toShort()) return "fail: Short.and"
|
|
if (s2 != 0xFDDE.toShort()) return "fail: Short.or"
|
|
if (s3 != 0xB98A.toShort()) return "fail: Short.xor"
|
|
if (s4 != 0x23A9.toShort()) return "fail: Short.inv"
|
|
|
|
var barg1: Byte = 0xDC.toByte()
|
|
var barg2: Byte = 0x65.toByte()
|
|
var b1: Any = barg1 and barg2
|
|
var b2: Any = barg1 or barg2
|
|
var b3: Any = barg1 xor barg2
|
|
var b4: Any = barg1.inv()
|
|
|
|
if (b1 != 0x44.toByte()) return "fail: Byte.and"
|
|
if (b2 != 0xFD.toByte()) return "fail: Byte.or"
|
|
if (b3 != 0xB9.toByte()) return "fail: Byte.xor"
|
|
if (b4 != 0x23.toByte()) return "fail: Byte.inv"
|
|
|
|
return "OK"
|
|
} |