changed default positioning strategy:
added special handling for JetObjectLiteralExpression
This commit is contained in:
committed by
Andrey Breslav
parent
d4c2a542eb
commit
531d337486
+16
-1
@@ -35,7 +35,22 @@ import java.util.List;
|
|||||||
|
|
||||||
public class PositioningStrategies {
|
public class PositioningStrategies {
|
||||||
|
|
||||||
public static final PositioningStrategy<PsiElement> DEFAULT = new PositioningStrategy<PsiElement>();
|
public static final PositioningStrategy<PsiElement> DEFAULT = new PositioningStrategy<PsiElement>() {
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public List<TextRange> mark(@NotNull PsiElement element) {
|
||||||
|
if (element instanceof JetObjectLiteralExpression) {
|
||||||
|
JetObjectDeclaration objectDeclaration = ((JetObjectLiteralExpression) element).getObjectDeclaration();
|
||||||
|
PsiElement objectKeyword = objectDeclaration.getObjectKeyword();
|
||||||
|
JetDelegationSpecifierList delegationSpecifierList = objectDeclaration.getDelegationSpecifierList();
|
||||||
|
if (delegationSpecifierList == null) {
|
||||||
|
return markElement(objectKeyword);
|
||||||
|
}
|
||||||
|
return markRange(objectKeyword.getTextRange().union(delegationSpecifierList.getTextRange()));
|
||||||
|
}
|
||||||
|
return super.mark(element);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public static final PositioningStrategy<JetDeclaration> DECLARATION_RETURN_TYPE = new PositioningStrategy<JetDeclaration>() {
|
public static final PositioningStrategy<JetDeclaration> DECLARATION_RETURN_TYPE = new PositioningStrategy<JetDeclaration>() {
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
trait A
|
||||||
|
|
||||||
|
trait B
|
||||||
|
|
||||||
|
fun test1(): B = <!TYPE_MISMATCH!>object : A<!> {
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test2(): B = <!TYPE_MISMATCH!>object<!> {
|
||||||
|
}
|
||||||
@@ -4871,6 +4871,11 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
|
|||||||
doTest("compiler/testData/diagnostics/tests/objects/kt2240.kt");
|
doTest("compiler/testData/diagnostics/tests/objects/kt2240.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("objectLiteralExpressionTypeMismatch.kt")
|
||||||
|
public void testObjectLiteralExpressionTypeMismatch() throws Exception {
|
||||||
|
doTest("compiler/testData/diagnostics/tests/objects/objectLiteralExpressionTypeMismatch.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("Objects.kt")
|
@TestMetadata("Objects.kt")
|
||||||
public void testObjects() throws Exception {
|
public void testObjects() throws Exception {
|
||||||
doTest("compiler/testData/diagnostics/tests/objects/Objects.kt");
|
doTest("compiler/testData/diagnostics/tests/objects/Objects.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user