From 42d2b97c09c7231c7c7077168839134a2fc7ef73 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Wed, 21 Jan 2015 14:08:47 +0300 Subject: [PATCH] Remove all class object related constants and utils from JvmAbi --- .../org/jetbrains/kotlin/codegen/ClassGenTest.java | 4 ++-- .../kotlin/codegen/InnerClassInfoGenTest.java | 7 ++++--- .../jetbrains/kotlin/codegen/PropertyGenTest.java | 4 ++-- .../src/org/jetbrains/kotlin/load/java/JvmAbi.java | 9 --------- .../kotlin/idea/javaFacade/JetJavaFacadeTest.java | 13 +++++++------ 5 files changed, 15 insertions(+), 22 deletions(-) diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ClassGenTest.java b/compiler/tests/org/jetbrains/kotlin/codegen/ClassGenTest.java index e3520ff8e5a..b79b5e97eda 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ClassGenTest.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ClassGenTest.java @@ -16,9 +16,9 @@ package org.jetbrains.kotlin.codegen; -import org.jetbrains.kotlin.load.java.JvmAbi; import org.jetbrains.kotlin.load.kotlin.PackageClassUtils; import org.jetbrains.kotlin.name.FqName; +import org.jetbrains.kotlin.name.SpecialNames; import org.jetbrains.kotlin.test.ConfigurationKind; import java.lang.reflect.Field; @@ -144,7 +144,7 @@ public class ClassGenTest extends CodegenTestCase { loadFile("classes/classObjectIsInnerClass.kt"); GeneratedClassLoader loader = generateAndCreateClassLoader(); Class a = loader.loadClass("A"); - Class aClassObject = loader.loadClass("A" + JvmAbi.CLASS_OBJECT_SUFFIX); + Class aClassObject = loader.loadClass("A$" + SpecialNames.DEFAULT_NAME_FOR_DEFAULT_OBJECT.asString()); assertSameElements(a.getDeclaredClasses(), aClassObject); assertEquals(a, aClassObject.getDeclaringClass()); } diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/InnerClassInfoGenTest.java b/compiler/tests/org/jetbrains/kotlin/codegen/InnerClassInfoGenTest.java index 01edc261dc8..5e0bf62fd69 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/InnerClassInfoGenTest.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/InnerClassInfoGenTest.java @@ -19,7 +19,7 @@ package org.jetbrains.kotlin.codegen; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.backend.common.output.OutputFile; -import org.jetbrains.kotlin.load.java.JvmAbi; +import org.jetbrains.kotlin.name.SpecialNames; import org.jetbrains.kotlin.test.ConfigurationKind; import org.jetbrains.kotlin.utils.UtilsPackage; import org.jetbrains.org.objectweb.asm.ClassReader; @@ -44,13 +44,14 @@ public class InnerClassInfoGenTest extends CodegenTestCase { public void testInnerClassInfo() { InnerClassAttribute innerB = new InnerClassAttribute("A$B", "A", "B", ACC_PUBLIC | ACC_STATIC | ACC_FINAL); InnerClassAttribute innerC = new InnerClassAttribute("A$B$C", "A$B", "C", ACC_PUBLIC | ACC_FINAL); + String classObjectDefaultName = SpecialNames.DEFAULT_NAME_FOR_DEFAULT_OBJECT.asString(); InnerClassAttribute innerAClassObject = new InnerClassAttribute( - "A" + JvmAbi.CLASS_OBJECT_SUFFIX, "A", JvmAbi.CLASS_OBJECT_CLASS_NAME, ACC_PUBLIC | ACC_STATIC | ACC_FINAL); + "A$" + classObjectDefaultName, "A", classObjectDefaultName, ACC_PUBLIC | ACC_STATIC | ACC_FINAL); extractAndCompareInnerClasses("A", innerB, innerAClassObject); extractAndCompareInnerClasses("A$B", innerB, innerC); extractAndCompareInnerClasses("A$B$C", innerB, innerC); - extractAndCompareInnerClasses("A" + JvmAbi.CLASS_OBJECT_SUFFIX, innerAClassObject); + extractAndCompareInnerClasses("A$" + classObjectDefaultName, innerAClassObject); } public void testLocalClass() { diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/PropertyGenTest.java b/compiler/tests/org/jetbrains/kotlin/codegen/PropertyGenTest.java index adbfe1835ad..689ec66c970 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/PropertyGenTest.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/PropertyGenTest.java @@ -17,7 +17,7 @@ package org.jetbrains.kotlin.codegen; import org.jetbrains.annotations.NotNull; -import org.jetbrains.kotlin.load.java.JvmAbi; +import org.jetbrains.kotlin.name.SpecialNames; import org.jetbrains.kotlin.test.ConfigurationKind; import org.jetbrains.org.objectweb.asm.Opcodes; @@ -248,7 +248,7 @@ public class PropertyGenTest extends CodegenTestCase { findDeclaredMethodByName(c, "getExtension"); findDeclaredMethodByName(c, "setExtension"); - findDeclaredMethodByName(initializedClassLoader.loadClass("C" + JvmAbi.CLASS_OBJECT_SUFFIX), "getClassObjectVal"); + findDeclaredMethodByName(initializedClassLoader.loadClass("C$" + SpecialNames.DEFAULT_NAME_FOR_DEFAULT_OBJECT.asString()), "getClassObjectVal"); assertNull("Property should not have a getter", findDeclaredMethodByNameOrNull(c, "getVarNoAccessors")); assertNull("Property should not have a setter", findDeclaredMethodByNameOrNull(c, "setVarNoAccessors")); 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 527895b1017..ca1e6b43ef1 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 @@ -19,7 +19,6 @@ package org.jetbrains.kotlin.load.java; import org.jetbrains.annotations.NotNull; import org.jetbrains.kotlin.name.FqName; import org.jetbrains.kotlin.name.Name; -import org.jetbrains.kotlin.name.SpecialNames; public final class JvmAbi { /** @@ -36,24 +35,16 @@ public final class JvmAbi { public static final String GETTER_PREFIX = "get"; public static final String SETTER_PREFIX = "set"; - public static final String CLASS_OBJECT_CLASS_NAME = SpecialNames.DEFAULT_NAME_FOR_DEFAULT_OBJECT.asString(); - public static final String CLASS_OBJECT_SUFFIX = "$" + CLASS_OBJECT_CLASS_NAME; - public static final String DELEGATED_PROPERTY_NAME_SUFFIX = "$delegate"; public static final String PROPERTY_METADATA_ARRAY_NAME = "$propertyMetadata"; public static final String ANNOTATED_PROPERTY_METHOD_NAME_SUFFIX = "$annotations"; public static final String INSTANCE_FIELD = "INSTANCE$"; - public static final String CLASS_OBJECT_FIELD = CLASS_OBJECT_CLASS_NAME; public static final FqName K_OBJECT = new FqName("kotlin.jvm.internal.KObject"); public static final String KOTLIN_CLASS_FIELD_NAME = "$kotlinClass"; public static final String KOTLIN_PACKAGE_FIELD_NAME = "$kotlinPackage"; - public static boolean isClassObjectFqName(@NotNull FqName fqName) { - return fqName.lastSegmentIs(Name.identifier(CLASS_OBJECT_CLASS_NAME)); - } - @NotNull public static String getSyntheticMethodNameForAnnotatedProperty(@NotNull Name propertyName) { return propertyName.asString() + ANNOTATED_PROPERTY_METHOD_NAME_SUFFIX; diff --git a/idea/tests/org/jetbrains/kotlin/idea/javaFacade/JetJavaFacadeTest.java b/idea/tests/org/jetbrains/kotlin/idea/javaFacade/JetJavaFacadeTest.java index 88677701430..0eb8e250e5e 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/javaFacade/JetJavaFacadeTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/javaFacade/JetJavaFacadeTest.java @@ -27,7 +27,7 @@ import org.jetbrains.kotlin.asJava.LightClassUtil; import org.jetbrains.kotlin.idea.JetLightCodeInsightFixtureTestCase; import org.jetbrains.kotlin.idea.JetLightProjectDescriptor; import org.jetbrains.kotlin.idea.PluginTestCaseBase; -import org.jetbrains.kotlin.load.java.JvmAbi; +import org.jetbrains.kotlin.name.SpecialNames; import org.jetbrains.kotlin.psi.*; public class JetJavaFacadeTest extends JetLightCodeInsightFixtureTestCase { @@ -186,20 +186,21 @@ public class JetJavaFacadeTest extends JetLightCodeInsightFixtureTestCase { PsiField classobjField = theClass.findFieldByName("$classobj", false); assertNull(classobjField); - PsiClass classObjectClass = theClass.findInnerClassByName("object", false); + String defaultClassObjectName = SpecialNames.DEFAULT_NAME_FOR_DEFAULT_OBJECT.asString(); + PsiClass classObjectClass = theClass.findInnerClassByName(defaultClassObjectName, false); assertNotNull(classObjectClass); - assertEquals("foo.TheClass.object", classObjectClass.getQualifiedName()); + assertEquals("foo.TheClass." + defaultClassObjectName, classObjectClass.getQualifiedName()); assertTrue(classObjectClass.hasModifierProperty(PsiModifier.STATIC)); - PsiField instance = theClass.findFieldByName(JvmAbi.CLASS_OBJECT_FIELD, false); + PsiField instance = theClass.findFieldByName(defaultClassObjectName, false); assertNotNull(instance); - assertEquals("foo.TheClass.object", instance.getType().getCanonicalText()); + assertEquals("foo.TheClass." + defaultClassObjectName, instance.getType().getCanonicalText()); assertTrue(instance.hasModifierProperty(PsiModifier.PUBLIC)); assertTrue(instance.hasModifierProperty(PsiModifier.STATIC)); assertTrue(instance.hasModifierProperty(PsiModifier.FINAL)); PsiMethod[] methods = classObjectClass.findMethodsByName("getOut", false); - + assertEquals("java.io.PrintStream", methods[0].getReturnType().getCanonicalText()); }