diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java index 92a264e8341..4df1fd5a338 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java @@ -35,7 +35,22 @@ import java.util.List; public class PositioningStrategies { - public static final PositioningStrategy DEFAULT = new PositioningStrategy(); + public static final PositioningStrategy DEFAULT = new PositioningStrategy() { + @NotNull + @Override + public List 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 DECLARATION_RETURN_TYPE = new PositioningStrategy() { @NotNull diff --git a/compiler/testData/diagnostics/tests/objects/objectLiteralExpressionTypeMismatch.kt b/compiler/testData/diagnostics/tests/objects/objectLiteralExpressionTypeMismatch.kt new file mode 100644 index 00000000000..324f54a836c --- /dev/null +++ b/compiler/testData/diagnostics/tests/objects/objectLiteralExpressionTypeMismatch.kt @@ -0,0 +1,9 @@ +trait A + +trait B + +fun test1(): B = object : A { +} + +fun test2(): B = object { +} \ No newline at end of file diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index d90aaef30c2..a7dcd42793e 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -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");