diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java index 2824a052eac..4f2e73f555e 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionCodegen.java @@ -659,8 +659,6 @@ public class FunctionCodegen { genNotNullAssertionsForParameters(new InstructionAdapter(mv), parentCodegen.state, functionDescriptor, frameMap); } - parentCodegen.beforeMethodBody(mv); - methodEnd = new Label(); context.setMethodEndLabel(methodEnd); strategy.generateBody(mv, frameMap, signature, context, parentCodegen); diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/MemberCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/MemberCodegen.java index 9ce0e225a0c..eedf6daab82 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/MemberCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/MemberCodegen.java @@ -455,17 +455,13 @@ public abstract class MemberCodegen", "()V", null, null); clInit = new ExpressionCodegen(mv, new FrameMap(), Type.VOID_TYPE, context.intoFunction(clInitDescriptor), state, this); } return clInit; } - @NotNull - public MethodVisitor createClInitMethodVisitor(@NotNull DeclarationDescriptor contextDescriptor) { - return v.newMethod(JvmDeclarationOriginKt.OtherOrigin(contextDescriptor), ACC_STATIC, "", "()V", null, null); - } - @NotNull private SimpleFunctionDescriptorImpl createClInitFunctionDescriptor(@NotNull DeclarationDescriptor descriptor) { SimpleFunctionDescriptorImpl clInit = SimpleFunctionDescriptorImpl.create(descriptor, Annotations.Companion.getEMPTY(), @@ -496,9 +492,6 @@ public abstract class MemberCodegen(state, null, partContext, file, v) { private val partType = partContext.filePartType private val facadeClassType = partContext.multifileClassType - private val staticInitClassType = Type.getObjectType(partType.internalName + STATIC_INIT_CLASS_SUFFIX) - private val partClassAttributes = - if (shouldGeneratePartHierarchy) - OPEN_PART_CLASS_ATTRIBUTES - else - FINAL_PART_CLASS_ATTRIBUTES - - private fun ClassBuilder.newSpecialMethod(originDescriptor: DeclarationDescriptor, name: String) = - newMethod(OtherOrigin(originDescriptor), Opcodes.ACC_STATIC, name, "()V", null, null) - - private val staticInitClassBuilder = ClassBuilderOnDemand { - state.factory.newVisitor(MultifileClass(file, packageFragment), staticInitClassType, file).apply { - defineClass(file, state.classFileVersion, STATE_INITIALIZER_CLASS_ATTRIBUTES, - staticInitClassType.internalName, null, "java/lang/Object", ArrayUtil.EMPTY_STRING_ARRAY) - - visitSource(file.name, null) + init { + if (shouldGeneratePartHierarchy && file.declarations.any { it is KtProperty && shouldInitializeProperty(it) }) { + throw AssertionError("State is not allowed in multi-file classes with -Xmultifile-parts-inherit") } } - private val requiresDeferredStaticInitialization = - shouldGeneratePartHierarchy && file.declarations.any { - it is KtProperty && shouldInitializeProperty(it) - } - override fun generate() { if (!state.classBuilderMode.generateMultiFileFacadePartClasses) return @@ -91,41 +67,15 @@ class MultifileClassPartCodegen( visitEnd() } } - - if (requiresDeferredStaticInitialization) { - staticInitClassBuilder.apply { - newField(OtherOrigin(packageFragment), Opcodes.ACC_STATIC or Opcodes.ACC_PRIVATE or Opcodes.ACC_VOLATILE, - CLINIT_SYNC_NAME, "I", null, null) - - newSpecialMethod(packageFragment, CLINIT_TRIGGER_NAME).apply { - if (generateBodies) { - visitCode() - visitFieldInsn(Opcodes.GETSTATIC, staticInitClassType.internalName, CLINIT_SYNC_NAME, "I") - visitInsn(Opcodes.RETURN) - visitMaxs(1, 0) - } - visitEnd() - } - - newSpecialMethod(packageFragment, "").apply { - if (generateBodies) { - visitCode() - visitMethodInsn(Opcodes.INVOKESTATIC, partType.internalName, DEFERRED_PART_CLINIT_NAME, "()V", false) - visitInsn(Opcodes.ICONST_0) - visitFieldInsn(Opcodes.PUTSTATIC, staticInitClassType.internalName, CLINIT_SYNC_NAME, "I") - visitInsn(Opcodes.RETURN) - visitMaxs(1, 0) - } - visitEnd() - } - - writeSyntheticClassMetadata(this, state) - } - } } override fun generateDeclaration() { - v.defineClass(element, state.classFileVersion, partClassAttributes, partType.internalName, null, superClassInternalName, ArrayUtil.EMPTY_STRING_ARRAY) + val access = if (shouldGeneratePartHierarchy) 0 else Opcodes.ACC_SYNTHETIC or Opcodes.ACC_FINAL + + v.defineClass( + element, state.classFileVersion, access or Opcodes.ACC_SUPER, partType.internalName, null, superClassInternalName, + ArrayUtil.EMPTY_STRING_ARRAY + ) v.visitSource(element.name, null) generatePropertyMetadataArrayFieldIfNeeded(partType) @@ -143,20 +93,6 @@ class MultifileClassPartCodegen( } } - override fun createClInitMethodVisitor(contextDescriptor: DeclarationDescriptor): MethodVisitor = - if (requiresDeferredStaticInitialization) - v.newSpecialMethod(contextDescriptor, DEFERRED_PART_CLINIT_NAME) - else - super.createClInitMethodVisitor(contextDescriptor) - - override fun done() { - super.done() - - if (staticInitClassBuilder.isComputed) { - staticInitClassBuilder.done() - } - } - override fun generateKotlinMetadataAnnotation() { val (serializer, packageProto) = PackagePartCodegen.serializePackagePartMembers(this, partType) @@ -171,28 +107,4 @@ class MultifileClassPartCodegen( override fun generateSyntheticPartsAfterBody() { generateSyntheticAccessors() } - - override fun beforeMethodBody(mv: MethodVisitor) { - if (requiresDeferredStaticInitialization) { - mv.visitMethodInsn(Opcodes.INVOKESTATIC, staticInitClassType.internalName, CLINIT_TRIGGER_NAME, "()V", false) - } - } - - companion object { - private val OPEN_PART_CLASS_ATTRIBUTES = Opcodes.ACC_SUPER - private val FINAL_PART_CLASS_ATTRIBUTES = Opcodes.ACC_SYNTHETIC or Opcodes.ACC_SUPER or Opcodes.ACC_FINAL - private val STATE_INITIALIZER_CLASS_ATTRIBUTES = Opcodes.ACC_SYNTHETIC or Opcodes.ACC_SUPER or Opcodes.ACC_FINAL - - private val STATIC_INIT_CLASS_SUFFIX = "__Clinit" - private val CLINIT_TRIGGER_NAME = "\$\$clinitTrigger" - private val CLINIT_SYNC_NAME = "\$\$clinitSync" - private val DEFERRED_PART_CLINIT_NAME = "\$\$clinit" - - @JvmStatic fun isStaticInitTrigger(insn: AbstractInsnNode) = - insn.opcode == Opcodes.INVOKESTATIC - && insn is MethodInsnNode - && insn.owner.endsWith(STATIC_INIT_CLASS_SUFFIX) - && insn.name == CLINIT_TRIGGER_NAME - && insn.desc == "()V" - } } diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt index e8890eeaa8d..606abcdf958 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/inline/InlineCodegen.kt @@ -287,7 +287,6 @@ abstract class InlineCodegen( sourceCompiler.generateAndInsertFinallyBlocks( adapter, infos, (remapper.remap(parameters.argsSizeOnStack + 1).value as StackValue.Local).index ) - removeStaticInitializationTrigger(adapter) if (!sourceCompiler.isFinallyMarkerRequired()) { removeFinallyMarkers(adapter) } @@ -588,21 +587,6 @@ abstract class InlineCodegen( return (name == "arrayOf" || name == "emptyArray") && callableDescriptor.containingDeclaration is BuiltInsPackageFragment } - private fun removeStaticInitializationTrigger(methodNode: MethodNode) { - val insnList = methodNode.instructions - var insn: AbstractInsnNode? = insnList.first - while (insn != null) { - if (MultifileClassPartCodegen.isStaticInitTrigger(insn)) { - val clinitTriggerCall = insn - insn = insn.next - insnList.remove(clinitTriggerCall) - } else { - insn = insn.next - } - } - } - - /*descriptor is null for captured vars*/ private fun shouldPutGeneralValue(type: Type, kotlinType: KotlinType?, stackValue: StackValue): Boolean { //remap only inline functions (and maybe non primitives) diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmMultifileClassStateChecker.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmMultifileClassStateChecker.kt new file mode 100644 index 00000000000..e0f4a8c9c2c --- /dev/null +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/checkers/JvmMultifileClassStateChecker.kt @@ -0,0 +1,35 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.resolve.jvm.checkers + +import org.jetbrains.kotlin.config.JvmAnalysisFlags +import org.jetbrains.kotlin.descriptors.DeclarationDescriptor +import org.jetbrains.kotlin.descriptors.PropertyDescriptor +import org.jetbrains.kotlin.fileClasses.JvmFileClassUtil +import org.jetbrains.kotlin.psi.KtDeclaration +import org.jetbrains.kotlin.resolve.BindingContext +import org.jetbrains.kotlin.resolve.DescriptorUtils +import org.jetbrains.kotlin.resolve.checkers.DeclarationChecker +import org.jetbrains.kotlin.resolve.checkers.DeclarationCheckerContext +import org.jetbrains.kotlin.resolve.jvm.diagnostics.ErrorsJvm + +object JvmMultifileClassStateChecker : DeclarationChecker { + override fun check(declaration: KtDeclaration, descriptor: DeclarationDescriptor, context: DeclarationCheckerContext) { + if (descriptor !is PropertyDescriptor || + !DescriptorUtils.isTopLevelDeclaration(descriptor) || + descriptor.isExpect || + descriptor.isConst) return + + if (!context.languageVersionSettings.getFlag(JvmAnalysisFlags.inheritMultifileParts)) return + + if (!JvmFileClassUtil.getFileClassInfoNoResolve(declaration.containingKtFile).withJvmMultifileClass) return + + if (@Suppress("DEPRECATION") descriptor.isDelegated || + context.trace.bindingContext.get(BindingContext.BACKING_FIELD_REQUIRED, descriptor) == true) { + context.trace.report(ErrorsJvm.STATE_IN_MULTIFILE_CLASS.on(declaration)) + } + } +} diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/DefaultErrorMessagesJvm.java b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/DefaultErrorMessagesJvm.java index 44e4a7808e4..50d750ea8ec 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/DefaultErrorMessagesJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/DefaultErrorMessagesJvm.java @@ -72,6 +72,8 @@ public class DefaultErrorMessagesJvm implements DefaultErrorMessages.Extension { MAP.put(JVM_PACKAGE_NAME_MUST_BE_VALID_NAME, "''@JvmPackageName'' annotation value must be a valid dot-qualified name of a package"); MAP.put(JVM_PACKAGE_NAME_NOT_SUPPORTED_IN_FILES_WITH_CLASSES, "''@JvmPackageName'' annotation is not supported for files with class declarations"); + MAP.put(STATE_IN_MULTIFILE_CLASS, "Non-const property with backing field or delegate is not allowed in a multi-file class if -Xmultifile-parts-inherit is enabled"); + MAP.put(NO_REFLECTION_IN_CLASS_PATH, "Call uses reflection API which is not found in compilation classpath. " + "Make sure you have kotlin-reflect.jar in the classpath"); diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/ErrorsJvm.java b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/ErrorsJvm.java index e14470ef8b7..bc65fe6b1d2 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/ErrorsJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/diagnostics/ErrorsJvm.java @@ -73,6 +73,8 @@ public interface ErrorsJvm { DiagnosticFactory0 JVM_PACKAGE_NAME_MUST_BE_VALID_NAME = DiagnosticFactory0.create(ERROR); DiagnosticFactory0 JVM_PACKAGE_NAME_NOT_SUPPORTED_IN_FILES_WITH_CLASSES = DiagnosticFactory0.create(ERROR); + DiagnosticFactory0 STATE_IN_MULTIFILE_CLASS = DiagnosticFactory0.create(ERROR); + DiagnosticFactory0 INTERFACE_CANT_CALL_DEFAULT_METHOD_VIA_SUPER = DiagnosticFactory0.create(ERROR); DiagnosticFactory0 SUBCLASS_CANT_CALL_COMPANION_PROTECTED_NON_STATIC = DiagnosticFactory0.create(ERROR); diff --git a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt index a4bdffe4944..394bd32fd41 100644 --- a/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt +++ b/compiler/frontend.java/src/org/jetbrains/kotlin/resolve/jvm/platform/JvmPlatformConfigurator.kt @@ -37,7 +37,8 @@ object JvmPlatformConfigurator : PlatformConfiguratorBase( StrictfpApplicabilityChecker(), ExpectedActualDeclarationChecker(listOf(JavaActualAnnotationArgumentExtractor())), JvmAnnotationsTargetNonExistentAccessorChecker(), - BadInheritedJavaSignaturesChecker + BadInheritedJavaSignaturesChecker, + JvmMultifileClassStateChecker ), additionalCallCheckers = listOf( diff --git a/compiler/testData/codegen/box/multifileClasses/optimized/callableRefToVal.kt b/compiler/testData/codegen/box/multifileClasses/optimized/callableRefToConstVal.kt similarity index 92% rename from compiler/testData/codegen/box/multifileClasses/optimized/callableRefToVal.kt rename to compiler/testData/codegen/box/multifileClasses/optimized/callableRefToConstVal.kt index 9db0284e2e8..909d9aca62d 100644 --- a/compiler/testData/codegen/box/multifileClasses/optimized/callableRefToVal.kt +++ b/compiler/testData/codegen/box/multifileClasses/optimized/callableRefToConstVal.kt @@ -13,4 +13,4 @@ fun box(): String = ::OK.get() @file:[JvmName("MultifileClass") JvmMultifileClass] package a -val OK = run { "OK" } +const val OK = "OK" diff --git a/compiler/testData/codegen/box/multifileClasses/optimized/callableRefToInternalValInline.kt b/compiler/testData/codegen/box/multifileClasses/optimized/callableRefToInternalConstValInline.kt similarity index 90% rename from compiler/testData/codegen/box/multifileClasses/optimized/callableRefToInternalValInline.kt rename to compiler/testData/codegen/box/multifileClasses/optimized/callableRefToInternalConstValInline.kt index d60dc6c3dba..5db710738d0 100644 --- a/compiler/testData/codegen/box/multifileClasses/optimized/callableRefToInternalValInline.kt +++ b/compiler/testData/codegen/box/multifileClasses/optimized/callableRefToInternalConstValInline.kt @@ -13,7 +13,7 @@ fun box(): String = okInline() @file:[JvmName("MultifileClass") JvmMultifileClass] package a -internal val ok = run { "OK" } +internal const val ok = "OK" internal inline fun okInline() = ::ok.get() diff --git a/compiler/testData/codegen/box/multifileClasses/optimized/callableRefToPrivateVal.kt b/compiler/testData/codegen/box/multifileClasses/optimized/callableRefToPrivateConstVal.kt similarity index 90% rename from compiler/testData/codegen/box/multifileClasses/optimized/callableRefToPrivateVal.kt rename to compiler/testData/codegen/box/multifileClasses/optimized/callableRefToPrivateConstVal.kt index 4c317cb3920..b5da9b8e626 100644 --- a/compiler/testData/codegen/box/multifileClasses/optimized/callableRefToPrivateVal.kt +++ b/compiler/testData/codegen/box/multifileClasses/optimized/callableRefToPrivateConstVal.kt @@ -13,7 +13,7 @@ fun box(): String = OK.okRef.get() @file:[JvmName("MultifileClass") JvmMultifileClass] package a -private val ok = run { "OK" } +private const val ok = "OK" object OK { val okRef = ::ok diff --git a/compiler/testData/codegen/box/multifileClasses/optimized/deferredStaticInitialization.kt b/compiler/testData/codegen/box/multifileClasses/optimized/deferredStaticInitialization.kt deleted file mode 100644 index edf59bbe8d3..00000000000 --- a/compiler/testData/codegen/box/multifileClasses/optimized/deferredStaticInitialization.kt +++ /dev/null @@ -1,42 +0,0 @@ -// IGNORE_BACKEND: JVM_IR -// TARGET_BACKEND: JVM -// IGNORE_LIGHT_ANALYSIS -// WITH_RUNTIME -// !INHERIT_MULTIFILE_PARTS -// FILE: box.kt - -import a.* - -fun box(): String = OK - -// FILE: part1.kt -@file:[JvmName("MultifileClass") JvmMultifileClass] -package a - -val O = run { "O" } - -// FILE: part2.kt -@file:[JvmName("MultifileClass") JvmMultifileClass] -package a - -const val K = "K" - -// FILE: part3.kt -@file:[JvmName("MultifileClass") JvmMultifileClass] -package a - -val OK: String = run { O + K } - -// FILE: irrelevantPart.kt -@file:[JvmName("MultifileClass") JvmMultifileClass] -package a - -val X1: Nothing = - throw AssertionError("X1 should not be initialized") - -// FILE: reallyIrrelevantPart.kt -@file:[JvmName("MultifileClass") JvmMultifileClass] -package a - -val X2: Nothing = - throw AssertionError("X2 should not be initialized") diff --git a/compiler/testData/codegen/box/multifileClasses/optimized/delegatedVal.kt b/compiler/testData/codegen/box/multifileClasses/optimized/delegatedVal.kt deleted file mode 100644 index 7d081020bc0..00000000000 --- a/compiler/testData/codegen/box/multifileClasses/optimized/delegatedVal.kt +++ /dev/null @@ -1,16 +0,0 @@ -// IGNORE_BACKEND: JVM_IR -// TARGET_BACKEND: JVM -// IGNORE_LIGHT_ANALYSIS -// WITH_RUNTIME -// !INHERIT_MULTIFILE_PARTS -// FILE: box.kt - -import a.* - -fun box(): String = OK - -// FILE: part1.kt -@file:[JvmName("MultifileClass") JvmMultifileClass] -package a - -val OK: String by lazy { "OK" } diff --git a/compiler/testData/codegen/box/multifileClasses/optimized/initializePrivateVal.kt b/compiler/testData/codegen/box/multifileClasses/optimized/initializePrivateVal.kt deleted file mode 100644 index 7cea78b8a09..00000000000 --- a/compiler/testData/codegen/box/multifileClasses/optimized/initializePrivateVal.kt +++ /dev/null @@ -1,18 +0,0 @@ -// IGNORE_BACKEND: JVM_IR -// TARGET_BACKEND: JVM -// IGNORE_LIGHT_ANALYSIS -// WITH_RUNTIME -// !INHERIT_MULTIFILE_PARTS -// FILE: box.kt - -import a.* - -fun box(): String = ok() - -// FILE: part1.kt -@file:[JvmName("MultifileClass") JvmMultifileClass] -package a - -private val OK = run { "OK" } - -fun ok() = OK diff --git a/compiler/testData/codegen/box/multifileClasses/optimized/initializePublicVal.kt b/compiler/testData/codegen/box/multifileClasses/optimized/initializePublicVal.kt deleted file mode 100644 index b644f5c4170..00000000000 --- a/compiler/testData/codegen/box/multifileClasses/optimized/initializePublicVal.kt +++ /dev/null @@ -1,16 +0,0 @@ -// IGNORE_BACKEND: JVM_IR -// TARGET_BACKEND: JVM -// IGNORE_LIGHT_ANALYSIS -// WITH_RUNTIME -// !INHERIT_MULTIFILE_PARTS -// FILE: box.kt - -import a.* - -fun box(): String = OK - -// FILE: part1.kt -@file:[JvmName("MultifileClass") JvmMultifileClass] -package a - -public val OK = run { "OK" } diff --git a/compiler/testData/codegen/box/multifileClasses/optimized/overlappingVals.kt b/compiler/testData/codegen/box/multifileClasses/optimized/overlappingVals.kt deleted file mode 100644 index 58eeb0f0b94..00000000000 --- a/compiler/testData/codegen/box/multifileClasses/optimized/overlappingVals.kt +++ /dev/null @@ -1,30 +0,0 @@ -// IGNORE_BACKEND: JVM_IR -// TARGET_BACKEND: JVM -// IGNORE_LIGHT_ANALYSIS -// WITH_RUNTIME -// !INHERIT_MULTIFILE_PARTS -// FILE: box.kt - -import a.* - -fun box(): String = ok() - -// FILE: part1.kt -@file:[JvmName("MultifileClass") JvmMultifileClass] -package a - -private val overlapping = run { "oops #1" } - -// FILE: part2.kt -@file:[JvmName("MultifileClass") JvmMultifileClass] -package a - -private val overlapping = run { "OK" } - -fun ok() = overlapping - -// FILE: part3.kt -@file:[JvmName("MultifileClass") JvmMultifileClass] -package a - -private val overlapping = run { "oops #2" } diff --git a/compiler/testData/codegen/box/multifileClasses/optimized/valAccessFromInlineFunCalledFromJava.kt b/compiler/testData/codegen/box/multifileClasses/optimized/valAccessFromInlineFunCalledFromJava.kt deleted file mode 100644 index f334f8239ca..00000000000 --- a/compiler/testData/codegen/box/multifileClasses/optimized/valAccessFromInlineFunCalledFromJava.kt +++ /dev/null @@ -1,30 +0,0 @@ -// IGNORE_BACKEND: JVM_IR -// TARGET_BACKEND: JVM -// IGNORE_LIGHT_ANALYSIS -// WITH_RUNTIME -// !INHERIT_MULTIFILE_PARTS -// FILE: box.kt - -import a.* - -fun box(): String = J.ok() - -// FILE: part1.kt -@file:[JvmName("MC") JvmMultifileClass] -package a - -val O = run { "O" } -const val K = "K" - -inline fun ok(): String { - return O + K -} - -// FILE: J.java -import a.MC; - -public class J { - public static String ok() { - return MC.ok(); - } -} diff --git a/compiler/testData/codegen/box/multifileClasses/optimized/valAccessFromInlinedToDifferentPackage.kt b/compiler/testData/codegen/box/multifileClasses/optimized/valAccessFromInlinedToDifferentPackage.kt deleted file mode 100644 index 5f4c1f015e1..00000000000 --- a/compiler/testData/codegen/box/multifileClasses/optimized/valAccessFromInlinedToDifferentPackage.kt +++ /dev/null @@ -1,22 +0,0 @@ -// IGNORE_BACKEND: JVM_IR -// TARGET_BACKEND: JVM -// IGNORE_LIGHT_ANALYSIS -// WITH_RUNTIME -// !INHERIT_MULTIFILE_PARTS -// FILE: box.kt - -import a.* - -fun box(): String = ok {} - -// FILE: part1.kt -@file:[JvmName("MultifileClass") JvmMultifileClass] -package a - -val O = run { "O" } -const val K = "K" - -inline fun ok(block: () -> Unit): String { - block() - return O + K -} diff --git a/compiler/testData/codegen/box/multifileClasses/optimized/valWithAccessor.kt b/compiler/testData/codegen/box/multifileClasses/optimized/valWithAccessor.kt deleted file mode 100644 index 2c06c9b4c8f..00000000000 --- a/compiler/testData/codegen/box/multifileClasses/optimized/valWithAccessor.kt +++ /dev/null @@ -1,19 +0,0 @@ -// TARGET_BACKEND: JVM -// IGNORE_LIGHT_ANALYSIS -// WITH_RUNTIME -// !INHERIT_MULTIFILE_PARTS -// FILE: box.kt - -import a.* - -fun box(): String = OK().ok - -// FILE: part1.kt -@file:[JvmName("MultifileClass") JvmMultifileClass] -package a - -private val reallyOk = run { "OK" } - -class OK() { - val ok = reallyOk -} diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java index 0d0876ee56e..c150bfc674a 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BlackBoxCodegenTestGenerated.java @@ -15714,24 +15714,24 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/multifileClasses/optimized"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JVM, true); } + @TestMetadata("callableRefToConstVal.kt") + public void testCallableRefToConstVal() throws Exception { + runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToConstVal.kt"); + } + @TestMetadata("callableRefToFun.kt") public void testCallableRefToFun() throws Exception { runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToFun.kt"); } - @TestMetadata("callableRefToInternalValInline.kt") - public void testCallableRefToInternalValInline() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToInternalValInline.kt"); + @TestMetadata("callableRefToInternalConstValInline.kt") + public void testCallableRefToInternalConstValInline() throws Exception { + runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToInternalConstValInline.kt"); } - @TestMetadata("callableRefToPrivateVal.kt") - public void testCallableRefToPrivateVal() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToPrivateVal.kt"); - } - - @TestMetadata("callableRefToVal.kt") - public void testCallableRefToVal() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToVal.kt"); + @TestMetadata("callableRefToPrivateConstVal.kt") + public void testCallableRefToPrivateConstVal() throws Exception { + runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToPrivateConstVal.kt"); } @TestMetadata("calls.kt") @@ -15739,50 +15739,10 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { runTest("compiler/testData/codegen/box/multifileClasses/optimized/calls.kt"); } - @TestMetadata("deferredStaticInitialization.kt") - public void testDeferredStaticInitialization() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/deferredStaticInitialization.kt"); - } - - @TestMetadata("delegatedVal.kt") - public void testDelegatedVal() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/delegatedVal.kt"); - } - - @TestMetadata("initializePrivateVal.kt") - public void testInitializePrivateVal() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/initializePrivateVal.kt"); - } - - @TestMetadata("initializePublicVal.kt") - public void testInitializePublicVal() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/initializePublicVal.kt"); - } - @TestMetadata("overlappingFuns.kt") public void testOverlappingFuns() throws Exception { runTest("compiler/testData/codegen/box/multifileClasses/optimized/overlappingFuns.kt"); } - - @TestMetadata("overlappingVals.kt") - public void testOverlappingVals() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/overlappingVals.kt"); - } - - @TestMetadata("valAccessFromInlineFunCalledFromJava.kt") - public void testValAccessFromInlineFunCalledFromJava() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/valAccessFromInlineFunCalledFromJava.kt"); - } - - @TestMetadata("valAccessFromInlinedToDifferentPackage.kt") - public void testValAccessFromInlinedToDifferentPackage() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/valAccessFromInlinedToDifferentPackage.kt"); - } - - @TestMetadata("valWithAccessor.kt") - public void testValWithAccessor() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/valWithAccessor.kt"); - } } } diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java index 3e2d2baa0df..69c8d6fa570 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/LightAnalysisModeTestGenerated.java @@ -15714,24 +15714,24 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/multifileClasses/optimized"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JVM, true); } + @TestMetadata("callableRefToConstVal.kt") + public void testCallableRefToConstVal() throws Exception { + runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToConstVal.kt"); + } + @TestMetadata("callableRefToFun.kt") public void testCallableRefToFun() throws Exception { runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToFun.kt"); } - @TestMetadata("callableRefToInternalValInline.kt") - public void testCallableRefToInternalValInline() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToInternalValInline.kt"); + @TestMetadata("callableRefToInternalConstValInline.kt") + public void testCallableRefToInternalConstValInline() throws Exception { + runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToInternalConstValInline.kt"); } - @TestMetadata("callableRefToPrivateVal.kt") - public void testCallableRefToPrivateVal() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToPrivateVal.kt"); - } - - @TestMetadata("callableRefToVal.kt") - public void testCallableRefToVal() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToVal.kt"); + @TestMetadata("callableRefToPrivateConstVal.kt") + public void testCallableRefToPrivateConstVal() throws Exception { + runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToPrivateConstVal.kt"); } @TestMetadata("calls.kt") @@ -15739,50 +15739,10 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes runTest("compiler/testData/codegen/box/multifileClasses/optimized/calls.kt"); } - @TestMetadata("deferredStaticInitialization.kt") - public void testDeferredStaticInitialization() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/deferredStaticInitialization.kt"); - } - - @TestMetadata("delegatedVal.kt") - public void testDelegatedVal() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/delegatedVal.kt"); - } - - @TestMetadata("initializePrivateVal.kt") - public void testInitializePrivateVal() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/initializePrivateVal.kt"); - } - - @TestMetadata("initializePublicVal.kt") - public void testInitializePublicVal() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/initializePublicVal.kt"); - } - @TestMetadata("overlappingFuns.kt") public void testOverlappingFuns() throws Exception { runTest("compiler/testData/codegen/box/multifileClasses/optimized/overlappingFuns.kt"); } - - @TestMetadata("overlappingVals.kt") - public void testOverlappingVals() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/overlappingVals.kt"); - } - - @TestMetadata("valAccessFromInlineFunCalledFromJava.kt") - public void testValAccessFromInlineFunCalledFromJava() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/valAccessFromInlineFunCalledFromJava.kt"); - } - - @TestMetadata("valAccessFromInlinedToDifferentPackage.kt") - public void testValAccessFromInlinedToDifferentPackage() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/valAccessFromInlinedToDifferentPackage.kt"); - } - - @TestMetadata("valWithAccessor.kt") - public void testValWithAccessor() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/valWithAccessor.kt"); - } } } diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java index f6a3c917b41..3c9d1f07952 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBlackBoxCodegenTestGenerated.java @@ -15719,24 +15719,24 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("compiler/testData/codegen/box/multifileClasses/optimized"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JVM_IR, true); } + @TestMetadata("callableRefToConstVal.kt") + public void testCallableRefToConstVal() throws Exception { + runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToConstVal.kt"); + } + @TestMetadata("callableRefToFun.kt") public void testCallableRefToFun() throws Exception { runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToFun.kt"); } - @TestMetadata("callableRefToInternalValInline.kt") - public void testCallableRefToInternalValInline() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToInternalValInline.kt"); + @TestMetadata("callableRefToInternalConstValInline.kt") + public void testCallableRefToInternalConstValInline() throws Exception { + runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToInternalConstValInline.kt"); } - @TestMetadata("callableRefToPrivateVal.kt") - public void testCallableRefToPrivateVal() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToPrivateVal.kt"); - } - - @TestMetadata("callableRefToVal.kt") - public void testCallableRefToVal() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToVal.kt"); + @TestMetadata("callableRefToPrivateConstVal.kt") + public void testCallableRefToPrivateConstVal() throws Exception { + runTest("compiler/testData/codegen/box/multifileClasses/optimized/callableRefToPrivateConstVal.kt"); } @TestMetadata("calls.kt") @@ -15744,50 +15744,10 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes runTest("compiler/testData/codegen/box/multifileClasses/optimized/calls.kt"); } - @TestMetadata("deferredStaticInitialization.kt") - public void testDeferredStaticInitialization() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/deferredStaticInitialization.kt"); - } - - @TestMetadata("delegatedVal.kt") - public void testDelegatedVal() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/delegatedVal.kt"); - } - - @TestMetadata("initializePrivateVal.kt") - public void testInitializePrivateVal() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/initializePrivateVal.kt"); - } - - @TestMetadata("initializePublicVal.kt") - public void testInitializePublicVal() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/initializePublicVal.kt"); - } - @TestMetadata("overlappingFuns.kt") public void testOverlappingFuns() throws Exception { runTest("compiler/testData/codegen/box/multifileClasses/optimized/overlappingFuns.kt"); } - - @TestMetadata("overlappingVals.kt") - public void testOverlappingVals() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/overlappingVals.kt"); - } - - @TestMetadata("valAccessFromInlineFunCalledFromJava.kt") - public void testValAccessFromInlineFunCalledFromJava() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/valAccessFromInlineFunCalledFromJava.kt"); - } - - @TestMetadata("valAccessFromInlinedToDifferentPackage.kt") - public void testValAccessFromInlinedToDifferentPackage() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/valAccessFromInlinedToDifferentPackage.kt"); - } - - @TestMetadata("valWithAccessor.kt") - public void testValWithAccessor() throws Exception { - runTest("compiler/testData/codegen/box/multifileClasses/optimized/valWithAccessor.kt"); - } } }