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();
@@ -103,7 +103,7 @@ internal final enum class E : kotlin.Enum<E> {
}
}
public abstract enum entry ABSTRACT : E {
public enum entry ABSTRACT : E {
private constructor ABSTRACT()
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: E): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -123,7 +123,7 @@ internal final enum class E : kotlin.Enum<E> {
}
}
public open enum entry OPEN : E {
public enum entry OPEN : E {
private constructor OPEN()
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: E): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -143,7 +143,7 @@ internal final enum class E : kotlin.Enum<E> {
}
}
public open enum entry OVERRIDE : E {
public enum entry OVERRIDE : E {
private constructor OVERRIDE()
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: E): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -4,14 +4,14 @@ internal val R: kotlin.Any
internal val prop: kotlin.Int = 42
internal fun foo(): kotlin.Unit
internal final inner class A {
internal final class A {
public constructor A()
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
}
internal inner trait B {
internal trait B {
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
@@ -51,7 +51,7 @@ internal final class D {
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
}
internal inner trait F {
internal trait F {
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
@@ -71,7 +71,7 @@ internal final class D {
}
}
internal final inner enum class R : kotlin.Enum<D.R> {
internal final enum class R : kotlin.Enum<D.R> {
private constructor R()
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: D.R): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
@@ -85,7 +85,7 @@ internal final class D {
public final /*synthesized*/ fun values(): kotlin.Array<D.R>
}
internal final inner annotation class S : kotlin.Annotation {
internal final annotation class S : kotlin.Annotation {
public constructor S()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -146,7 +146,7 @@ internal trait K {
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
internal final inner class L {
internal final class L {
public constructor L()
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int