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 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>() {
|
||||
@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");
|
||||
}
|
||||
|
||||
@TestMetadata("objectLiteralExpressionTypeMismatch.kt")
|
||||
public void testObjectLiteralExpressionTypeMismatch() throws Exception {
|
||||
doTest("compiler/testData/diagnostics/tests/objects/objectLiteralExpressionTypeMismatch.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("Objects.kt")
|
||||
public void testObjects() throws Exception {
|
||||
doTest("compiler/testData/diagnostics/tests/objects/Objects.kt");
|
||||
|
||||
Reference in New Issue
Block a user