Rename ClassKind.isObject -> isSingleton

"isObject" gives a false impression that this is a check if the kind is OBJECT
This commit is contained in:
Alexander Udalov
2013-11-21 16:43:37 +04:00
parent 9a8d639ac5
commit 2c6bf6171f
21 changed files with 35 additions and 34 deletions
@@ -292,7 +292,7 @@ public class CodegenUtil {
ReceiverParameterDescriptor expectedThisObject = descriptor.getExpectedThisObject(); ReceiverParameterDescriptor expectedThisObject = descriptor.getExpectedThisObject();
if (expectedThisObject != null) { if (expectedThisObject != null) {
ClassDescriptor expectedThisClass = (ClassDescriptor) expectedThisObject.getContainingDeclaration(); ClassDescriptor expectedThisClass = (ClassDescriptor) expectedThisObject.getContainingDeclaration();
if (!expectedThisClass.getKind().isObject()) { if (!expectedThisClass.getKind().isSingleton()) {
return expectedThisClass; return expectedThisClass;
} }
} }
@@ -5,10 +5,10 @@ import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.descriptors.serialization.*; import org.jetbrains.jet.descriptors.serialization.*;
import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.storage.StorageManager;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe; import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.storage.StorageManager;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collection; import java.util.Collection;
@@ -62,7 +62,7 @@ public class DeserializedPackageMemberScope extends DeserializedMemberScope {
if (classDescriptor == null) { if (classDescriptor == null) {
return null; return null;
} }
return classDescriptor.getKind().isObject() == object ? classDescriptor : null; return classDescriptor.getKind().isSingleton() == object ? classDescriptor : null;
} }
@Override @Override
@@ -81,7 +81,7 @@ public class DeserializedPackageMemberScope extends DeserializedMemberScope {
ClassDescriptor classDescriptor = findClassDescriptor(className, object); ClassDescriptor classDescriptor = findClassDescriptor(className, object);
if (classDescriptor != null) { if (classDescriptor != null) {
assert classDescriptor.getKind().isObject() == object; assert classDescriptor.getKind().isSingleton() == object;
result.add(classDescriptor); result.add(classDescriptor);
} }
} }
@@ -148,7 +148,7 @@ public interface Importer {
@Override @Override
public void addAliasImport(@NotNull DeclarationDescriptor descriptor, @NotNull Name aliasName) { public void addAliasImport(@NotNull DeclarationDescriptor descriptor, @NotNull Name aliasName) {
assert !DescriptorUtils.isObject(descriptor) : "Never import objects: " + descriptor; assert !DescriptorUtils.isSingleton(descriptor) : "Never import objects: " + descriptor;
imports.add(new AliasImportEntry(descriptor, aliasName)); imports.add(new AliasImportEntry(descriptor, aliasName));
} }
@@ -104,7 +104,7 @@ public class QualifiedExpressionResolver {
} }
for (DeclarationDescriptor descriptor : descriptors) { for (DeclarationDescriptor descriptor : descriptors) {
if (!DescriptorUtils.isObject(descriptor)) { if (!DescriptorUtils.isSingleton(descriptor)) {
importer.addAliasImport(descriptor, aliasName); importer.addAliasImport(descriptor, aliasName);
} }
} }
@@ -142,7 +142,7 @@ public class QualifiedExpressionResolver {
if (descriptor instanceof NamespaceDescriptor) { if (descriptor instanceof NamespaceDescriptor) {
return true; return true;
} }
if (descriptor instanceof ClassDescriptor && !((ClassDescriptor)descriptor).getKind().isObject()) { if (descriptor instanceof ClassDescriptor && !((ClassDescriptor)descriptor).getKind().isSingleton()) {
return true; return true;
} }
trace.report(CANNOT_IMPORT_FROM_ELEMENT.on(reference, descriptor)); trace.report(CANNOT_IMPORT_FROM_ELEMENT.on(reference, descriptor));
@@ -183,7 +183,7 @@ public class CandidateResolver {
if (context.call.getExplicitReceiver().exists() || context.call.getThisObject().exists()) return true; if (context.call.getExplicitReceiver().exists() || context.call.getThisObject().exists()) return true;
ClassDescriptor candidateThis = getDeclaringClass(context.candidateCall.getCandidateDescriptor()); ClassDescriptor candidateThis = getDeclaringClass(context.candidateCall.getCandidateDescriptor());
if (candidateThis == null || candidateThis.getKind().isObject()) return true; if (candidateThis == null || candidateThis.getKind().isSingleton()) return true;
return DescriptorResolver.checkHasOuterClassInstance(context.scope, context.trace, context.call.getCallElement(), candidateThis); return DescriptorResolver.checkHasOuterClassInstance(context.scope, context.trace, context.call.getCallElement(), candidateThis);
} }
@@ -115,7 +115,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc
this.kind = classLikeInfo.getClassKind(); this.kind = classLikeInfo.getClassKind();
JetModifierList modifierList = classLikeInfo.getModifierList(); JetModifierList modifierList = classLikeInfo.getModifierList();
if (kind.isObject()) { if (kind.isSingleton()) {
this.modality = Modality.FINAL; this.modality = Modality.FINAL;
} }
else { else {
@@ -356,7 +356,7 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope<LazyClassDescr
ConstructorDescriptor primaryConstructor = null; ConstructorDescriptor primaryConstructor = null;
if (GENERATE_CONSTRUCTORS_FOR.contains(thisDescriptor.getKind())) { if (GENERATE_CONSTRUCTORS_FOR.contains(thisDescriptor.getKind())) {
JetClassOrObject classOrObject = declarationProvider.getOwnerInfo().getCorrespondingClassOrObject(); JetClassOrObject classOrObject = declarationProvider.getOwnerInfo().getCorrespondingClassOrObject();
if (!thisDescriptor.getKind().isObject()) { if (!thisDescriptor.getKind().isSingleton()) {
JetClass jetClass = (JetClass) classOrObject; JetClass jetClass = (JetClass) classOrObject;
ConstructorDescriptorImpl constructor = resolveSession.getInjector().getDescriptorResolver() ConstructorDescriptorImpl constructor = resolveSession.getInjector().getDescriptorResolver()
.resolvePrimaryConstructorDescriptor(thisDescriptor.getScopeForClassHeaderResolution(), .resolvePrimaryConstructorDescriptor(thisDescriptor.getScopeForClassHeaderResolution(),
@@ -30,11 +30,11 @@ import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver;
import org.jetbrains.jet.lang.resolve.lazy.KotlinTestWithEnvironment; import org.jetbrains.jet.lang.resolve.lazy.KotlinTestWithEnvironment;
import org.jetbrains.jet.lang.resolve.lazy.LazyResolveTestUtil; import org.jetbrains.jet.lang.resolve.lazy.LazyResolveTestUtil;
import org.jetbrains.jet.storage.LockBasedStorageManager;
import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.JetScope;
import org.jetbrains.jet.lang.resolve.scopes.WritableScope; import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
import org.jetbrains.jet.storage.LockBasedStorageManager;
import org.jetbrains.jet.test.util.NamespaceComparator; import org.jetbrains.jet.test.util.NamespaceComparator;
import java.io.File; import java.io.File;
@@ -98,7 +98,7 @@ public abstract class AbstractDescriptorSerializationTest extends KotlinTestWith
ClassId classId = getClassId(classDescriptor); ClassId classId = getClassId(classDescriptor);
ClassDescriptor descriptor = descriptorFinder.findClass(classId); ClassDescriptor descriptor = descriptorFinder.findClass(classId);
assert descriptor != null : "Class not loaded: " + classId; assert descriptor != null : "Class not loaded: " + classId;
if (descriptor.getKind().isObject()) { if (descriptor.getKind().isSingleton()) {
namespace.getMemberScope().addObjectDescriptor(descriptor); namespace.getMemberScope().addObjectDescriptor(descriptor);
} }
else { else {
@@ -396,7 +396,7 @@ public class DescriptorValidator {
public Void visitClassDescriptor( public Void visitClassDescriptor(
ClassDescriptor descriptor, JetScope scope ClassDescriptor descriptor, JetScope scope
) { ) {
if (descriptor.getKind().isObject()) { if (descriptor.getKind().isSingleton()) {
assertFound(scope, descriptor, scope.getObjectDescriptor(descriptor.getName())); assertFound(scope, descriptor, scope.getObjectDescriptor(descriptor.getName()));
} }
else { else {
@@ -166,7 +166,7 @@ public abstract class JavaBaseScope extends JetScopeImpl {
private static Collection<ClassDescriptor> filterObjects(@NotNull Collection<ClassDescriptor> classes, boolean objects) { private static Collection<ClassDescriptor> filterObjects(@NotNull Collection<ClassDescriptor> classes, boolean objects) {
List<ClassDescriptor> result = new ArrayList<ClassDescriptor>(); List<ClassDescriptor> result = new ArrayList<ClassDescriptor>();
for (ClassDescriptor descriptor : classes) { for (ClassDescriptor descriptor : classes) {
if (descriptor.getKind().isObject() == objects) { if (descriptor.getKind().isSingleton() == objects) {
result.add(descriptor); result.add(descriptor);
} }
} }
@@ -67,7 +67,7 @@ public abstract class JavaClassMembersScope extends JavaBaseScope {
@Override @Override
public ClassDescriptor getObjectDescriptor(@NotNull Name name) { public ClassDescriptor getObjectDescriptor(@NotNull Name name) {
ClassDescriptor innerClass = getInnerClassesMap().get(name); ClassDescriptor innerClass = getInnerClassesMap().get(name);
if (innerClass != null && innerClass.getKind().isObject()) { if (innerClass != null && innerClass.getKind().isSingleton()) {
return innerClass; return innerClass;
} }
return null; return null;
@@ -76,7 +76,7 @@ public abstract class JavaClassMembersScope extends JavaBaseScope {
@Override @Override
public ClassifierDescriptor getClassifier(@NotNull Name name) { public ClassifierDescriptor getClassifier(@NotNull Name name) {
ClassDescriptor innerClass = getInnerClassesMap().get(name); ClassDescriptor innerClass = getInnerClassesMap().get(name);
if (innerClass == null || innerClass.getKind().isObject()) { if (innerClass == null || innerClass.getKind().isSingleton()) {
return null; return null;
} }
return innerClass; return innerClass;
@@ -56,7 +56,7 @@ public final class JavaPackageScope extends JavaBaseScope {
@Override @Override
public ClassifierDescriptor getClassifier(@NotNull Name name) { public ClassifierDescriptor getClassifier(@NotNull Name name) {
ClassDescriptor classDescriptor = memberResolver.resolveClass(packageFQN.child(name), IGNORE_KOTLIN_SOURCES); ClassDescriptor classDescriptor = memberResolver.resolveClass(packageFQN.child(name), IGNORE_KOTLIN_SOURCES);
if (classDescriptor == null || classDescriptor.getKind().isObject()) { if (classDescriptor == null || classDescriptor.getKind().isSingleton()) {
return null; return null;
} }
return classDescriptor; return classDescriptor;
@@ -65,7 +65,7 @@ public final class JavaPackageScope extends JavaBaseScope {
@Override @Override
public ClassDescriptor getObjectDescriptor(@NotNull Name name) { public ClassDescriptor getObjectDescriptor(@NotNull Name name) {
ClassDescriptor classDescriptor = memberResolver.resolveClass(packageFQN.child(name), IGNORE_KOTLIN_SOURCES); ClassDescriptor classDescriptor = memberResolver.resolveClass(packageFQN.child(name), IGNORE_KOTLIN_SOURCES);
if (classDescriptor != null && classDescriptor.getKind().isObject()) { if (classDescriptor != null && classDescriptor.getKind().isSingleton()) {
return classDescriptor; return classDescriptor;
} }
return null; return null;
@@ -25,7 +25,7 @@ public enum ClassKind {
OBJECT, OBJECT,
CLASS_OBJECT; CLASS_OBJECT;
public boolean isObject() { public boolean isSingleton() {
return this == OBJECT || this == CLASS_OBJECT || this == ENUM_ENTRY; return this == OBJECT || this == CLASS_OBJECT || this == ENUM_ENTRY;
} }
} }
@@ -252,7 +252,7 @@ public abstract class MutableClassDescriptorLite extends ClassDescriptorBase {
@Override @Override
public ClassObjectStatus setClassObjectDescriptor(@NotNull MutableClassDescriptorLite classObjectDescriptor) { public ClassObjectStatus setClassObjectDescriptor(@NotNull MutableClassDescriptorLite classObjectDescriptor) {
if (getKind().isObject() || isInner()) { if (getKind().isSingleton() || isInner()) {
return ClassObjectStatus.NOT_ALLOWED; return ClassObjectStatus.NOT_ALLOWED;
} }
@@ -238,10 +238,10 @@ public class DescriptorUtils {
return isKindOf(descriptor, ClassKind.ENUM_ENTRY); return isKindOf(descriptor, ClassKind.ENUM_ENTRY);
} }
public static boolean isObject(@NotNull DeclarationDescriptor classifier) { public static boolean isSingleton(@NotNull DeclarationDescriptor classifier) {
if (classifier instanceof ClassDescriptor) { if (classifier instanceof ClassDescriptor) {
ClassDescriptor clazz = (ClassDescriptor) classifier; ClassDescriptor clazz = (ClassDescriptor) classifier;
return clazz.getKind().isObject(); return clazz.getKind().isSingleton();
} }
return false; return false;
} }
@@ -304,7 +304,7 @@ public class DescriptorUtils {
if (containingDeclaration instanceof ClassDescriptor) { if (containingDeclaration instanceof ClassDescriptor) {
ClassDescriptor classDescriptor = (ClassDescriptor) containingDeclaration; ClassDescriptor classDescriptor = (ClassDescriptor) containingDeclaration;
if (classDescriptor.getKind().isObject()) { if (classDescriptor.getKind().isSingleton()) {
return inStaticContext(classDescriptor.getContainingDeclaration()); return inStaticContext(classDescriptor.getContainingDeclaration());
} }
@@ -328,7 +328,7 @@ public class DescriptorUtils {
if (classKind == ClassKind.ENUM_CLASS) { if (classKind == ClassKind.ENUM_CLASS) {
return Visibilities.PRIVATE; return Visibilities.PRIVATE;
} }
if (classKind.isObject()) { if (classKind.isSingleton()) {
return Visibilities.PRIVATE; return Visibilities.PRIVATE;
} }
assert classKind == ClassKind.CLASS || classKind == ClassKind.TRAIT || classKind == ClassKind.ANNOTATION_CLASS; assert classKind == ClassKind.CLASS || classKind == ClassKind.TRAIT || classKind == ClassKind.ANNOTATION_CLASS;
@@ -421,7 +421,7 @@ public class DescriptorUtils {
return descriptor instanceof ClassDescriptor && return descriptor instanceof ClassDescriptor &&
containing instanceof ClassDescriptor && containing instanceof ClassDescriptor &&
!((ClassDescriptor) descriptor).isInner() && !((ClassDescriptor) descriptor).isInner() &&
!((ClassDescriptor) containing).getKind().isObject(); !((ClassDescriptor) containing).getKind().isSingleton();
} }
@Nullable @Nullable
@@ -87,6 +87,6 @@ public class InnerClassesScopeWrapper extends AbstractScopeAdapter {
} }
private static boolean isClass(DeclarationDescriptor descriptor) { private static boolean isClass(DeclarationDescriptor descriptor) {
return descriptor instanceof ClassDescriptor && !((ClassDescriptor) descriptor).getKind().isObject(); return descriptor instanceof ClassDescriptor && !((ClassDescriptor) descriptor).getKind().isSingleton();
} }
} }
@@ -310,7 +310,7 @@ public class WritableScopeImpl extends WritableScopeWithImports {
public void addClassifierDescriptor(@NotNull ClassifierDescriptor classDescriptor) { public void addClassifierDescriptor(@NotNull ClassifierDescriptor classDescriptor) {
checkMayWrite(); checkMayWrite();
if (DescriptorUtils.isObject(classDescriptor)) { if (DescriptorUtils.isSingleton(classDescriptor)) {
throw new IllegalStateException("must not be object: " + classDescriptor); throw new IllegalStateException("must not be object: " + classDescriptor);
} }
@@ -321,7 +321,7 @@ public class WritableScopeImpl extends WritableScopeWithImports {
public void addObjectDescriptor(@NotNull ClassDescriptor objectDescriptor) { public void addObjectDescriptor(@NotNull ClassDescriptor objectDescriptor) {
checkMayWrite(); checkMayWrite();
if (!objectDescriptor.getKind().isObject()) { if (!objectDescriptor.getKind().isSingleton()) {
throw new IllegalStateException("must be object: " + objectDescriptor); throw new IllegalStateException("must be object: " + objectDescriptor);
} }
@@ -216,7 +216,7 @@ public abstract class WritableScopeWithImports extends JetScopeAdapter implement
public void importClassifierAlias(@NotNull Name importedClassifierName, @NotNull ClassifierDescriptor classifierDescriptor) { public void importClassifierAlias(@NotNull Name importedClassifierName, @NotNull ClassifierDescriptor classifierDescriptor) {
checkMayWrite(); checkMayWrite();
if (DescriptorUtils.isObject(classifierDescriptor)) { if (DescriptorUtils.isSingleton(classifierDescriptor)) {
throw new IllegalStateException("must not be object: " + classifierDescriptor); throw new IllegalStateException("must not be object: " + classifierDescriptor);
} }
@@ -612,7 +612,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
renderAnnotations(klass, builder); renderAnnotations(klass, builder);
renderVisibility(klass.getVisibility(), builder); renderVisibility(klass.getVisibility(), builder);
if (!(klass.getKind() == ClassKind.TRAIT && klass.getModality() == Modality.ABSTRACT if (!(klass.getKind() == ClassKind.TRAIT && klass.getModality() == Modality.ABSTRACT
|| klass.getKind().isObject() && klass.getModality() == Modality.FINAL)) { || klass.getKind().isSingleton() && klass.getModality() == Modality.FINAL)) {
renderModality(klass.getModality(), builder); renderModality(klass.getModality(), builder);
} }
renderInner(klass.isInner(), builder); renderInner(klass.isInner(), builder);
@@ -627,7 +627,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
List<TypeParameterDescriptor> typeParameters = klass.getTypeConstructor().getParameters(); List<TypeParameterDescriptor> typeParameters = klass.getTypeConstructor().getParameters();
renderTypeParameters(typeParameters, builder, false); renderTypeParameters(typeParameters, builder, false);
if (!klass.getKind().isObject() && classWithPrimaryConstructor) { if (!klass.getKind().isSingleton() && classWithPrimaryConstructor) {
ConstructorDescriptor primaryConstructor = klass.getUnsubstitutedPrimaryConstructor(); ConstructorDescriptor primaryConstructor = klass.getUnsubstitutedPrimaryConstructor();
if (primaryConstructor != null) { if (primaryConstructor != null) {
renderValueParameters(primaryConstructor, builder); renderValueParameters(primaryConstructor, builder);
@@ -136,7 +136,7 @@ public class BuiltInsReferenceResolver extends AbstractProjectComponent {
@Nullable @Nullable
private DeclarationDescriptor findCurrentDescriptorForClass(@NotNull ClassDescriptor originalDescriptor) { private DeclarationDescriptor findCurrentDescriptorForClass(@NotNull ClassDescriptor originalDescriptor) {
if (originalDescriptor.getKind().isObject()) { if (originalDescriptor.getKind().isSingleton()) {
DeclarationDescriptor currentParent = findCurrentDescriptor(originalDescriptor.getContainingDeclaration()); DeclarationDescriptor currentParent = findCurrentDescriptor(originalDescriptor.getContainingDeclaration());
if (currentParent == null) return null; if (currentParent == null) return null;
return ((ClassDescriptor) currentParent).getClassObjectDescriptor(); return ((ClassDescriptor) currentParent).getClassObjectDescriptor();
@@ -37,7 +37,8 @@ import org.jetbrains.k2js.translate.utils.JsAstUtils;
import java.util.*; import java.util.*;
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.*; import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getClassDescriptorForType;
import static org.jetbrains.jet.lang.resolve.DescriptorUtils.getClassDescriptorForTypeConstructor;
import static org.jetbrains.jet.lang.types.TypeUtils.topologicallySortSuperclassesAndRecordAllInstances; import static org.jetbrains.jet.lang.types.TypeUtils.topologicallySortSuperclassesAndRecordAllInstances;
import static org.jetbrains.k2js.translate.expression.LiteralFunctionTranslator.createPlace; import static org.jetbrains.k2js.translate.expression.LiteralFunctionTranslator.createPlace;
import static org.jetbrains.k2js.translate.initializer.InitializerUtils.createClassObjectInitializer; import static org.jetbrains.k2js.translate.initializer.InitializerUtils.createClassObjectInitializer;
@@ -137,7 +138,7 @@ public final class ClassTranslator extends AbstractTranslator {
if (!isTopLevelDeclaration) { if (!isTopLevelDeclaration) {
qualifiedReference = null; qualifiedReference = null;
} }
else if (descriptor.getKind().isObject()) { else if (descriptor.getKind().isSingleton()) {
qualifiedReference = null; qualifiedReference = null;
declarationContext.literalFunctionTranslator().setDefinitionPlace( declarationContext.literalFunctionTranslator().setDefinitionPlace(
new NotNullLazyValue<Trinity<List<JsPropertyInitializer>, LabelGenerator, JsExpression>>() { new NotNullLazyValue<Trinity<List<JsPropertyInitializer>, LabelGenerator, JsExpression>>() {