diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ClassifierDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ClassifierDescriptor.java index 7ddd70998ad..e17dd7a8514 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ClassifierDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ClassifierDescriptor.java @@ -30,6 +30,4 @@ public interface ClassifierDescriptor extends DeclarationDescriptorNonRoot { @Nullable JetType getClassObjectType(); - - boolean isClassObjectAValue(); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/ClassDescriptorImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/ClassDescriptorImpl.java index 765970371c3..4c186db167b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/ClassDescriptorImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/ClassDescriptorImpl.java @@ -141,11 +141,6 @@ public class ClassDescriptorImpl extends DeclarationDescriptorNonRootImpl implem return kind; } - @Override - public boolean isClassObjectAValue() { - return true; - } - @Override public R accept(DeclarationDescriptorVisitor visitor, D data) { return visitor.visitClassDescriptor(this, data); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/LazySubstitutingClassDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/LazySubstitutingClassDescriptor.java index 357575ff9cd..901b8b21c58 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/LazySubstitutingClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/LazySubstitutingClassDescriptor.java @@ -180,11 +180,6 @@ public class LazySubstitutingClassDescriptor implements ClassDescriptor { return original.isInner(); } - @Override - public boolean isClassObjectAValue() { - return original.isClassObjectAValue(); - } - @Override public R accept(DeclarationDescriptorVisitor visitor, D data) { return visitor.visitClassDescriptor(this, data); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/MutableClassDescriptorLite.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/MutableClassDescriptorLite.java index cdbcddd9a8e..260fbd71bcd 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/MutableClassDescriptorLite.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/MutableClassDescriptorLite.java @@ -133,12 +133,6 @@ public abstract class MutableClassDescriptorLite extends ClassDescriptorBase { return classObjectType; } - @Override - public boolean isClassObjectAValue() { - return true; - } - - @NotNull @Override public ClassKind getKind() { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/TypeParameterDescriptorImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/TypeParameterDescriptorImpl.java index 513e5753afd..36dc836625b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/TypeParameterDescriptorImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/impl/TypeParameterDescriptorImpl.java @@ -245,11 +245,6 @@ public class TypeParameterDescriptorImpl extends DeclarationDescriptorNonRootImp return classObjectBoundsAsType; } - @Override - public boolean isClassObjectAValue() { - return true; - } - public void addClassObjectBound(@NotNull JetType bound) { checkUninitialized(); classObjectUpperBounds.add(bound); // TODO : Duplicates? diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallExpressionResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallExpressionResolver.java index 19287f94992..bd28f643ade 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallExpressionResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallExpressionResolver.java @@ -72,9 +72,6 @@ public class CallExpressionResolver { if (classObjectType != null) { context.trace.record(REFERENCE_TARGET, expression, classifier); JetType result = getExtendedClassObjectType(classObjectType, referencedName, classifier, context); - if (result == null) { - context.trace.report(NO_CLASS_OBJECT.on(expression, classifier)); - } return DataFlowUtils.checkType(result, expression, context); } } @@ -120,7 +117,7 @@ public class CallExpressionResolver { return result[0]; } - @Nullable + @NotNull private JetType getExtendedClassObjectType( @NotNull JetType classObjectType, @NotNull Name referencedName, @@ -135,18 +132,14 @@ public class CallExpressionResolver { NamespaceDescriptor namespace = context.scope.getNamespace(referencedName); if (namespace != null) { + //for enums loaded from java binaries scopes.add(namespace.getMemberScope()); } JetScope scope = new ChainedScope(classifier, scopes.toArray(new JetScope[scopes.size()])); return new NamespaceType(referencedName, scope); } - else if (context.expressionPosition == ExpressionPosition.LHS_OF_DOT || classifier.isClassObjectAValue()) { - return classObjectType; - } - else { - return null; - } + return classObjectType; } private boolean furtherNameLookup( diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/autocasts/DataFlowValueFactory.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/autocasts/DataFlowValueFactory.java index d0069211aef..726764a603d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/autocasts/DataFlowValueFactory.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/autocasts/DataFlowValueFactory.java @@ -119,7 +119,12 @@ public class DataFlowValueFactory { } } - private static final IdentifierInfo NO_IDENTIFIER_INFO = new IdentifierInfo(null, false, false); + private static final IdentifierInfo NO_IDENTIFIER_INFO = new IdentifierInfo(null, false, false) { + @Override + public String toString() { + return "NO_IDENTIFIER_INFO"; + } + }; @NotNull private static IdentifierInfo createInfo(Object id, boolean isStable) { @@ -199,7 +204,7 @@ public class DataFlowValueFactory { } if (declarationDescriptor instanceof ClassDescriptor) { ClassDescriptor classDescriptor = (ClassDescriptor) declarationDescriptor; - return createInfo(classDescriptor, classDescriptor.isClassObjectAValue()); + return createInfo(classDescriptor, classDescriptor.getClassObjectDescriptor() != null); } return NO_IDENTIFIER_INFO; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java index 57079753619..48112f4bc74 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java @@ -275,11 +275,6 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc return classObjectDescriptor == null ? null : classObjectDescriptor.getDefaultType(); } - @Override - public boolean isClassObjectAValue() { - return true; - } - @Override public ClassDescriptor getClassObjectDescriptor() { return classObjectDescriptor.compute(); @@ -395,7 +390,6 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyDesc ForceResolveUtil.forceResolveAllContents(getTypeConstructor()); getUnsubstitutedPrimaryConstructor(); getVisibility(); - isClassObjectAValue(); } private class LazyClassTypeConstructor implements LazyDescriptor, TypeConstructor { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java index 6619816241a..5429e327436 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java @@ -256,11 +256,6 @@ public class LazyTypeParameterDescriptor implements TypeParameterDescriptor, Laz return null; } - @Override - public boolean isClassObjectAValue() { - return false; - } - @NotNull @Override public DeclarationDescriptor getOriginal() {