Fixed highlighting range for errors in class object
This commit is contained in:
+10
-2
@@ -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);
|
||||
}
|
||||
|
||||
@@ -43,9 +43,8 @@ public class JetClassObject extends JetDeclarationStub<KotlinPlaceHolderStub<Jet
|
||||
return getRequiredStubOrPsiChild(JetStubElementTypes.OBJECT_DECLARATION);
|
||||
}
|
||||
|
||||
@Nullable @IfNotParsed
|
||||
public PsiElement getClassKeywordNode() {
|
||||
ASTNode keywordNode = getNode().findChildByType(JetTokens.CLASS_KEYWORD);
|
||||
return keywordNode != null ? keywordNode.getPsi() : null;
|
||||
@NotNull
|
||||
public PsiElement getClassKeyword() {
|
||||
return findChildByType(JetTokens.CLASS_KEYWORD);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,12 @@
|
||||
|
||||
package Jet86
|
||||
|
||||
class A {
|
||||
class object {
|
||||
val x = 1
|
||||
}
|
||||
<!MANY_CLASS_OBJECTS!>class object { // error
|
||||
<!MANY_CLASS_OBJECTS!>class object<!> { // error
|
||||
val x = 1
|
||||
}<!>
|
||||
}
|
||||
}
|
||||
|
||||
class B() {
|
||||
@@ -15,9 +14,9 @@ class B() {
|
||||
}
|
||||
|
||||
object b {
|
||||
<!CLASS_OBJECT_NOT_ALLOWED!>class object {
|
||||
<!CLASS_OBJECT_NOT_ALLOWED!>class object<!> {
|
||||
val x = 1
|
||||
} // error<!>
|
||||
} // error
|
||||
}
|
||||
|
||||
val a = A.x
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
class A {
|
||||
inner class B {
|
||||
<!CLASS_OBJECT_NOT_ALLOWED!>class object { }<!>
|
||||
<!CLASS_OBJECT_NOT_ALLOWED!>class object<!> { }
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
fun test() {
|
||||
class A {
|
||||
<!CLASS_OBJECT_NOT_ALLOWED!>class object {}<!>
|
||||
<!CLASS_OBJECT_NOT_ALLOWED!>class object<!> {}
|
||||
}
|
||||
|
||||
object {
|
||||
<!CLASS_OBJECT_NOT_ALLOWED!>class object {}<!>
|
||||
<!CLASS_OBJECT_NOT_ALLOWED!>class object<!> {}
|
||||
}
|
||||
}
|
||||
@@ -2,9 +2,9 @@ enum class E {
|
||||
FIRST
|
||||
|
||||
SECOND {
|
||||
<!CLASS_OBJECT_NOT_ALLOWED!>class object {
|
||||
<!CLASS_OBJECT_NOT_ALLOWED!>class object<!> {
|
||||
fun foo() = 42
|
||||
}<!>
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ class A<T> {
|
||||
class B {
|
||||
fun test() {
|
||||
class C<W>() : P<W, <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>T<!>> {
|
||||
<!CLASS_OBJECT_NOT_ALLOWED!>class object : P<<!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>W<!>, <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>T<!>> {
|
||||
}<!>
|
||||
<!CLASS_OBJECT_NOT_ALLOWED!>class object<!> : P<<!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>W<!>, <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>T<!>> {
|
||||
}
|
||||
|
||||
inner class D : P<W, <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>T<!>>
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -4,9 +4,9 @@ class A {
|
||||
class object {
|
||||
val x = 1
|
||||
}
|
||||
<error>class object { // error
|
||||
<error descr="[MANY_CLASS_OBJECTS] Only one class object is allowed per class">class object</error> { // error
|
||||
val x = 1
|
||||
}</error>
|
||||
}
|
||||
}
|
||||
|
||||
class B() {
|
||||
@@ -14,9 +14,9 @@ class B() {
|
||||
}
|
||||
|
||||
object b {
|
||||
<error>class object {
|
||||
<error descr="[CLASS_OBJECT_NOT_ALLOWED] A class object is not allowed here">class object</error> {
|
||||
val x = 1
|
||||
}</error>
|
||||
}
|
||||
// error
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user