Realization of class object fields as static fields of outer class
#KT-2213 Fixed
This commit is contained in:
@@ -553,6 +553,10 @@ public class JetPsiUtil {
|
||||
return getOutermostClassOrObject(classOrObject) == null;
|
||||
}
|
||||
|
||||
public static boolean isTrait(@NotNull JetClassOrObject classOrObject) {
|
||||
return classOrObject instanceof JetClass && ((JetClass) classOrObject).isTrait();
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static JetClassOrObject getOutermostClassOrObject(@NotNull JetClassOrObject classOrObject) {
|
||||
JetClassOrObject current = classOrObject;
|
||||
|
||||
@@ -27,6 +27,7 @@ import org.jetbrains.jet.lang.descriptors.impl.AnonymousFunctionDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorParent;
|
||||
import org.jetbrains.jet.lang.psi.JetElement;
|
||||
import org.jetbrains.jet.lang.psi.JetFunction;
|
||||
import org.jetbrains.jet.lang.psi.JetProperty;
|
||||
import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||
import org.jetbrains.jet.lang.resolve.name.FqNameUnsafe;
|
||||
@@ -289,6 +290,10 @@ public class DescriptorUtils {
|
||||
return isKindOf(descriptor, ClassKind.ENUM_CLASS);
|
||||
}
|
||||
|
||||
public static boolean isClass(@NotNull DeclarationDescriptor descriptor) {
|
||||
return isKindOf(descriptor, ClassKind.CLASS);
|
||||
}
|
||||
|
||||
public static boolean isKindOf(@NotNull JetType jetType, @NotNull ClassKind classKind) {
|
||||
ClassifierDescriptor descriptor = jetType.getConstructor().getDeclarationDescriptor();
|
||||
return isKindOf(descriptor, classKind);
|
||||
@@ -572,4 +577,13 @@ public class DescriptorUtils {
|
||||
}
|
||||
return allSuperclasses;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static PropertyDescriptor getPropertyDescriptor(@NotNull JetProperty property, @NotNull BindingContext bindingContext) {
|
||||
VariableDescriptor descriptor = bindingContext.get(BindingContext.VARIABLE, property);
|
||||
if (!(descriptor instanceof PropertyDescriptor)) {
|
||||
throw new UnsupportedOperationException("expect a property to have a property descriptor");
|
||||
}
|
||||
return (PropertyDescriptor) descriptor;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user