From b5374584bbe01a186dd68c522b823345ad1e7a4d Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Mon, 31 Mar 2014 14:09:17 +0400 Subject: [PATCH] Add and use JetClassOrObject#isTopLevel() --- .../frontend/src/org/jetbrains/jet/lang/psi/JetClass.java | 5 +++++ .../src/org/jetbrains/jet/lang/psi/JetClassOrObject.java | 2 ++ .../org/jetbrains/jet/lang/psi/JetObjectDeclaration.java | 1 + .../jet/asJava/KotlinLightClassForExplicitDeclaration.java | 5 ++--- .../org/jetbrains/jet/plugin/util/JetPsiHeuristicsUtil.java | 6 +----- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClass.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClass.java index ff9200da5aa..758f705d4b2 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClass.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClass.java @@ -210,4 +210,9 @@ public class JetClass extends JetTypeParameterListOwnerStub imp public ItemPresentation getPresentation() { return ItemPresentationProviders.getItemPresentation(this); } + + @Override + public boolean isTopLevel() { + return getContainingFile() == getParent(); + } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClassOrObject.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClassOrObject.java index 5a1b2addbc2..158d1a351cc 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClassOrObject.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClassOrObject.java @@ -49,4 +49,6 @@ public interface JetClassOrObject extends PsiNameIdentifierOwner, JetDeclaration @Nullable JetClassBody getBody(); + + boolean isTopLevel(); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetObjectDeclaration.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetObjectDeclaration.java index 44eec626574..7e01e558151 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetObjectDeclaration.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetObjectDeclaration.java @@ -53,6 +53,7 @@ public class JetObjectDeclaration extends JetNamedDeclarationStub psiModifiers = Sets.newHashSet(); // PUBLIC, PROTECTED, PRIVATE, ABSTRACT, FINAL @@ -417,7 +416,7 @@ public class KotlinLightClassForExplicitDeclaration extends KotlinWrappingLightC if (classOrObject.hasModifier(PRIVATE_KEYWORD)) { // Top-level private class has PUBLIC visibility in Java // Nested private class has PRIVATE visibility - psiModifiers.add(nestedClass ? PsiModifier.PRIVATE : PsiModifier.PUBLIC); + psiModifiers.add(classOrObject.isTopLevel() ? PsiModifier.PUBLIC : PsiModifier.PRIVATE); } if (!psiModifiers.contains(PsiModifier.PRIVATE) && !psiModifiers.contains(PsiModifier.PROTECTED)) { @@ -433,7 +432,7 @@ public class KotlinLightClassForExplicitDeclaration extends KotlinWrappingLightC psiModifiers.add(PsiModifier.FINAL); } - if (nestedClass && !classOrObject.hasModifier(INNER_KEYWORD)) { + if (!classOrObject.isTopLevel() && !classOrObject.hasModifier(INNER_KEYWORD)) { psiModifiers.add(PsiModifier.STATIC); } diff --git a/idea/src/org/jetbrains/jet/plugin/util/JetPsiHeuristicsUtil.java b/idea/src/org/jetbrains/jet/plugin/util/JetPsiHeuristicsUtil.java index ad570a23656..0da6fa1ddc7 100644 --- a/idea/src/org/jetbrains/jet/plugin/util/JetPsiHeuristicsUtil.java +++ b/idea/src/org/jetbrains/jet/plugin/util/JetPsiHeuristicsUtil.java @@ -41,7 +41,7 @@ public class JetPsiHeuristicsUtil { // It is a Kotlin class already, we need to properly check visibility? JetClassOrObject classOrObject = lightClass.getOrigin(); - if (isTopLevelDeclaration(classOrObject) && classOrObject.hasModifier(JetTokens.PRIVATE_KEYWORD)) { + if (classOrObject.isTopLevel() && classOrObject.hasModifier(JetTokens.PRIVATE_KEYWORD)) { // The class is declared private in the targetPackage // It is visible in this package and all of its subpackages JetFile targetFile = classOrObject.getContainingJetFile(); @@ -53,8 +53,4 @@ public class JetPsiHeuristicsUtil { } return member.hasModifierProperty(PsiModifier.PUBLIC) || member.hasModifierProperty(PsiModifier.PROTECTED); } - - public static boolean isTopLevelDeclaration(@NotNull JetClassOrObject classOrObject) { - return classOrObject.getContainingFile() == classOrObject.getParent(); - } }