JVM_IR KT-34594 don't generate fake local variable for @InlineOnly
This commit is contained in:
+6
@@ -3282,6 +3282,12 @@ public class FirBytecodeTextTestGenerated extends AbstractFirBytecodeTextTest {
|
||||
runTest("compiler/testData/codegen/bytecodeText/inline/linenumberForOneParametersArgumentCall.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("noFakeVariableForInlineOnlyFun.kt")
|
||||
public void testNoFakeVariableForInlineOnlyFun() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeText/inline/noFakeVariableForInlineOnlyFun.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("noSynAccessor.kt")
|
||||
public void testNoSynAccessor() throws Exception {
|
||||
|
||||
+2
-1
@@ -9,6 +9,7 @@ import org.jetbrains.kotlin.backend.common.FileLoweringPass
|
||||
import org.jetbrains.kotlin.backend.common.lower.createIrBuilder
|
||||
import org.jetbrains.kotlin.backend.common.phaser.makeIrFilePhase
|
||||
import org.jetbrains.kotlin.backend.jvm.JvmBackendContext
|
||||
import org.jetbrains.kotlin.backend.jvm.codegen.isInlineOnly
|
||||
import org.jetbrains.kotlin.backend.jvm.ir.IrInlineReferenceLocator
|
||||
import org.jetbrains.kotlin.codegen.inline.coroutines.FOR_INLINE_SUFFIX
|
||||
import org.jetbrains.kotlin.ir.builders.createTmpVariable
|
||||
@@ -35,7 +36,7 @@ internal class FakeInliningLocalVariablesLowering(val context: JvmBackendContext
|
||||
|
||||
override fun visitFunction(declaration: IrFunction, data: IrDeclaration?) {
|
||||
super.visitFunction(declaration, data)
|
||||
if (declaration.isInline && !declaration.origin.isSynthetic && declaration.body != null) {
|
||||
if (declaration.isInline && !declaration.origin.isSynthetic && declaration.body != null && !declaration.isInlineOnly()) {
|
||||
declaration.addFakeInliningLocalVariables()
|
||||
}
|
||||
}
|
||||
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
@Suppress("INVISIBLE_REFERENCE", "INVISIBLE_MEMBER")
|
||||
@kotlin.internal.InlineOnly
|
||||
inline fun inlineOnlyFun() = 42
|
||||
|
||||
fun test() = inlineOnlyFun()
|
||||
|
||||
// JVM_TEMPLATES
|
||||
// 1 LDC 0
|
||||
// 1 ICONST_0
|
||||
// 0 ISTORE 1
|
||||
// 2 ISTORE 0
|
||||
|
||||
// JVM_IR_TEMPLATES
|
||||
// 0 LDC 0
|
||||
// 0 ICONST_0
|
||||
// 0 ISTORE 1
|
||||
// 0 ISTORE 0
|
||||
+6
@@ -3144,6 +3144,12 @@ public class BytecodeTextTestGenerated extends AbstractBytecodeTextTest {
|
||||
runTest("compiler/testData/codegen/bytecodeText/inline/linenumberForOneParametersArgumentCall.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("noFakeVariableForInlineOnlyFun.kt")
|
||||
public void testNoFakeVariableForInlineOnlyFun() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeText/inline/noFakeVariableForInlineOnlyFun.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("noSynAccessor.kt")
|
||||
public void testNoSynAccessor() throws Exception {
|
||||
|
||||
+6
@@ -3282,6 +3282,12 @@ public class IrBytecodeTextTestGenerated extends AbstractIrBytecodeTextTest {
|
||||
runTest("compiler/testData/codegen/bytecodeText/inline/linenumberForOneParametersArgumentCall.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("noFakeVariableForInlineOnlyFun.kt")
|
||||
public void testNoFakeVariableForInlineOnlyFun() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeText/inline/noFakeVariableForInlineOnlyFun.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
@TestMetadata("noSynAccessor.kt")
|
||||
public void testNoSynAccessor() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user