diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java index 3ba2e89023f..141b5c88cb6 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java @@ -51,7 +51,15 @@ public class PositioningStrategies { } return markRange(objectKeyword, delegationSpecifierList); } - return super.mark(element); + else if (element instanceof JetClassObject) { + JetClassObject classObject = (JetClassObject) element; + PsiElement classKeyword = classObject.getClassKeyword(); + PsiElement objectKeyword = classObject.getObjectDeclaration().getObjectKeyword(); + return markRange(classKeyword, objectKeyword); + } + else { + return super.mark(element); + } } }; @@ -130,7 +138,7 @@ public class PositioningStrategies { PsiElement objectKeyword = ((JetObjectDeclaration) element).getObjectKeyword(); PsiElement parent = element.getParent(); if (parent instanceof JetClassObject) { - PsiElement classKeyword = ((JetClassObject) parent).getClassKeywordNode(); + PsiElement classKeyword = ((JetClassObject) parent).getClassKeyword(); PsiElement start = classKeyword == null ? objectKeyword : classKeyword; return markRange(start, objectKeyword); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClassObject.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClassObject.java index 7d6f9ab295c..300727e2894 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClassObject.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetClassObject.java @@ -43,9 +43,8 @@ public class JetClassObject extends JetDeclarationStubclass object { // error + class object { // error val x = 1 - } + } } class B() { @@ -15,9 +14,9 @@ class B() { } object b { - class object { + class object { val x = 1 - } // error + } // error } val a = A.x diff --git a/compiler/testData/diagnostics/tests/classObjects/InnerClassClassObject.kt b/compiler/testData/diagnostics/tests/classObjects/InnerClassClassObject.kt index e6c057f600d..51123e469b7 100644 --- a/compiler/testData/diagnostics/tests/classObjects/InnerClassClassObject.kt +++ b/compiler/testData/diagnostics/tests/classObjects/InnerClassClassObject.kt @@ -2,7 +2,7 @@ class A { inner class B { - class object { } + class object { } } } diff --git a/compiler/testData/diagnostics/tests/classObjects/classObjectInLocalClass.kt b/compiler/testData/diagnostics/tests/classObjects/classObjectInLocalClass.kt index e3b310edb4a..775c2993c54 100644 --- a/compiler/testData/diagnostics/tests/classObjects/classObjectInLocalClass.kt +++ b/compiler/testData/diagnostics/tests/classObjects/classObjectInLocalClass.kt @@ -1,9 +1,9 @@ fun test() { class A { - class object {} + class object {} } object { - class object {} + class object {} } } \ No newline at end of file diff --git a/compiler/testData/diagnostics/tests/enum/enumEntryCannotHaveClassObject.kt b/compiler/testData/diagnostics/tests/enum/enumEntryCannotHaveClassObject.kt index 002b83dbc5d..4a739758612 100644 --- a/compiler/testData/diagnostics/tests/enum/enumEntryCannotHaveClassObject.kt +++ b/compiler/testData/diagnostics/tests/enum/enumEntryCannotHaveClassObject.kt @@ -2,9 +2,9 @@ enum class E { FIRST SECOND { - class object { + class object { fun foo() = 42 - } + } } } diff --git a/compiler/testData/diagnostics/tests/inner/deepInnerClass.kt b/compiler/testData/diagnostics/tests/inner/deepInnerClass.kt index 3ae2e2c1258..809b5f75c79 100644 --- a/compiler/testData/diagnostics/tests/inner/deepInnerClass.kt +++ b/compiler/testData/diagnostics/tests/inner/deepInnerClass.kt @@ -4,8 +4,8 @@ class A { class B { fun test() { class C() : PT> { - class object : P<W, T> { - } + class object : P<W, T> { + } inner class D : PT> } diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/upDownMover/JetDeclarationMover.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/upDownMover/JetDeclarationMover.java index f09bd91b653..ac4aee53405 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/upDownMover/JetDeclarationMover.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/upDownMover/JetDeclarationMover.java @@ -61,8 +61,7 @@ public class JetDeclarationMover extends AbstractJetUpDownMover { @Override public void visitClassObject(@NotNull JetClassObject classObject) { - PsiElement classKeyword = classObject.getClassKeywordNode(); - if (classKeyword != null) memberSuspects.add(classKeyword); + memberSuspects.add(classObject.getClassKeyword()); } @Override diff --git a/idea/testData/checker/ClassObjects.kt b/idea/testData/checker/ClassObjects.kt index 7020b25ff0f..1b3efb7ce4f 100644 --- a/idea/testData/checker/ClassObjects.kt +++ b/idea/testData/checker/ClassObjects.kt @@ -4,9 +4,9 @@ class A { class object { val x = 1 } - class object { // error + class object { // error val x = 1 - } + } } class B() { @@ -14,9 +14,9 @@ class B() { } object b { - class object { + class object { val x = 1 - } + } // error }