JS: fix unsigned literal inlining
This commit is contained in:
+5
@@ -3820,6 +3820,11 @@ public class BoxJsTestGenerated extends AbstractBoxJsTest {
|
||||
runTest("js/js.translator/testData/box/inline/continueInLoopWithInlinableCondition.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("crossModuleUnsignedLiterals.kt")
|
||||
public void testCrossModuleUnsignedLiterals() throws Exception {
|
||||
runTest("js/js.translator/testData/box/inline/crossModuleUnsignedLiterals.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("dontInlineFunctionCall.kt")
|
||||
public void testDontInlineFunctionCall() throws Exception {
|
||||
runTest("js/js.translator/testData/box/inline/dontInlineFunctionCall.kt");
|
||||
|
||||
+5
@@ -3820,6 +3820,11 @@ public class IrBoxJsTestGenerated extends AbstractIrBoxJsTest {
|
||||
runTest("js/js.translator/testData/box/inline/continueInLoopWithInlinableCondition.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("crossModuleUnsignedLiterals.kt")
|
||||
public void testCrossModuleUnsignedLiterals() throws Exception {
|
||||
runTest("js/js.translator/testData/box/inline/crossModuleUnsignedLiterals.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("dontInlineFunctionCall.kt")
|
||||
public void testDontInlineFunctionCall() throws Exception {
|
||||
runTest("js/js.translator/testData/box/inline/dontInlineFunctionCall.kt");
|
||||
|
||||
@@ -28,6 +28,7 @@ import org.jetbrains.kotlin.js.backend.ast.metadata.MetadataProperties;
|
||||
import org.jetbrains.kotlin.js.backend.ast.metadata.SideEffectKind;
|
||||
import org.jetbrains.kotlin.js.translate.context.Namer;
|
||||
import org.jetbrains.kotlin.js.translate.context.TranslationContext;
|
||||
import org.jetbrains.kotlin.js.translate.reference.ReferenceTranslator;
|
||||
import org.jetbrains.kotlin.name.ClassId;
|
||||
import org.jetbrains.kotlin.resolve.source.KotlinSourceElementKt;
|
||||
import org.jetbrains.kotlin.util.OperatorNameConventions;
|
||||
@@ -255,8 +256,7 @@ public final class JsAstUtils {
|
||||
ClassDescriptor classDescriptor = findClassAcrossModuleDependencies(context.getCurrentModule(), unsignedClassId);
|
||||
assert classDescriptor != null : "Class descriptor is null for " + unsignedClassId;
|
||||
|
||||
JsName descName = context.getInnerNameForDescriptor(classDescriptor);
|
||||
return new JsNew(descName.makeRef(), Collections.singletonList(expression));
|
||||
return new JsNew(ReferenceTranslator.translateAsTypeReference(classDescriptor, context), Collections.singletonList(expression));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
// IGNORE_BACKEND: JS_IR
|
||||
|
||||
// EXPECTED_REACHABLE_NODES: 1625
|
||||
// MODULE: lib
|
||||
// FILE: lib.kt
|
||||
|
||||
|
||||
inline fun tenUInt() = 10U
|
||||
|
||||
inline fun tenULong() = 10UL
|
||||
|
||||
// MODULE: main(lib)
|
||||
// FILE: main.kt
|
||||
|
||||
fun box(): String {
|
||||
|
||||
if (tenUInt() != 10U) return "fail 1"
|
||||
|
||||
if (tenULong() != 10UL) return "fail 2"
|
||||
|
||||
return "OK"
|
||||
}
|
||||
Reference in New Issue
Block a user