JVM IR: Handle nested classes in DelegatedPropertyOptimizer
This commit is contained in:
committed by
Alexander Udalov
parent
da9bff40f0
commit
ca6e430e89
Generated
+15
@@ -9573,6 +9573,21 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
|||||||
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/inSeparateModuleWithNonNullParameter.kt");
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/inSeparateModuleWithNonNullParameter.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815.kt")
|
||||||
|
public void testKt40815() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815_2.kt")
|
||||||
|
public void testKt40815_2() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815_2.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815_3.kt")
|
||||||
|
public void testKt40815_3() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815_3.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("lazy.kt")
|
@TestMetadata("lazy.kt")
|
||||||
public void testLazy() throws Exception {
|
public void testLazy() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/lazy.kt");
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/lazy.kt");
|
||||||
|
|||||||
+17
-16
@@ -110,7 +110,7 @@ abstract class ClassCodegen protected constructor(
|
|||||||
private var generatingClInit = false
|
private var generatingClInit = false
|
||||||
private var generated = false
|
private var generated = false
|
||||||
|
|
||||||
fun generate(): ReifiedTypeParametersUsages {
|
fun generate(parentDelegatedPropertyTracker: DelegatedPropertyOptimizer? = null): ReifiedTypeParametersUsages {
|
||||||
// TODO: reject repeated generate() calls; currently, these can happen for objects in finally
|
// TODO: reject repeated generate() calls; currently, these can happen for objects in finally
|
||||||
// blocks since they are `accept`ed once per each CFG edge out of the try-finally.
|
// blocks since they are `accept`ed once per each CFG edge out of the try-finally.
|
||||||
if (generated) return reifiedTypeParametersUsages
|
if (generated) return reifiedTypeParametersUsages
|
||||||
@@ -120,7 +120,8 @@ abstract class ClassCodegen protected constructor(
|
|||||||
val classDelegatedPropertiesArray = irClass.fields.singleOrNull {
|
val classDelegatedPropertiesArray = irClass.fields.singleOrNull {
|
||||||
it.origin == JvmLoweredDeclarationOrigin.GENERATED_PROPERTY_REFERENCE
|
it.origin == JvmLoweredDeclarationOrigin.GENERATED_PROPERTY_REFERENCE
|
||||||
}
|
}
|
||||||
val delegatedPropertyTracker = if (classDelegatedPropertiesArray != null) DelegatedPropertyOptimizer() else null
|
val delegatedPropertyTracker =
|
||||||
|
if (classDelegatedPropertiesArray != null) DelegatedPropertyOptimizer() else parentDelegatedPropertyTracker
|
||||||
|
|
||||||
val smap = context.getSourceMapper(irClass)
|
val smap = context.getSourceMapper(irClass)
|
||||||
for (declaration in irClass.declarations) {
|
for (declaration in irClass.declarations) {
|
||||||
@@ -132,6 +133,14 @@ abstract class ClassCodegen protected constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Generate nested classes at the end, to ensure that when the companion's metadata is serialized
|
||||||
|
// everything moved to the outer class has already been recorded in `globalSerializationBindings`.
|
||||||
|
for (declaration in irClass.declarations) {
|
||||||
|
if (declaration is IrClass) {
|
||||||
|
getOrCreate(declaration, context).generate(delegatedPropertyTracker)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Delay generation of <clinit> until the end because inline function calls
|
// Delay generation of <clinit> until the end because inline function calls
|
||||||
// might need to generate the `$assertionsDisabled` field initializer.
|
// might need to generate the `$assertionsDisabled` field initializer.
|
||||||
classInitializer?.let {
|
classInitializer?.let {
|
||||||
@@ -142,14 +151,6 @@ abstract class ClassCodegen protected constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Generate nested classes at the end, to ensure that when the companion's metadata is serialized
|
|
||||||
// everything moved to the outer class has already been recorded in `globalSerializationBindings`.
|
|
||||||
for (declaration in irClass.declarations) {
|
|
||||||
if (declaration is IrClass) {
|
|
||||||
getOrCreate(declaration, context).generate()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
object : AnnotationCodegen(this@ClassCodegen, context) {
|
object : AnnotationCodegen(this@ClassCodegen, context) {
|
||||||
override fun visitAnnotation(descr: String?, visible: Boolean): AnnotationVisitor {
|
override fun visitAnnotation(descr: String?, visible: Boolean): AnnotationVisitor {
|
||||||
return visitor.visitor.visitAnnotation(descr, visible)
|
return visitor.visitor.visitAnnotation(descr, visible)
|
||||||
@@ -208,7 +209,7 @@ abstract class ClassCodegen protected constructor(
|
|||||||
return null
|
return null
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract protected fun generateKotlinMetadataAnnotation()
|
protected abstract fun generateKotlinMetadataAnnotation()
|
||||||
|
|
||||||
private fun IrFile.loadSourceFilesInfo(): List<File> {
|
private fun IrFile.loadSourceFilesInfo(): List<File> {
|
||||||
val entry = fileEntry
|
val entry = fileEntry
|
||||||
@@ -274,14 +275,14 @@ abstract class ClassCodegen protected constructor(
|
|||||||
|
|
||||||
private val generatedInlineMethods = mutableMapOf<IrFunction, SMAPAndMethodNode>()
|
private val generatedInlineMethods = mutableMapOf<IrFunction, SMAPAndMethodNode>()
|
||||||
|
|
||||||
fun generateMethodNode(method: IrFunction): SMAPAndMethodNode {
|
fun generateMethodNode(method: IrFunction, delegatedPropertyOptimizer: DelegatedPropertyOptimizer?): SMAPAndMethodNode {
|
||||||
if (!method.isInline && !method.isSuspend) {
|
if (!method.isInline && !method.isSuspend) {
|
||||||
// Inline methods can be used multiple times by `IrSourceCompilerForInline`, suspend methods
|
// Inline methods can be used multiple times by `IrSourceCompilerForInline`, suspend methods
|
||||||
// could be used twice if they capture crossinline lambdas, and everything else is only
|
// could be used twice if they capture crossinline lambdas, and everything else is only
|
||||||
// generated by `generateMethod` below so does not need caching.
|
// generated by `generateMethod` below so does not need caching.
|
||||||
return FunctionCodegen(method, this).generate()
|
return FunctionCodegen(method, this).generate(delegatedPropertyOptimizer)
|
||||||
}
|
}
|
||||||
val (node, smap) = generatedInlineMethods.getOrPut(method) { FunctionCodegen(method, this).generate() }
|
val (node, smap) = generatedInlineMethods.getOrPut(method) { FunctionCodegen(method, this).generate(delegatedPropertyOptimizer) }
|
||||||
val copy = with(node) { MethodNode(Opcodes.API_VERSION, access, name, desc, signature, exceptions.toTypedArray()) }
|
val copy = with(node) { MethodNode(Opcodes.API_VERSION, access, name, desc, signature, exceptions.toTypedArray()) }
|
||||||
node.instructions.resetLabels()
|
node.instructions.resetLabels()
|
||||||
node.accept(copy)
|
node.accept(copy)
|
||||||
@@ -296,7 +297,7 @@ abstract class ClassCodegen protected constructor(
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
val (node, smap) = generateMethodNode(method)
|
val (node, smap) = generateMethodNode(method, delegatedPropertyOptimizer)
|
||||||
if (delegatedPropertyOptimizer != null) {
|
if (delegatedPropertyOptimizer != null) {
|
||||||
delegatedPropertyOptimizer.transform(node)
|
delegatedPropertyOptimizer.transform(node)
|
||||||
if (method.name.asString() == "<clinit>") {
|
if (method.name.asString() == "<clinit>") {
|
||||||
@@ -321,7 +322,7 @@ abstract class ClassCodegen protected constructor(
|
|||||||
if (method.isSuspend) continuationClassCodegen.value.visitor else visitor
|
if (method.isSuspend) continuationClassCodegen.value.visitor else visitor
|
||||||
}
|
}
|
||||||
if (continuationClassCodegen.isInitialized() || method.alwaysNeedsContinuation()) {
|
if (continuationClassCodegen.isInitialized() || method.alwaysNeedsContinuation()) {
|
||||||
continuationClassCodegen.value.generate()
|
continuationClassCodegen.value.generate(delegatedPropertyOptimizer)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
node.accept(smapCopyingVisitor)
|
node.accept(smapCopyingVisitor)
|
||||||
|
|||||||
+5
-3
@@ -104,7 +104,8 @@ class ExpressionCodegen(
|
|||||||
val mv: InstructionAdapter,
|
val mv: InstructionAdapter,
|
||||||
val classCodegen: ClassCodegen,
|
val classCodegen: ClassCodegen,
|
||||||
val inlinedInto: ExpressionCodegen?,
|
val inlinedInto: ExpressionCodegen?,
|
||||||
val smap: SourceMapper
|
val smap: SourceMapper,
|
||||||
|
val delegatedPropertyOptimizer: DelegatedPropertyOptimizer?,
|
||||||
) : IrElementVisitor<PromisedValue, BlockInfo>, BaseExpressionCodegen {
|
) : IrElementVisitor<PromisedValue, BlockInfo>, BaseExpressionCodegen {
|
||||||
|
|
||||||
var finallyDepth = 0
|
var finallyDepth = 0
|
||||||
@@ -557,7 +558,7 @@ class ExpressionCodegen(
|
|||||||
expression.receiver?.let { receiver ->
|
expression.receiver?.let { receiver ->
|
||||||
receiver.accept(this, data).materializeAt(ownerType, receiver.type)
|
receiver.accept(this, data).materializeAt(ownerType, receiver.type)
|
||||||
}
|
}
|
||||||
|
|
||||||
return if (expression is IrSetField) {
|
return if (expression is IrSetField) {
|
||||||
val value = expression.value.accept(this, data)
|
val value = expression.value.accept(this, data)
|
||||||
|
|
||||||
@@ -725,7 +726,8 @@ class ExpressionCodegen(
|
|||||||
override fun visitClass(declaration: IrClass, data: BlockInfo): PromisedValue {
|
override fun visitClass(declaration: IrClass, data: BlockInfo): PromisedValue {
|
||||||
if (declaration.origin != JvmLoweredDeclarationOrigin.CONTINUATION_CLASS) {
|
if (declaration.origin != JvmLoweredDeclarationOrigin.CONTINUATION_CLASS) {
|
||||||
closureReifiedMarkers[declaration] =
|
closureReifiedMarkers[declaration] =
|
||||||
ClassCodegen.getOrCreate(declaration, context, generateSequence(this) { it.inlinedInto }.last().irFunction).generate()
|
ClassCodegen.getOrCreate(declaration, context, generateSequence(this) { it.inlinedInto }.last().irFunction)
|
||||||
|
.generate(delegatedPropertyOptimizer)
|
||||||
}
|
}
|
||||||
return unitValue
|
return unitValue
|
||||||
}
|
}
|
||||||
|
|||||||
+14
-5
@@ -45,14 +45,14 @@ class FunctionCodegen(
|
|||||||
) {
|
) {
|
||||||
private val context = classCodegen.context
|
private val context = classCodegen.context
|
||||||
|
|
||||||
fun generate(): SMAPAndMethodNode =
|
fun generate(delegatedPropertyOptimizer: DelegatedPropertyOptimizer?): SMAPAndMethodNode =
|
||||||
try {
|
try {
|
||||||
doGenerate()
|
doGenerate(delegatedPropertyOptimizer)
|
||||||
} catch (e: Throwable) {
|
} catch (e: Throwable) {
|
||||||
throw RuntimeException("Exception while generating code for:\n${irFunction.dump()}", e)
|
throw RuntimeException("Exception while generating code for:\n${irFunction.dump()}", e)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun doGenerate(): SMAPAndMethodNode {
|
private fun doGenerate(delegatedPropertyOptimizer: DelegatedPropertyOptimizer?): SMAPAndMethodNode {
|
||||||
val signature = context.methodSignatureMapper.mapSignatureWithGeneric(irFunction)
|
val signature = context.methodSignatureMapper.mapSignatureWithGeneric(irFunction)
|
||||||
val flags = irFunction.calculateMethodFlags()
|
val flags = irFunction.calculateMethodFlags()
|
||||||
val methodNode = MethodNode(
|
val methodNode = MethodNode(
|
||||||
@@ -103,7 +103,7 @@ class FunctionCodegen(
|
|||||||
generateAnnotationDefaultValueIfNeeded(methodVisitor)
|
generateAnnotationDefaultValueIfNeeded(methodVisitor)
|
||||||
SMAP(listOf())
|
SMAP(listOf())
|
||||||
} else if (notForInline != null) {
|
} else if (notForInline != null) {
|
||||||
val (originalNode, smap) = classCodegen.generateMethodNode(notForInline)
|
val (originalNode, smap) = classCodegen.generateMethodNode(notForInline, delegatedPropertyOptimizer)
|
||||||
originalNode.accept(MethodBodyVisitor(methodVisitor))
|
originalNode.accept(MethodBodyVisitor(methodVisitor))
|
||||||
smap
|
smap
|
||||||
} else {
|
} else {
|
||||||
@@ -112,7 +112,16 @@ class FunctionCodegen(
|
|||||||
context.state.globalInlineContext.enterDeclaration(irFunction.suspendFunctionOriginal().descriptor)
|
context.state.globalInlineContext.enterDeclaration(irFunction.suspendFunctionOriginal().descriptor)
|
||||||
try {
|
try {
|
||||||
val adapter = InstructionAdapter(methodVisitor)
|
val adapter = InstructionAdapter(methodVisitor)
|
||||||
ExpressionCodegen(irFunction, signature, frameMap, adapter, classCodegen, inlinedInto, sourceMapper).generate()
|
ExpressionCodegen(
|
||||||
|
irFunction,
|
||||||
|
signature,
|
||||||
|
frameMap,
|
||||||
|
adapter,
|
||||||
|
classCodegen,
|
||||||
|
inlinedInto,
|
||||||
|
sourceMapper,
|
||||||
|
delegatedPropertyOptimizer,
|
||||||
|
).generate()
|
||||||
} finally {
|
} finally {
|
||||||
context.state.globalInlineContext.exitDeclaration()
|
context.state.globalInlineContext.exitDeclaration()
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -93,7 +93,7 @@ class IrSourceCompilerForInline(
|
|||||||
get() = codegen.smap
|
get() = codegen.smap
|
||||||
|
|
||||||
override fun generateLambdaBody(lambdaInfo: ExpressionLambda): SMAPAndMethodNode =
|
override fun generateLambdaBody(lambdaInfo: ExpressionLambda): SMAPAndMethodNode =
|
||||||
FunctionCodegen((lambdaInfo as IrExpressionLambdaImpl).function, codegen.classCodegen, codegen).generate()
|
FunctionCodegen((lambdaInfo as IrExpressionLambdaImpl).function, codegen.classCodegen, codegen).generate(codegen.delegatedPropertyOptimizer)
|
||||||
|
|
||||||
override fun doCreateMethodNodeFromSource(
|
override fun doCreateMethodNodeFromSource(
|
||||||
callableDescriptor: FunctionDescriptor,
|
callableDescriptor: FunctionDescriptor,
|
||||||
@@ -101,7 +101,7 @@ class IrSourceCompilerForInline(
|
|||||||
callDefault: Boolean,
|
callDefault: Boolean,
|
||||||
asmMethod: Method
|
asmMethod: Method
|
||||||
): SMAPAndMethodNode {
|
): SMAPAndMethodNode {
|
||||||
return ClassCodegen.getOrCreate(callee.parentAsClass, codegen.context).generateMethodNode(callee)
|
return ClassCodegen.getOrCreate(callee.parentAsClass, codegen.context).generateMethodNode(callee, null)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun hasFinallyBlocks() = data.hasFinallyBlocks()
|
override fun hasFinallyBlocks() = data.hasFinallyBlocks()
|
||||||
@@ -114,7 +114,7 @@ class IrSourceCompilerForInline(
|
|||||||
override fun createCodegenForExternalFinallyBlockGenerationOnNonLocalReturn(finallyNode: MethodNode, curFinallyDepth: Int) =
|
override fun createCodegenForExternalFinallyBlockGenerationOnNonLocalReturn(finallyNode: MethodNode, curFinallyDepth: Int) =
|
||||||
ExpressionCodegen(
|
ExpressionCodegen(
|
||||||
codegen.irFunction, codegen.signature, codegen.frameMap, InstructionAdapter(finallyNode), codegen.classCodegen,
|
codegen.irFunction, codegen.signature, codegen.frameMap, InstructionAdapter(finallyNode), codegen.classCodegen,
|
||||||
codegen.inlinedInto, codegen.smap
|
codegen.inlinedInto, codegen.smap, codegen.delegatedPropertyOptimizer
|
||||||
).also {
|
).also {
|
||||||
it.finallyDepth = curFinallyDepth
|
it.finallyDepth = curFinallyDepth
|
||||||
}
|
}
|
||||||
|
|||||||
+13
@@ -0,0 +1,13 @@
|
|||||||
|
// IGNORE_BACKEND_FIR: JVM_IR
|
||||||
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
|
operator fun Int.provideDelegate(thiz: Any?, property: KProperty<*>): String = property.name
|
||||||
|
inline operator fun String.getValue(thiz: Any?, property: KProperty<*>): String = property.name
|
||||||
|
|
||||||
|
fun box(): String = with(42) {
|
||||||
|
val O by this
|
||||||
|
O
|
||||||
|
} + {
|
||||||
|
val K by ""
|
||||||
|
K
|
||||||
|
}()
|
||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
|
inline operator fun String.getValue(thiz: Any?, property: KProperty<*>): String = property.name
|
||||||
|
|
||||||
|
fun box(): String = object {
|
||||||
|
val OK by ""
|
||||||
|
}.OK
|
||||||
+10
@@ -0,0 +1,10 @@
|
|||||||
|
import kotlin.reflect.KProperty
|
||||||
|
|
||||||
|
inline operator fun String.getValue(thiz: Any?, property: KProperty<*>): String = property.name
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
class Local {
|
||||||
|
val OK by ""
|
||||||
|
}
|
||||||
|
return Local().OK
|
||||||
|
}
|
||||||
+15
@@ -10798,6 +10798,21 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/inSeparateModuleWithNonNullParameter.kt");
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/inSeparateModuleWithNonNullParameter.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815.kt")
|
||||||
|
public void testKt40815() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815_2.kt")
|
||||||
|
public void testKt40815_2() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815_2.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815_3.kt")
|
||||||
|
public void testKt40815_3() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815_3.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("lazy.kt")
|
@TestMetadata("lazy.kt")
|
||||||
public void testLazy() throws Exception {
|
public void testLazy() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/lazy.kt");
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/lazy.kt");
|
||||||
|
|||||||
+15
@@ -10798,6 +10798,21 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/inSeparateModuleWithNonNullParameter.kt");
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/inSeparateModuleWithNonNullParameter.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815.kt")
|
||||||
|
public void testKt40815() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815_2.kt")
|
||||||
|
public void testKt40815_2() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815_2.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815_3.kt")
|
||||||
|
public void testKt40815_3() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815_3.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("lazy.kt")
|
@TestMetadata("lazy.kt")
|
||||||
public void testLazy() throws Exception {
|
public void testLazy() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/lazy.kt");
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/lazy.kt");
|
||||||
|
|||||||
+15
@@ -9573,6 +9573,21 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/inSeparateModuleWithNonNullParameter.kt");
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/inSeparateModuleWithNonNullParameter.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815.kt")
|
||||||
|
public void testKt40815() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815_2.kt")
|
||||||
|
public void testKt40815_2() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815_2.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815_3.kt")
|
||||||
|
public void testKt40815_3() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815_3.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("lazy.kt")
|
@TestMetadata("lazy.kt")
|
||||||
public void testLazy() throws Exception {
|
public void testLazy() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/lazy.kt");
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/lazy.kt");
|
||||||
|
|||||||
Generated
+15
-5
@@ -41,11 +41,6 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes
|
|||||||
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/annotations"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true);
|
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/annotations"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR_ES6, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("annotatedObjectLiteral.kt")
|
|
||||||
public void testAnnotatedObjectLiteral() throws Exception {
|
|
||||||
runTest("compiler/testData/codegen/box/annotations/annotatedObjectLiteral.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@TestMetadata("nestedAnnotation.kt")
|
@TestMetadata("nestedAnnotation.kt")
|
||||||
public void testNestedAnnotation() throws Exception {
|
public void testNestedAnnotation() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/annotations/nestedAnnotation.kt");
|
runTest("compiler/testData/codegen/box/annotations/nestedAnnotation.kt");
|
||||||
@@ -8223,6 +8218,21 @@ public class IrJsCodegenBoxES6TestGenerated extends AbstractIrJsCodegenBoxES6Tes
|
|||||||
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/inSeparateModuleWithNonNullParameter.kt");
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/inSeparateModuleWithNonNullParameter.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815.kt")
|
||||||
|
public void testKt40815() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815_2.kt")
|
||||||
|
public void testKt40815_2() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815_2.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815_3.kt")
|
||||||
|
public void testKt40815_3() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815_3.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("lazy.kt")
|
@TestMetadata("lazy.kt")
|
||||||
public void testLazy() throws Exception {
|
public void testLazy() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/lazy.kt");
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/lazy.kt");
|
||||||
|
|||||||
Generated
+15
-5
@@ -41,11 +41,6 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
|||||||
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/annotations"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
|
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/annotations"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS_IR, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("annotatedObjectLiteral.kt")
|
|
||||||
public void testAnnotatedObjectLiteral() throws Exception {
|
|
||||||
runTest("compiler/testData/codegen/box/annotations/annotatedObjectLiteral.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@TestMetadata("nestedAnnotation.kt")
|
@TestMetadata("nestedAnnotation.kt")
|
||||||
public void testNestedAnnotation() throws Exception {
|
public void testNestedAnnotation() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/annotations/nestedAnnotation.kt");
|
runTest("compiler/testData/codegen/box/annotations/nestedAnnotation.kt");
|
||||||
@@ -8223,6 +8218,21 @@ public class IrJsCodegenBoxTestGenerated extends AbstractIrJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/inSeparateModuleWithNonNullParameter.kt");
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/inSeparateModuleWithNonNullParameter.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815.kt")
|
||||||
|
public void testKt40815() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815_2.kt")
|
||||||
|
public void testKt40815_2() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815_2.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815_3.kt")
|
||||||
|
public void testKt40815_3() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815_3.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("lazy.kt")
|
@TestMetadata("lazy.kt")
|
||||||
public void testLazy() throws Exception {
|
public void testLazy() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/lazy.kt");
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/lazy.kt");
|
||||||
|
|||||||
+15
-5
@@ -41,11 +41,6 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
|||||||
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/annotations"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS, true);
|
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/codegen/box/annotations"), Pattern.compile("^(.+)\\.kt$"), null, TargetBackend.JS, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("annotatedObjectLiteral.kt")
|
|
||||||
public void testAnnotatedObjectLiteral() throws Exception {
|
|
||||||
runTest("compiler/testData/codegen/box/annotations/annotatedObjectLiteral.kt");
|
|
||||||
}
|
|
||||||
|
|
||||||
@TestMetadata("nestedAnnotation.kt")
|
@TestMetadata("nestedAnnotation.kt")
|
||||||
public void testNestedAnnotation() throws Exception {
|
public void testNestedAnnotation() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/annotations/nestedAnnotation.kt");
|
runTest("compiler/testData/codegen/box/annotations/nestedAnnotation.kt");
|
||||||
@@ -8223,6 +8218,21 @@ public class JsCodegenBoxTestGenerated extends AbstractJsCodegenBoxTest {
|
|||||||
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/inSeparateModuleWithNonNullParameter.kt");
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/inSeparateModuleWithNonNullParameter.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815.kt")
|
||||||
|
public void testKt40815() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815_2.kt")
|
||||||
|
public void testKt40815_2() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815_2.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt40815_3.kt")
|
||||||
|
public void testKt40815_3() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/kt40815_3.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("lazy.kt")
|
@TestMetadata("lazy.kt")
|
||||||
public void testLazy() throws Exception {
|
public void testLazy() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/lazy.kt");
|
runTest("compiler/testData/codegen/box/delegatedProperty/optimizedDelegatedProperties/lazy.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user