Drop 'OBJECT$' field deprecated in M11

This commit is contained in:
Alexander Udalov
2015-06-26 21:55:13 +03:00
parent 0bad4e0137
commit feb4dd7b8f
23 changed files with 3 additions and 128 deletions
@@ -20,7 +20,6 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.builtins.CompanionObjectMapping;
import org.jetbrains.kotlin.codegen.state.JetTypeMapper;
import org.jetbrains.kotlin.descriptors.ClassDescriptor;
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor;
import org.jetbrains.kotlin.load.java.JvmAbi;
import org.jetbrains.kotlin.resolve.DescriptorUtils;
import org.jetbrains.org.objectweb.asm.Type;
@@ -46,18 +45,6 @@ public class FieldInfo {
}
}
@SuppressWarnings("deprecation")
@NotNull
public static FieldInfo deprecatedFieldForCompanionObject(@NotNull ClassDescriptor companionObject, @NotNull JetTypeMapper typeMapper) {
assert DescriptorUtils.isCompanionObject(companionObject) : "Not a companion object: " + companionObject;
return new FieldInfo(
typeMapper.mapType((ClassifierDescriptor) companionObject.getContainingDeclaration()),
typeMapper.mapType(companionObject),
JvmAbi.DEPRECATED_COMPANION_OBJECT_FIELD,
true
);
}
@NotNull
public static FieldInfo createForHiddenField(@NotNull Type owner, @NotNull Type fieldType, @NotNull String fieldName) {
return new FieldInfo(owner, fieldType, fieldName, false);
@@ -43,7 +43,6 @@ import org.jetbrains.kotlin.load.java.JvmAbi;
import org.jetbrains.kotlin.load.java.JvmAnnotationNames;
import org.jetbrains.kotlin.load.java.JvmAnnotationNames.KotlinClass;
import org.jetbrains.kotlin.load.java.descriptors.JavaCallableMemberDescriptor;
import org.jetbrains.kotlin.name.FqName;
import org.jetbrains.kotlin.name.Name;
import org.jetbrains.kotlin.psi.*;
import org.jetbrains.kotlin.resolve.BindingContext;
@@ -1008,12 +1007,6 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
StackValue.Field field = StackValue.singleton(companionObjectDescriptor, typeMapper);
v.newField(OtherOrigin(companionObject), ACC_PUBLIC | ACC_STATIC | ACC_FINAL, field.name, field.type.getDescriptor(), null, null);
StackValue.Field deprecatedField = StackValue.deprecatedCompanionObjectAccessor(companionObjectDescriptor, typeMapper);
FieldVisitor fv = v.newField(OtherOrigin(companionObject), ACC_PUBLIC | ACC_STATIC | ACC_FINAL | ACC_DEPRECATED,
deprecatedField.name, deprecatedField.type.getDescriptor(), null, null);
fv.visitAnnotation(asmDescByFqNameWithoutInnerClasses(new FqName("java.lang.Deprecated")), true).visitEnd();
if (state.getClassBuilderMode() != ClassBuilderMode.FULL) return;
if (!isCompanionObjectWithBackingFieldsInOuter(companionObjectDescriptor)) {
@@ -1074,7 +1067,6 @@ public class ImplementationBodyCodegen extends ClassBodyCodegen {
codegen.v.dup();
StackValue instance = StackValue.onStack(typeMapper.mapClass(companionObject));
StackValue.singleton(companionObject, typeMapper).store(instance, codegen.v, true);
StackValue.deprecatedCompanionObjectAccessor(companionObject, typeMapper).store(instance, codegen.v, true);
}
private void generatePrimaryConstructor(final DelegationFieldsInfo delegationFieldsInfo) {
@@ -552,10 +552,6 @@ public abstract class StackValue {
return field(FieldInfo.createForSingleton(classDescriptor, typeMapper));
}
public static Field deprecatedCompanionObjectAccessor(ClassDescriptor classDescriptor, JetTypeMapper typeMapper) {
return field(FieldInfo.deprecatedFieldForCompanionObject(classDescriptor, typeMapper));
}
public static StackValue operation(Type type, Function1<InstructionAdapter, Unit> lambda) {
return new OperationStackValue(type, lambda);
}
@@ -154,9 +154,8 @@ public class LightClassUtil {
PsiClass outerPsiClass = getWrappingClass(companionObject);
if (outerPsiClass != null) {
for (PsiField fieldOfParent : outerPsiClass.getFields()) {
if (!(fieldOfParent instanceof KotlinLightElement)) continue;
if (((KotlinLightElement<?, ?>) fieldOfParent).getOrigin() == companionObject &&
fieldOfParent.getName().equals(companionObject.getName())) { // TODO this check is relevant while light class has deprecated OBJECT$ field
if ((fieldOfParent instanceof KotlinLightElement) &&
((KotlinLightElement<?, ?>) fieldOfParent).getOrigin() == companionObject) {
return fieldOfParent;
}
}
@@ -3,11 +3,6 @@ public final class ClassObjectField {
public static final java.lang.String x = "";
private static final java.lang.String y = "";
public static final ClassObjectField.Companion Companion;
/**
* @deprecated
*/
@java.lang.Deprecated
public static final ClassObjectField.Companion OBJECT$;
public ClassObjectField() { /* compiled code */ }
@@ -1,10 +1,5 @@
public interface TraitClassObjectField {
TraitClassObjectField.Companion Companion;
/**
* @deprecated
*/
@java.lang.Deprecated
TraitClassObjectField.Companion OBJECT$;
@org.jetbrains.annotations.Nullable
java.lang.String x = "";
@@ -1,5 +1,5 @@
public class J {
public static int f() {
return A.Companion.getI1() + A.OBJECT$.getI2() + B.Named.getI1() + B.OBJECT$.getI2();
return A.Companion.getI1() + A.Companion.getI2() + B.Named.getI1() + B.Named.getI2();
}
}
@@ -3,9 +3,3 @@ class C {
val <!REDECLARATION!>Companion<!> = C
}
class D {
companion <!CONFLICTING_JVM_DECLARATIONS!>object<!> {}
<!CONFLICTING_JVM_DECLARATIONS!>val `OBJECT$`<!> = D
}
@@ -14,18 +14,3 @@ internal final class C {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
internal final class D {
public constructor D()
internal final val `OBJECT$`: D.Companion
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public companion object Companion {
private constructor Companion()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
@@ -11,11 +11,3 @@ class C {
}
}
class D {
companion <!CONFLICTING_JVM_DECLARATIONS!>object<!> {
<!CONFLICTING_JVM_DECLARATIONS!>val `OBJECT$`<!> = this
}
val `OBJECT$` = D
}
@@ -29,19 +29,3 @@ internal final class C {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}
internal final class D {
public constructor D()
internal final val `OBJECT$`: D.Companion
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public companion object Companion {
private constructor Companion()
internal final val `OBJECT$`: D.Companion
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
}