From abdf34418a2dc999387b4ece7fe9e5cf5f0e7174 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Sun, 29 Apr 2012 13:43:18 +0400 Subject: [PATCH] Got rid of returning empty range list in position strategies (in places where they don't depend on syntax errors). --- .../org/jetbrains/jet/lang/diagnostics/Errors.java | 8 ++++---- .../jet/lang/diagnostics/PositioningStrategies.java | 11 +++++------ .../UnresolvedReferenceDiagnosticFactory.java | 5 ++++- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java index 23bcde0b80e..488fa24c38d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java @@ -247,12 +247,12 @@ public interface Errors { public List mark(@NotNull JetDeclarationWithBody element) { JetExpression bodyExpression = element.getBodyExpression(); if (!(bodyExpression instanceof JetBlockExpression)) { - return Collections.emptyList(); + return markElement(element); } JetBlockExpression blockExpression = (JetBlockExpression)bodyExpression; TextRange lastBracketRange = blockExpression.getLastBracketRange(); if (lastBracketRange == null) { - return Collections.emptyList(); + return markElement(element); } return markRange(lastBracketRange); } @@ -403,7 +403,7 @@ public interface Errors { JetClass klass = (JetClass)jetDeclaration; PsiElement nameAsDeclaration = klass.getNameIdentifier(); if (nameAsDeclaration == null) { - return markRange(klass.getTextRange()); + return markElement(klass); } PsiElement primaryConstructorParameterList = klass.getPrimaryConstructorParameterList(); if (primaryConstructorParameterList == null) { @@ -416,7 +416,7 @@ public interface Errors { } else { // safe way - return markRange(jetDeclaration.getTextRange()); + return markElement(jetDeclaration); } } }); 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 457a66cb034..71b28bb5c6b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java @@ -59,10 +59,9 @@ public class PositioningStrategies { returnTypeRef = accessor.getReturnTypeReference(); nameNode = accessor.getNamePlaceholder().getNode(); } - if (returnTypeRef != null) return Collections.singletonList(returnTypeRef.getTextRange()); - if (nameNode != null) return Collections.singletonList(nameNode.getTextRange()); - return super.mark(declaration); - + if (returnTypeRef != null) return markElement(returnTypeRef); + if (nameNode != null) return markNode(nameNode); + return markElement(declaration); } private ASTNode getNameNode(JetNamedDeclaration function) { @@ -100,9 +99,9 @@ public class PositioningStrategies { assert modifierList != null; ASTNode node = modifierList.getModifierNode(token); assert node != null; - return Collections.singletonList(node.getTextRange()); + return markNode(node); } - return Collections.emptyList(); + return markElement(modifierListOwner); } }; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnosticFactory.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnosticFactory.java index fd80049556d..992f4317ad6 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnosticFactory.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnosticFactory.java @@ -34,7 +34,10 @@ public class UnresolvedReferenceDiagnosticFactory extends DiagnosticFactory1 mark(@NotNull JetReferenceExpression element) { if (element instanceof JetArrayAccessExpression) { - return ((JetArrayAccessExpression) element).getBracketRanges(); + List ranges = ((JetArrayAccessExpression) element).getBracketRanges(); + if (!ranges.isEmpty()) { + return ranges; + } } return Collections.singletonList(element.getTextRange()); } -- GitLab