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 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 objectKeyword = ((JetObjectDeclaration) element).getObjectKeyword();
|
||||||
PsiElement parent = element.getParent();
|
PsiElement parent = element.getParent();
|
||||||
if (parent instanceof JetClassObject) {
|
if (parent instanceof JetClassObject) {
|
||||||
PsiElement classKeyword = ((JetClassObject) parent).getClassKeywordNode();
|
PsiElement classKeyword = ((JetClassObject) parent).getClassKeyword();
|
||||||
PsiElement start = classKeyword == null ? objectKeyword : classKeyword;
|
PsiElement start = classKeyword == null ? objectKeyword : classKeyword;
|
||||||
return markRange(start, objectKeyword);
|
return markRange(start, objectKeyword);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -43,9 +43,8 @@ public class JetClassObject extends JetDeclarationStub<KotlinPlaceHolderStub<Jet
|
|||||||
return getRequiredStubOrPsiChild(JetStubElementTypes.OBJECT_DECLARATION);
|
return getRequiredStubOrPsiChild(JetStubElementTypes.OBJECT_DECLARATION);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable @IfNotParsed
|
@NotNull
|
||||||
public PsiElement getClassKeywordNode() {
|
public PsiElement getClassKeyword() {
|
||||||
ASTNode keywordNode = getNode().findChildByType(JetTokens.CLASS_KEYWORD);
|
return findChildByType(JetTokens.CLASS_KEYWORD);
|
||||||
return keywordNode != null ? keywordNode.getPsi() : null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,12 @@
|
|||||||
|
|
||||||
package Jet86
|
package Jet86
|
||||||
|
|
||||||
class A {
|
class A {
|
||||||
class object {
|
class object {
|
||||||
val x = 1
|
val x = 1
|
||||||
}
|
}
|
||||||
<!MANY_CLASS_OBJECTS!>class object { // error
|
<!MANY_CLASS_OBJECTS!>class object<!> { // error
|
||||||
val x = 1
|
val x = 1
|
||||||
}<!>
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class B() {
|
class B() {
|
||||||
@@ -15,9 +14,9 @@ class B() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
object b {
|
object b {
|
||||||
<!CLASS_OBJECT_NOT_ALLOWED!>class object {
|
<!CLASS_OBJECT_NOT_ALLOWED!>class object<!> {
|
||||||
val x = 1
|
val x = 1
|
||||||
} // error<!>
|
} // error
|
||||||
}
|
}
|
||||||
|
|
||||||
val a = A.x
|
val a = A.x
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
class A {
|
class A {
|
||||||
inner class B {
|
inner class B {
|
||||||
<!CLASS_OBJECT_NOT_ALLOWED!>class object { }<!>
|
<!CLASS_OBJECT_NOT_ALLOWED!>class object<!> { }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
fun test() {
|
fun test() {
|
||||||
class A {
|
class A {
|
||||||
<!CLASS_OBJECT_NOT_ALLOWED!>class object {}<!>
|
<!CLASS_OBJECT_NOT_ALLOWED!>class object<!> {}
|
||||||
}
|
}
|
||||||
|
|
||||||
object {
|
object {
|
||||||
<!CLASS_OBJECT_NOT_ALLOWED!>class object {}<!>
|
<!CLASS_OBJECT_NOT_ALLOWED!>class object<!> {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,9 +2,9 @@ enum class E {
|
|||||||
FIRST
|
FIRST
|
||||||
|
|
||||||
SECOND {
|
SECOND {
|
||||||
<!CLASS_OBJECT_NOT_ALLOWED!>class object {
|
<!CLASS_OBJECT_NOT_ALLOWED!>class object<!> {
|
||||||
fun foo() = 42
|
fun foo() = 42
|
||||||
}<!>
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ class A<T> {
|
|||||||
class B {
|
class B {
|
||||||
fun test() {
|
fun test() {
|
||||||
class C<W>() : P<W, <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>T<!>> {
|
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<!>>
|
inner class D : P<W, <!INACCESSIBLE_OUTER_CLASS_EXPRESSION!>T<!>>
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -61,8 +61,7 @@ public class JetDeclarationMover extends AbstractJetUpDownMover {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void visitClassObject(@NotNull JetClassObject classObject) {
|
public void visitClassObject(@NotNull JetClassObject classObject) {
|
||||||
PsiElement classKeyword = classObject.getClassKeywordNode();
|
memberSuspects.add(classObject.getClassKeyword());
|
||||||
if (classKeyword != null) memberSuspects.add(classKeyword);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -4,9 +4,9 @@ class A {
|
|||||||
class object {
|
class object {
|
||||||
val x = 1
|
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
|
val x = 1
|
||||||
}</error>
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class B() {
|
class B() {
|
||||||
@@ -14,9 +14,9 @@ class B() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
object 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
|
val x = 1
|
||||||
}</error>
|
}
|
||||||
// error
|
// error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user