LTDA: Don't store illegal 'inner' modifier in descriptors

This commit is contained in:
Nikolay Krasko
2014-11-24 21:27:46 +03:00
committed by Nikolay Krasko
parent f2b6ea29c9
commit 0f852efb54
4 changed files with 12 additions and 11 deletions
@@ -154,7 +154,7 @@ public class ModifiersChecker {
}
}
private static boolean isIllegalInner(@NotNull DeclarationDescriptor descriptor) {
public static boolean isIllegalInner(@NotNull DeclarationDescriptor descriptor) {
if (!(descriptor instanceof ClassDescriptor)) return true;
ClassDescriptor classDescriptor = (ClassDescriptor) descriptor;
if (classDescriptor.getKind() != ClassKind.CLASS) return true;
@@ -34,6 +34,7 @@ import org.jetbrains.jet.lang.descriptors.impl.ClassDescriptorBase;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.jet.lang.resolve.ModifiersChecker;
import org.jetbrains.jet.lang.resolve.TypeHierarchyResolver;
import org.jetbrains.jet.lang.resolve.lazy.ForceResolveUtil;
import org.jetbrains.jet.lang.resolve.lazy.LazyEntity;
@@ -132,7 +133,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements ClassDes
this.visibility = isSyntheticClassObject(this)
? DescriptorUtils.getSyntheticClassObjectVisibility()
: resolveVisibilityFromModifiers(modifierList, getDefaultClassVisibility(this));
this.isInner = isInnerClass(modifierList);
this.isInner = isInnerClass(modifierList) && !ModifiersChecker.isIllegalInner(this);
StorageManager storageManager = resolveSession.getStorageManager();