Refactor: process mentions of class object
Rename usages that refer to "default object" concept now Test data file names are left as is
This commit is contained in:
@@ -46,7 +46,7 @@ public final class JvmAbi {
|
||||
|
||||
//TODO: To be removed after kotlin M11
|
||||
@Deprecated
|
||||
public static final String DEPRECATED_CLASS_OBJECT_FIELD = "OBJECT$";
|
||||
public static final String DEPRECATED_DEFAULT_OBJECT_FIELD = "OBJECT$";
|
||||
|
||||
@NotNull
|
||||
public static String getSyntheticMethodNameForAnnotatedProperty(@NotNull Name propertyName) {
|
||||
|
||||
+1
-1
@@ -159,7 +159,7 @@ public abstract class AbstractBinaryClassAnnotationAndConstantLoader<A : Any, C
|
||||
val classKind = Flags.CLASS_KIND[classProto.getFlags()]
|
||||
val classId = nameResolver.getClassId(classProto.getFqName())
|
||||
if (classKind == ProtoBuf.Class.Kind.CLASS_OBJECT && isStaticFieldInOuter(proto)) {
|
||||
// Backing fields of properties of a class object are generated in the outer class
|
||||
// Backing fields of properties of a default object are generated in the outer class
|
||||
return kotlinClassFinder.findKotlinClass(classId.getOuterClassId())
|
||||
}
|
||||
else if (classKind == ProtoBuf.Class.Kind.TRAIT && annotatedCallableKind == AnnotatedCallableKind.PROPERTY) {
|
||||
|
||||
@@ -40,7 +40,7 @@ public class Visibilities {
|
||||
DeclarationDescriptor parent = what;
|
||||
while (parent != null) {
|
||||
parent = parent.getContainingDeclaration();
|
||||
if ((parent instanceof ClassDescriptor && !DescriptorUtils.isClassObject(parent)) ||
|
||||
if ((parent instanceof ClassDescriptor && !DescriptorUtils.isDefaultObject(parent)) ||
|
||||
parent instanceof PackageFragmentDescriptor) {
|
||||
break;
|
||||
}
|
||||
@@ -97,7 +97,7 @@ public class Visibilities {
|
||||
@Override
|
||||
protected boolean isVisible(@NotNull ReceiverValue receiver, @NotNull DeclarationDescriptorWithVisibility what, @NotNull DeclarationDescriptor from) {
|
||||
ClassDescriptor classDescriptor = DescriptorUtils.getParentOfType(what, ClassDescriptor.class);
|
||||
if (DescriptorUtils.isClassObject(classDescriptor)) {
|
||||
if (DescriptorUtils.isDefaultObject(classDescriptor)) {
|
||||
classDescriptor = DescriptorUtils.getParentOfType(classDescriptor, ClassDescriptor.class);
|
||||
}
|
||||
if (classDescriptor == null) return false;
|
||||
|
||||
+1
-1
@@ -152,7 +152,7 @@ public abstract class AbstractTypeParameterDescriptor extends DeclarationDescrip
|
||||
|
||||
@Override
|
||||
public JetType getClassObjectType() {
|
||||
// TODO: class object bounds
|
||||
// TODO: default object bounds
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -50,7 +50,7 @@ public class EnumEntrySyntheticClassDescriptor extends ClassDescriptorBase {
|
||||
private final NotNullLazyValue<Collection<Name>> enumMemberNames;
|
||||
|
||||
/**
|
||||
* Creates and initializes descriptors for enum entry with the given name and its class object
|
||||
* Creates and initializes descriptors for enum entry with the given name and its default object
|
||||
* @param enumMemberNames needed for fake overrides resolution
|
||||
*/
|
||||
@NotNull
|
||||
@@ -214,7 +214,7 @@ public class EnumEntrySyntheticClassDescriptor extends ClassDescriptorBase {
|
||||
@NotNull
|
||||
private JetScope getSupertypeScope() {
|
||||
Collection<JetType> supertype = getTypeConstructor().getSupertypes();
|
||||
assert supertype.size() == 1 : "Enum entry and its class object both should have exactly one supertype: " + supertype;
|
||||
assert supertype.size() == 1 : "Enum entry and its default object both should have exactly one supertype: " + supertype;
|
||||
return supertype.iterator().next().getMemberScope();
|
||||
}
|
||||
|
||||
|
||||
@@ -53,13 +53,14 @@ public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
|
||||
.setWithoutTypeParameters(true)
|
||||
.setWithoutFunctionParameterNames(true)
|
||||
.setReceiverAfterName(true)
|
||||
.setRenderClassObjectName(true)
|
||||
.setRenderDefaultObjectName(true)
|
||||
.setWithoutSuperTypes(true)
|
||||
.setStartFromName(true).build();
|
||||
|
||||
DescriptorRenderer FQ_NAMES_IN_TYPES = new DescriptorRendererBuilder().build();
|
||||
|
||||
DescriptorRenderer SHORT_NAMES_IN_TYPES = new DescriptorRendererBuilder().setNameShortness(NameShortness.SHORT).setIncludeSynthesizedParameterNames(false).build();
|
||||
DescriptorRenderer SHORT_NAMES_IN_TYPES = new DescriptorRendererBuilder().setNameShortness(
|
||||
NameShortness.SHORT).setIncludeSynthesizedParameterNames(false).build();
|
||||
|
||||
DescriptorRenderer DEBUG_TEXT = new DescriptorRendererBuilder()
|
||||
.setDebugMode(true)
|
||||
@@ -77,7 +78,7 @@ public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
|
||||
DescriptorRenderer HTML_NAMES_WITH_SHORT_TYPES = new DescriptorRendererBuilder()
|
||||
.setWithDefinedIn(false)
|
||||
.setNameShortness(NameShortness.SHORT)
|
||||
.setRenderClassObjectName(true)
|
||||
.setRenderDefaultObjectName(true)
|
||||
.setTextFormat(TextFormat.HTML).build();
|
||||
|
||||
DescriptorRenderer HTML = new DescriptorRendererBuilder().setTextFormat(TextFormat.HTML).build();
|
||||
|
||||
@@ -63,7 +63,7 @@ public class DescriptorRendererBuilder {
|
||||
@NotNull
|
||||
private Collection<FqName> excludedAnnotationClasses = Collections.emptyList();
|
||||
private boolean receiverAfterName = false;
|
||||
private boolean renderClassObjectName = false;
|
||||
private boolean renderDefaultObjectName = false;
|
||||
|
||||
public DescriptorRendererBuilder() {
|
||||
}
|
||||
@@ -200,8 +200,8 @@ public class DescriptorRendererBuilder {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public DescriptorRendererBuilder setRenderClassObjectName(boolean renderClassObjectName) {
|
||||
this.renderClassObjectName = renderClassObjectName;
|
||||
public DescriptorRendererBuilder setRenderDefaultObjectName(boolean renderDefaultObjectName) {
|
||||
this.renderDefaultObjectName = renderDefaultObjectName;
|
||||
return this;
|
||||
}
|
||||
|
||||
@@ -234,7 +234,7 @@ public class DescriptorRendererBuilder {
|
||||
normalizedVisibilities, showInternalKeyword, prettyFunctionTypes, uninferredTypeParameterAsName,
|
||||
overrideRenderingPolicy, valueParametersHandler, textFormat, excludedAnnotationClasses, includePropertyConstant,
|
||||
includeSynthesizedParameterNames, withoutFunctionParameterNames, withoutTypeParameters, receiverAfterName,
|
||||
renderClassObjectName, withoutSuperTypes, typeNormalizer, renderDefaultValues, flexibleTypesForCode);
|
||||
renderDefaultObjectName, withoutSuperTypes, typeNormalizer, renderDefaultValues, flexibleTypesForCode);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
||||
private final boolean includeSynthesizedParameterNames;
|
||||
private final boolean withoutFunctionParameterNames;
|
||||
private final boolean withoutTypeParameters;
|
||||
private final boolean renderClassObjectName;
|
||||
private final boolean renderDefaultObjectName;
|
||||
private final boolean withoutSuperTypes;
|
||||
private final boolean receiverAfterName;
|
||||
private final boolean renderDefaultValues;
|
||||
@@ -100,7 +100,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
||||
boolean withoutFunctionParameterNames,
|
||||
boolean withoutTypeParameters,
|
||||
boolean receiverAfterName,
|
||||
boolean renderClassObjectName,
|
||||
boolean renderDefaultObjectName,
|
||||
boolean withoutSuperTypes,
|
||||
@NotNull Function1<JetType, JetType> typeNormalizer,
|
||||
boolean renderDefaultValues,
|
||||
@@ -127,7 +127,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
||||
this.withoutFunctionParameterNames = withoutFunctionParameterNames;
|
||||
this.withoutTypeParameters = withoutTypeParameters;
|
||||
this.receiverAfterName = receiverAfterName;
|
||||
this.renderClassObjectName = renderClassObjectName;
|
||||
this.renderDefaultObjectName = renderDefaultObjectName;
|
||||
this.withoutSuperTypes = withoutSuperTypes;
|
||||
this.typeNormalizer = typeNormalizer;
|
||||
this.renderDefaultValues = renderDefaultValues;
|
||||
@@ -234,8 +234,8 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
||||
builder.append(renderName(descriptor.getName()));
|
||||
}
|
||||
|
||||
private void renderClassObjectName(@NotNull DeclarationDescriptor descriptor, @NotNull StringBuilder builder) {
|
||||
if (renderClassObjectName) {
|
||||
private void renderDefaultObjectName(@NotNull DeclarationDescriptor descriptor, @NotNull StringBuilder builder) {
|
||||
if (renderDefaultObjectName) {
|
||||
if (startFromName) {
|
||||
builder.append("class object");
|
||||
}
|
||||
@@ -956,7 +956,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
|
||||
renderName(klass, builder);
|
||||
}
|
||||
else {
|
||||
renderClassObjectName(klass, builder);
|
||||
renderDefaultObjectName(klass, builder);
|
||||
}
|
||||
|
||||
List<TypeParameterDescriptor> typeParameters = klass.getTypeConstructor().getParameters();
|
||||
|
||||
@@ -191,7 +191,7 @@ public class DescriptorUtils {
|
||||
public static ClassDescriptor getContainingClass(@NotNull DeclarationDescriptor descriptor) {
|
||||
DeclarationDescriptor containing = descriptor.getContainingDeclaration();
|
||||
while (containing != null) {
|
||||
if (containing instanceof ClassDescriptor && !isClassObject(containing)) {
|
||||
if (containing instanceof ClassDescriptor && !isDefaultObject(containing)) {
|
||||
return (ClassDescriptor) containing;
|
||||
}
|
||||
containing = containing.getContainingDeclaration();
|
||||
@@ -240,7 +240,7 @@ public class DescriptorUtils {
|
||||
return descriptor instanceof AnonymousFunctionDescriptor;
|
||||
}
|
||||
|
||||
public static boolean isClassObject(@Nullable DeclarationDescriptor descriptor) {
|
||||
public static boolean isDefaultObject(@Nullable DeclarationDescriptor descriptor) {
|
||||
return isKindOf(descriptor, ClassKind.CLASS_OBJECT);
|
||||
}
|
||||
|
||||
|
||||
@@ -32,7 +32,7 @@ public class EnumValue extends CompileTimeConstant<ClassDescriptor> {
|
||||
@Override
|
||||
public JetType getType(@NotNull KotlinBuiltIns kotlinBuiltIns) {
|
||||
JetType type = value.getClassObjectType();
|
||||
assert type != null : "Enum entry should have a class object: " + value;
|
||||
assert type != null : "Enum entry should have a default object: " + value;
|
||||
return type;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,9 +24,6 @@ import java.lang.reflect.Modifier
|
||||
|
||||
public trait JetScope {
|
||||
|
||||
/**
|
||||
* Should not return object (class object or enum entry) class descriptors.
|
||||
*/
|
||||
public fun getClassifier(name: Name): ClassifierDescriptor?
|
||||
|
||||
public fun getPackage(name: Name): PackageViewDescriptor?
|
||||
|
||||
@@ -52,7 +52,7 @@ message JvmFieldSignature {
|
||||
required int32 name = 1;
|
||||
required JvmType type = 2;
|
||||
|
||||
// True iff this field is a backing field for a class object and is really present as a static
|
||||
// True iff this field is a backing field for a default object and is really present as a static
|
||||
// field in the outer class, not as an instance field here
|
||||
optional bool is_static_in_outer = 3 [default = false];
|
||||
}
|
||||
|
||||
@@ -131,9 +131,9 @@ public class DescriptorSerializer {
|
||||
}
|
||||
}
|
||||
|
||||
ClassDescriptor classObject = classDescriptor.getDefaultObjectDescriptor();
|
||||
if (classObject != null) {
|
||||
builder.setClassObjectName(stringTable.getSimpleNameIndex(classObject.getName()));
|
||||
ClassDescriptor defaultObjectDescriptor = classDescriptor.getDefaultObjectDescriptor();
|
||||
if (defaultObjectDescriptor != null) {
|
||||
builder.setClassObjectName(stringTable.getSimpleNameIndex(defaultObjectDescriptor.getName()));
|
||||
}
|
||||
|
||||
extension.serializeClass(classDescriptor, builder, stringTable);
|
||||
|
||||
+5
-5
@@ -60,7 +60,7 @@ public class DeserializedClassDescriptor(
|
||||
|
||||
private val containingDeclaration = outerContext.containingDeclaration
|
||||
private val primaryConstructor = c.storageManager.createNullableLazyValue { computePrimaryConstructor() }
|
||||
private val classObjectDescriptor = c.storageManager.createNullableLazyValue { computeClassObjectDescriptor() }
|
||||
private val defaultObjectDescriptor = c.storageManager.createNullableLazyValue { computeDefaultObjectDescriptor() }
|
||||
|
||||
private val annotations =
|
||||
if (!Flags.HAS_ANNOTATIONS.get(classProto.getFlags())) {
|
||||
@@ -109,14 +109,14 @@ public class DeserializedClassDescriptor(
|
||||
return listOf(constructor)
|
||||
}
|
||||
|
||||
private fun computeClassObjectDescriptor(): ClassDescriptor? {
|
||||
private fun computeDefaultObjectDescriptor(): ClassDescriptor? {
|
||||
if (!classProto.hasClassObjectName()) return null
|
||||
|
||||
val classObjectName = c.nameResolver.getName(classProto.getClassObjectName())
|
||||
return memberScope.getClassifier(classObjectName) as? ClassDescriptor
|
||||
val defaultObjectName = c.nameResolver.getName(classProto.getClassObjectName())
|
||||
return memberScope.getClassifier(defaultObjectName) as? ClassDescriptor
|
||||
}
|
||||
|
||||
override fun getDefaultObjectDescriptor(): ClassDescriptor? = classObjectDescriptor()
|
||||
override fun getDefaultObjectDescriptor(): ClassDescriptor? = defaultObjectDescriptor()
|
||||
|
||||
private fun computeSuperTypes(): Collection<JetType> {
|
||||
val supertypes = ArrayList<JetType>(classProto.getSupertypeCount())
|
||||
|
||||
Reference in New Issue
Block a user