diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetDeclarationImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetDeclarationImpl.java index 96898d9b956..e5d273d32e8 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetDeclarationImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetDeclarationImpl.java @@ -31,6 +31,7 @@ abstract class JetDeclarationImpl extends JetExpressionImpl implements JetDeclar super(node); } + //TODO: code duplication with JetDeclarationStub @Override @Nullable public JetModifierList getModifierList() { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetDeclarationStub.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetDeclarationStub.java index c73d670ff9d..27446d630c8 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetDeclarationStub.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetDeclarationStub.java @@ -17,9 +17,11 @@ package org.jetbrains.jet.lang.psi; import com.intellij.lang.ASTNode; +import com.intellij.psi.PsiElement; import com.intellij.psi.stubs.IStubElementType; import com.intellij.psi.stubs.StubElement; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.JetNodeTypes; import org.jetbrains.jet.lexer.JetToken; @@ -35,11 +37,23 @@ abstract class JetDeclarationStub extends JetElementImplS super(node); } + //TODO: code duplication with JetDeclarationImpl @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(); diff --git a/compiler/testData/diagnostics/tests/ClassObjectVisibility.jet b/compiler/testData/diagnostics/tests/ClassObjectVisibility.jet index d40d2c88932..e970d3179ac 100644 --- a/compiler/testData/diagnostics/tests/ClassObjectVisibility.jet +++ b/compiler/testData/diagnostics/tests/ClassObjectVisibility.jet @@ -3,7 +3,7 @@ package foo fun test() { A.d A.f - B.c + CCC.classObjectVar } class A() { @@ -15,8 +15,8 @@ class A() { } } -class B() { +class CCC() { private class object { - val c = 3 + val classObjectVar = 3 } } \ No newline at end of file