Add isLocal() to JetClassOrObject, use it where appropriate
This commit is contained in:
@@ -983,7 +983,7 @@ public class JetControlFlowProcessor {
|
|||||||
generateInstructions(specifier, context);
|
generateInstructions(specifier, context);
|
||||||
}
|
}
|
||||||
List<JetDeclaration> declarations = classOrObject.getDeclarations();
|
List<JetDeclaration> declarations = classOrObject.getDeclarations();
|
||||||
if (JetPsiUtil.isLocal(classOrObject)) {
|
if (classOrObject.isLocal()) {
|
||||||
for (JetDeclaration declaration : declarations) {
|
for (JetDeclaration declaration : declarations) {
|
||||||
generateInstructions(declaration, context);
|
generateInstructions(declaration, context);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -215,4 +215,9 @@ public class JetClass extends JetTypeParameterListOwnerStub<PsiJetClassStub> imp
|
|||||||
public boolean isTopLevel() {
|
public boolean isTopLevel() {
|
||||||
return getContainingFile() == getParent();
|
return getContainingFile() == getParent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isLocal() {
|
||||||
|
return JetPsiUtil.isLocal(this);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,4 +51,6 @@ public interface JetClassOrObject extends PsiNameIdentifierOwner, JetDeclaration
|
|||||||
JetClassBody getBody();
|
JetClassBody getBody();
|
||||||
|
|
||||||
boolean isTopLevel();
|
boolean isTopLevel();
|
||||||
|
|
||||||
|
boolean isLocal();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -139,6 +139,11 @@ public class JetObjectDeclaration extends JetNamedDeclarationStub<PsiJetObjectSt
|
|||||||
return (JetClassBody) findChildByType(JetNodeTypes.CLASS_BODY);
|
return (JetClassBody) findChildByType(JetNodeTypes.CLASS_BODY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isLocal() {
|
||||||
|
return JetPsiUtil.isLocal(this);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@NotNull
|
@NotNull
|
||||||
public List<JetDeclaration> getDeclarations() {
|
public List<JetDeclaration> getDeclarations() {
|
||||||
|
|||||||
@@ -310,7 +310,7 @@ public class JetPsiUtil {
|
|||||||
public static void deleteClass(@NotNull JetClassOrObject clazz) {
|
public static void deleteClass(@NotNull JetClassOrObject clazz) {
|
||||||
CheckUtil.checkWritable(clazz);
|
CheckUtil.checkWritable(clazz);
|
||||||
JetFile file = clazz.getContainingJetFile();
|
JetFile file = clazz.getContainingJetFile();
|
||||||
if (isLocal(clazz) || file.getDeclarations().size() > 1) {
|
if (clazz.isLocal() || file.getDeclarations().size() > 1) {
|
||||||
PsiElement parent = clazz.getParent();
|
PsiElement parent = clazz.getParent();
|
||||||
CodeEditUtil.removeChild(parent.getNode(), clazz.getNode());
|
CodeEditUtil.removeChild(parent.getNode(), clazz.getNode());
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -67,7 +67,7 @@ public class JetClassElementType extends JetStubElementType<PsiJetClassStub, Jet
|
|||||||
return new PsiJetClassStubImpl(
|
return new PsiJetClassStubImpl(
|
||||||
getStubType(isEnumEntry), parentStub, StringRef.fromString(fqName != null ? fqName.asString() : null),
|
getStubType(isEnumEntry), parentStub, StringRef.fromString(fqName != null ? fqName.asString() : null),
|
||||||
StringRef.fromString(psi.getName()), Utils.instance$.wrapStrings(superNames), psi.isTrait(), psi.isEnum(), isEnumEntry,
|
StringRef.fromString(psi.getName()), Utils.instance$.wrapStrings(superNames), psi.isTrait(), psi.isEnum(), isEnumEntry,
|
||||||
psi.isAnnotation(), psi.isInner(), JetPsiUtil.isLocal(psi), psi.isTopLevel());
|
psi.isAnnotation(), psi.isInner(), psi.isLocal(), psi.isTopLevel());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+1
-1
@@ -53,7 +53,7 @@ public class JetObjectElementType extends JetStubElementType<PsiJetObjectStub, J
|
|||||||
FqName fqName = ResolveSessionUtils.safeFqNameForLazyResolve(psi);
|
FqName fqName = ResolveSessionUtils.safeFqNameForLazyResolve(psi);
|
||||||
List<String> superNames = PsiUtilPackage.getSuperNames(psi);
|
List<String> superNames = PsiUtilPackage.getSuperNames(psi);
|
||||||
return new PsiJetObjectStubImpl(parentStub, StringRef.fromString(name), fqName, Utils.instance$.wrapStrings(superNames),
|
return new PsiJetObjectStubImpl(parentStub, StringRef.fromString(name), fqName, Utils.instance$.wrapStrings(superNames),
|
||||||
psi.isTopLevel(), isClassObject(psi), JetPsiUtil.isLocal(psi), psi.isObjectLiteral());
|
psi.isTopLevel(), isClassObject(psi), psi.isLocal(), psi.isObjectLiteral());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
+2
-3
@@ -49,7 +49,6 @@ import org.jetbrains.jet.codegen.state.Progress;
|
|||||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
import org.jetbrains.jet.lang.psi.JetClassOrObject;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
import org.jetbrains.jet.lang.psi.JetFile;
|
||||||
import org.jetbrains.jet.lang.psi.JetPsiUtil;
|
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
|
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.name.FqName;
|
import org.jetbrains.jet.lang.resolve.name.FqName;
|
||||||
@@ -120,7 +119,7 @@ public class KotlinJavaFileStubProvider<T extends WithFileStub> implements Cache
|
|||||||
public static KotlinJavaFileStubProvider<OutermostKotlinClassLightClassData> createForDeclaredClass(@NotNull final JetClassOrObject classOrObject) {
|
public static KotlinJavaFileStubProvider<OutermostKotlinClassLightClassData> createForDeclaredClass(@NotNull final JetClassOrObject classOrObject) {
|
||||||
return new KotlinJavaFileStubProvider<OutermostKotlinClassLightClassData>(
|
return new KotlinJavaFileStubProvider<OutermostKotlinClassLightClassData>(
|
||||||
classOrObject.getProject(),
|
classOrObject.getProject(),
|
||||||
JetPsiUtil.isLocal(classOrObject),
|
classOrObject.isLocal(),
|
||||||
new StubGenerationStrategy<OutermostKotlinClassLightClassData>() {
|
new StubGenerationStrategy<OutermostKotlinClassLightClassData>() {
|
||||||
private JetFile getFile() {
|
private JetFile getFile() {
|
||||||
return classOrObject.getContainingJetFile();
|
return classOrObject.getContainingJetFile();
|
||||||
@@ -198,7 +197,7 @@ public class KotlinJavaFileStubProvider<T extends WithFileStub> implements Cache
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (JetPsiUtil.isLocal(generatedClassOrObject) && JetPsiUtil.isLocal(classOrObject)) {
|
if (generatedClassOrObject.isLocal() && classOrObject.isLocal()) {
|
||||||
// Local classes should be process by CodegenAnnotatingVisitor to
|
// Local classes should be process by CodegenAnnotatingVisitor to
|
||||||
// decide what class they should be placed in.
|
// decide what class they should be placed in.
|
||||||
//
|
//
|
||||||
|
|||||||
+2
-2
@@ -82,7 +82,7 @@ public class KotlinLightClassForExplicitDeclaration extends KotlinWrappingLightC
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static String getJvmInternalName(JetClassOrObject classOrObject) {
|
private static String getJvmInternalName(JetClassOrObject classOrObject) {
|
||||||
if (JetPsiUtil.isLocal(classOrObject)) {
|
if (classOrObject.isLocal()) {
|
||||||
LightClassDataForKotlinClass data = getLightClassDataExactly(classOrObject);
|
LightClassDataForKotlinClass data = getLightClassDataExactly(classOrObject);
|
||||||
return data != null ? data.getJvmInternalName() : "";
|
return data != null ? data.getJvmInternalName() : "";
|
||||||
}
|
}
|
||||||
@@ -97,7 +97,7 @@ public class KotlinLightClassForExplicitDeclaration extends KotlinWrappingLightC
|
|||||||
@Nullable
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
protected PsiElement compute() {
|
protected PsiElement compute() {
|
||||||
if (JetPsiUtil.isLocal(classOrObject)) {
|
if (classOrObject.isLocal()) {
|
||||||
//noinspection unchecked
|
//noinspection unchecked
|
||||||
PsiElement declaration = JetPsiUtil.getTopmostParentOfTypes(
|
PsiElement declaration = JetPsiUtil.getTopmostParentOfTypes(
|
||||||
classOrObject,
|
classOrObject,
|
||||||
|
|||||||
+1
-1
@@ -97,7 +97,7 @@ public class IDELightClassGenerationSupport extends LightClassGenerationSupport
|
|||||||
public LightClassConstructionContext getContextForClassOrObject(@NotNull JetClassOrObject classOrObject) {
|
public LightClassConstructionContext getContextForClassOrObject(@NotNull JetClassOrObject classOrObject) {
|
||||||
ResolveSessionForBodies session = ResolvePackage.getLazyResolveSession(classOrObject);
|
ResolveSessionForBodies session = ResolvePackage.getLazyResolveSession(classOrObject);
|
||||||
|
|
||||||
if (JetPsiUtil.isLocal(classOrObject)) {
|
if (classOrObject.isLocal()) {
|
||||||
BindingContext bindingContext = session.resolveToElement(classOrObject);
|
BindingContext bindingContext = session.resolveToElement(classOrObject);
|
||||||
ClassDescriptor descriptor = bindingContext.get(BindingContext.CLASS, classOrObject);
|
ClassDescriptor descriptor = bindingContext.get(BindingContext.CLASS, classOrObject);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user