changed default positioning strategy:

added special handling for JetObjectLiteralExpression
This commit is contained in:
Svetlana Isakova
2013-12-26 18:09:48 +04:00
committed by Andrey Breslav
parent d4c2a542eb
commit 531d337486
3 changed files with 30 additions and 1 deletions
@@ -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");