From 2e73559f33cd74929c1db50b08f957fab29115db Mon Sep 17 00:00:00 2001 From: Michael Bogdanov Date: Thu, 24 Dec 2015 10:40:30 +0300 Subject: [PATCH] Removed 'INSTANCE$' field generation --- .../jetbrains/kotlin/codegen/FieldInfo.java | 12 +--- .../codegen/ImplementationBodyCodegen.java | 8 --- .../jetbrains/kotlin/codegen/StackValue.java | 6 +- .../lightClasses/object/SimpleObject.java | 4 -- .../bytecodeText/constValsGetterDeprecated.kt | 4 +- .../codegen/bytecodeText/constants/kt9532.kt | 4 +- .../bytecodeText/staticFields/object.kt | 3 +- .../jetbrains/kotlin/load/java/JvmAbi.java | 1 - idea/src/META-INF/plugin.xml | 8 --- .../DeprecatedObjectInstanceFieldReference.kt | 65 ------------------- .../deprecatedObjectInstanceField/.inspection | 1 - .../basic.after.java | 8 --- .../basic.before.Main.java | 8 --- .../basic.before.data.kt | 4 -- .../staticImport.after.java | 8 --- .../staticImport.before.Main.java | 8 --- .../staticImport.before.data.kt | 5 -- .../referenceInJava/ObjectInstance.java | 2 +- .../QuickFixMultiFileTestGenerated.java | 21 ------ 19 files changed, 10 insertions(+), 170 deletions(-) delete mode 100644 idea/src/org/jetbrains/kotlin/idea/inspections/DeprecatedObjectInstanceFieldReference.kt delete mode 100644 idea/testData/quickfix/migration/deprecatedObjectInstanceField/.inspection delete mode 100644 idea/testData/quickfix/migration/deprecatedObjectInstanceField/basic.after.java delete mode 100644 idea/testData/quickfix/migration/deprecatedObjectInstanceField/basic.before.Main.java delete mode 100644 idea/testData/quickfix/migration/deprecatedObjectInstanceField/basic.before.data.kt delete mode 100644 idea/testData/quickfix/migration/deprecatedObjectInstanceField/staticImport.after.java delete mode 100644 idea/testData/quickfix/migration/deprecatedObjectInstanceField/staticImport.before.Main.java delete mode 100644 idea/testData/quickfix/migration/deprecatedObjectInstanceField/staticImport.before.data.kt diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/FieldInfo.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/FieldInfo.java index 35080bee57a..76823ba4da5 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/FieldInfo.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/FieldInfo.java @@ -33,17 +33,12 @@ public class FieldInfo { @NotNull public static FieldInfo createForSingleton(@NotNull ClassDescriptor classDescriptor, @NotNull JetTypeMapper typeMapper) { - return createForSingleton(classDescriptor, typeMapper, false); - } - - @NotNull - public static FieldInfo createForSingleton(@NotNull ClassDescriptor classDescriptor, @NotNull JetTypeMapper typeMapper, boolean oldSingleton) { if (!classDescriptor.getKind().isSingleton() || DescriptorUtils.isEnumEntry(classDescriptor)) { throw new UnsupportedOperationException("Can't create singleton field for class: " + classDescriptor); } if (isNonCompanionObject(classDescriptor) || COMPANION_OBJECT_MAPPING.hasMappingToObject(classDescriptor)) { - return createSingletonViaInstance(classDescriptor, typeMapper, oldSingleton); + return createSingletonViaInstance(classDescriptor, typeMapper); } else { ClassDescriptor ownerDescriptor = DescriptorUtils.getParentOfType(classDescriptor, ClassDescriptor.class); @@ -56,11 +51,10 @@ public class FieldInfo { @NotNull public static FieldInfo createSingletonViaInstance( @NotNull ClassDescriptor classDescriptor, - @NotNull JetTypeMapper typeMapper, - boolean oldSingleton + @NotNull JetTypeMapper typeMapper ) { Type type = typeMapper.mapType(classDescriptor); - return new FieldInfo(type, type, oldSingleton ? JvmAbi.DEPRECATED_INSTANCE_FIELD : JvmAbi.INSTANCE_FIELD, true); + return new FieldInfo(type, type, JvmAbi.INSTANCE_FIELD, true); } @NotNull diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java index 187a6fd8e8b..943c8b0f4d8 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/ImplementationBodyCodegen.java @@ -849,11 +849,6 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { ACC_PUBLIC | ACC_STATIC | ACC_FINAL | (isCompanionObject ? ACC_DEPRECATED : 0), field.name, field.type.getDescriptor(), null, null); - if (isNonCompanionObject(descriptor)) { - StackValue.Field oldField = StackValue.oldSingleton(descriptor, typeMapper); - v.newField(JvmDeclarationOriginKt.OtherOrigin(myClass), ACC_PUBLIC | ACC_STATIC | ACC_FINAL | ACC_DEPRECATED, oldField.name, oldField.type.getDescriptor(), null, null); - } - if (state.getClassBuilderMode() != ClassBuilderMode.FULL) return; // Invoke the object constructor but ignore the result because INSTANCE$ will be initialized in the first line of InstructionAdapter v = createOrGetClInitCodegen().v; @@ -1009,9 +1004,6 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen { if (isObject(descriptor)) { StackValue.singletonViaInstance(descriptor, typeMapper).store(StackValue.LOCAL_0, iv); - if (isNonCompanionObject(descriptor)) { - StackValue.oldSingleton(descriptor, typeMapper).store(StackValue.LOCAL_0, iv); - } } for (KtSuperTypeListEntry specifier : myClass.getSuperTypeListEntries()) { diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/StackValue.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/StackValue.java index 2714ca4b5ea..e8adbd3b630 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/StackValue.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/StackValue.java @@ -597,11 +597,7 @@ public abstract class StackValue { } public static Field singletonViaInstance(ClassDescriptor classDescriptor, JetTypeMapper typeMapper) { - return field(FieldInfo.createSingletonViaInstance(classDescriptor, typeMapper, false), none()); - } - - public static Field oldSingleton(ClassDescriptor classDescriptor, JetTypeMapper typeMapper) { - return field(FieldInfo.createForSingleton(classDescriptor, typeMapper, true), none()); + return field(FieldInfo.createSingletonViaInstance(classDescriptor, typeMapper), none()); } public static StackValue operation(Type type, Function1 lambda) { diff --git a/compiler/testData/asJava/lightClasses/object/SimpleObject.java b/compiler/testData/asJava/lightClasses/object/SimpleObject.java index 044f065a080..ddb08bd68d8 100644 --- a/compiler/testData/asJava/lightClasses/object/SimpleObject.java +++ b/compiler/testData/asJava/lightClasses/object/SimpleObject.java @@ -9,10 +9,6 @@ public final class A { @org.jetbrains.annotations.NotNull public static java.lang.String v; public static final pack.A INSTANCE; - /** - * @deprecated - */ - public static final pack.A INSTANCE$; public final int getC() { /* compiled code */ } diff --git a/compiler/testData/codegen/bytecodeText/constValsGetterDeprecated.kt b/compiler/testData/codegen/bytecodeText/constValsGetterDeprecated.kt index 3ba36142acd..0cc9e02d98d 100644 --- a/compiler/testData/codegen/bytecodeText/constValsGetterDeprecated.kt +++ b/compiler/testData/codegen/bytecodeText/constValsGetterDeprecated.kt @@ -11,8 +11,8 @@ class B { } /* - Two DEPRECATED are for INSTANCE$ and INSTANCE temporarily + 1 DEPRECATED is for INSTANCE temporarily 3 others are for getCONST_VAL */ -// 5 DEPRECATED \ No newline at end of file +// 4 DEPRECATED \ No newline at end of file diff --git a/compiler/testData/codegen/bytecodeText/constants/kt9532.kt b/compiler/testData/codegen/bytecodeText/constants/kt9532.kt index 6b7e6f70381..13e58418348 100644 --- a/compiler/testData/codegen/bytecodeText/constants/kt9532.kt +++ b/compiler/testData/codegen/bytecodeText/constants/kt9532.kt @@ -7,5 +7,5 @@ object A { //check that constant initializers inlined // 0 GETSTATIC -// 2 PUTSTATIC A.INSTANCE -// 2 PUTSTATIC +// 1 PUTSTATIC A.INSTANCE +// 1 PUTSTATIC diff --git a/compiler/testData/codegen/bytecodeText/staticFields/object.kt b/compiler/testData/codegen/bytecodeText/staticFields/object.kt index 0571aba0ada..e94448ce059 100644 --- a/compiler/testData/codegen/bytecodeText/staticFields/object.kt +++ b/compiler/testData/codegen/bytecodeText/staticFields/object.kt @@ -3,5 +3,4 @@ object A { } // Field initialized in constant pool // A super constructor call and INSTANCE put -// One more for INSTANCE$ put (temporarily) -// 3 ALOAD 0 \ No newline at end of file +// 2 ALOAD 0 \ No newline at end of file diff --git a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/JvmAbi.java b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/JvmAbi.java index dccff8da7c7..054ab267d1f 100644 --- a/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/JvmAbi.java +++ b/core/descriptor.loader.java/src/org/jetbrains/kotlin/load/java/JvmAbi.java @@ -51,7 +51,6 @@ public final class JvmAbi { public static final String ANNOTATED_PROPERTY_METHOD_NAME_SUFFIX = "$annotations"; public static final String INSTANCE_FIELD = "INSTANCE"; - public static final String DEPRECATED_INSTANCE_FIELD = "INSTANCE$"; public static final String DEFAULT_MODULE_NAME = "main"; public static final ClassId REFLECTION_FACTORY_IMPL = ClassId.topLevel(new FqName("kotlin.reflect.jvm.internal.ReflectionFactoryImpl")); diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml index f7cdbe3c99b..73691cc73ca 100644 --- a/idea/src/META-INF/plugin.xml +++ b/idea/src/META-INF/plugin.xml @@ -1280,14 +1280,6 @@ level="WARNING" /> - - STANCE$.getName(); - } -} diff --git a/idea/testData/quickfix/migration/deprecatedObjectInstanceField/basic.before.data.kt b/idea/testData/quickfix/migration/deprecatedObjectInstanceField/basic.before.data.kt deleted file mode 100644 index c8a4097ad47..00000000000 --- a/idea/testData/quickfix/migration/deprecatedObjectInstanceField/basic.before.data.kt +++ /dev/null @@ -1,4 +0,0 @@ -package a - -object A { -} diff --git a/idea/testData/quickfix/migration/deprecatedObjectInstanceField/staticImport.after.java b/idea/testData/quickfix/migration/deprecatedObjectInstanceField/staticImport.after.java deleted file mode 100644 index b7869a56468..00000000000 --- a/idea/testData/quickfix/migration/deprecatedObjectInstanceField/staticImport.after.java +++ /dev/null @@ -1,8 +0,0 @@ -// "Replace with reference to 'INSTANCE' field" "true" -import a.A; - -class B { - void bar() { - A.INSTANCE.getName(); - } -} diff --git a/idea/testData/quickfix/migration/deprecatedObjectInstanceField/staticImport.before.Main.java b/idea/testData/quickfix/migration/deprecatedObjectInstanceField/staticImport.before.Main.java deleted file mode 100644 index c6ca488f3ad..00000000000 --- a/idea/testData/quickfix/migration/deprecatedObjectInstanceField/staticImport.before.Main.java +++ /dev/null @@ -1,8 +0,0 @@ -// "Replace with reference to 'INSTANCE' field" "true" -import static a.A.INSTANCE; - -class B { - void bar() { - INSTANCE$.getName(); - } -} diff --git a/idea/testData/quickfix/migration/deprecatedObjectInstanceField/staticImport.before.data.kt b/idea/testData/quickfix/migration/deprecatedObjectInstanceField/staticImport.before.data.kt deleted file mode 100644 index a95463e2b95..00000000000 --- a/idea/testData/quickfix/migration/deprecatedObjectInstanceField/staticImport.before.data.kt +++ /dev/null @@ -1,5 +0,0 @@ -package a - -object A { - val name: String = "" -} diff --git a/idea/testData/resolve/referenceInJava/ObjectInstance.java b/idea/testData/resolve/referenceInJava/ObjectInstance.java index 75d94e06485..22c20e24cfc 100644 --- a/idea/testData/resolve/referenceInJava/ObjectInstance.java +++ b/idea/testData/resolve/referenceInJava/ObjectInstance.java @@ -1,6 +1,6 @@ public class ObjectInstance { public static void foo() { - k.KotlinObject.INSTANCE$.f(); + k.KotlinObject.INSTANCE.f(); } } diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java index c64176b4fe9..acc943c9b12 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java @@ -1234,27 +1234,6 @@ public class QuickFixMultiFileTestGenerated extends AbstractQuickFixMultiFileTes } } - @TestMetadata("idea/testData/quickfix/migration/deprecatedObjectInstanceField") - @TestDataPath("$PROJECT_ROOT") - @RunWith(JUnit3RunnerWithInners.class) - public static class DeprecatedObjectInstanceField extends AbstractQuickFixMultiFileTest { - public void testAllFilesPresentInDeprecatedObjectInstanceField() throws Exception { - KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/migration/deprecatedObjectInstanceField"), Pattern.compile("^(\\w+)\\.((before\\.Main\\.\\w+)|(test))$"), true); - } - - @TestMetadata("basic.before.Main.java") - public void testBasic() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/migration/deprecatedObjectInstanceField/basic.before.Main.java"); - doTestWithExtraFile(fileName); - } - - @TestMetadata("staticImport.before.Main.java") - public void testStaticImport() throws Exception { - String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/migration/deprecatedObjectInstanceField/staticImport.before.Main.java"); - doTestWithExtraFile(fileName); - } - } - @TestMetadata("idea/testData/quickfix/migration/deprecatedStaticField") @TestDataPath("$PROJECT_ROOT") @RunWith(JUnit3RunnerWithInners.class)