Fix a bug which caused class object's visibility to be ignored

This commit is contained in:
Pavel V. Talanov
2012-06-29 21:32:54 +04:00
parent 9878b60462
commit 2975cda4d6
2 changed files with 33 additions and 0 deletions
@@ -17,6 +17,7 @@
package org.jetbrains.jet.lang.psi;
import com.intellij.lang.ASTNode;
import com.intellij.psi.PsiElement;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.JetNodeTypes;
@@ -33,9 +34,19 @@ abstract class JetDeclarationImpl extends JetExpressionImpl implements JetDeclar
@Override
@Nullable
public JetModifierList getModifierList() {
PsiElement parent = getParent();
if (isClassObject(parent)) {
assert parent instanceof JetDeclaration;
return ((JetDeclaration)parent).getModifierList();
}
return (JetModifierList) findChildByType(JetNodeTypes.MODIFIER_LIST);
}
private static boolean isClassObject(@NotNull PsiElement parent) {
return parent.getNode().getElementType().equals(JetNodeTypes.CLASS_OBJECT);
}
@Override
public boolean hasModifier(JetToken modifier) {
JetModifierList modifierList = getModifierList();
@@ -0,0 +1,22 @@
package foo
fun test() {
A.d
A.<!INVISIBLE_MEMBER!>f<!>
B.<!INVISIBLE_MEMBER!>c<!>
}
class A() {
public class object {
val d = 3
private object f {
}
}
}
class B() {
private class object {
val c = 3
}
}