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 0741589d7ff..31334a1c220 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java @@ -69,7 +69,7 @@ public interface Errors { DiagnosticFactory1 REDECLARATION = DiagnosticFactory1.create(ERROR, FOR_REDECLARATION); - UnresolvedReferenceDiagnosticFactory UNRESOLVED_REFERENCE = UnresolvedReferenceDiagnosticFactory.create(); + DiagnosticFactory1 UNRESOLVED_REFERENCE = DiagnosticFactory1.create(ERROR, FOR_UNRESOLVED_REFERENCE); //Elements with "INVISIBLE_REFERENCE" error are marked as unresolved, unlike elements with "INVISIBLE_MEMBER" error //"INVISIBLE_REFERENCE" is used for invisible classes references and references in import @@ -307,7 +307,8 @@ public interface Errors { SimpleDiagnosticFactory MIXING_NAMED_AND_POSITIONED_ARGUMENTS = SimpleDiagnosticFactory.create(ERROR); SimpleDiagnosticFactory ARGUMENT_PASSED_TWICE = SimpleDiagnosticFactory.create(ERROR); - UnresolvedReferenceDiagnosticFactory NAMED_PARAMETER_NOT_FOUND = UnresolvedReferenceDiagnosticFactory.create(); + DiagnosticFactory1 NAMED_PARAMETER_NOT_FOUND = + DiagnosticFactory1.create(ERROR, FOR_UNRESOLVED_REFERENCE); SimpleDiagnosticFactory VARARG_OUTSIDE_PARENTHESES = SimpleDiagnosticFactory.create(ERROR); SimpleDiagnosticFactory NON_VARARG_SPREAD = SimpleDiagnosticFactory.create(ERROR); 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 5096e3de618..d49d8a2daad 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/PositioningStrategies.java @@ -28,6 +28,7 @@ import org.jetbrains.jet.lexer.JetKeywordToken; import org.jetbrains.jet.lexer.JetTokens; import java.util.Arrays; +import java.util.Collections; import java.util.List; public class PositioningStrategies { @@ -189,6 +190,20 @@ public class PositioningStrategies { return markElement(element); } }; + public static final PositioningStrategy FOR_UNRESOLVED_REFERENCE = + new PositioningStrategy() { + @NotNull + @Override + public List mark(@NotNull JetReferenceExpression element) { + if (element instanceof JetArrayAccessExpression) { + List ranges = ((JetArrayAccessExpression) element).getBracketRanges(); + if (!ranges.isEmpty()) { + return ranges; + } + } + return Collections.singletonList(element.getTextRange()); + } + }; public static PositioningStrategy modifierSetPosition(final JetKeywordToken... tokens) { return new PositioningStrategy() { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnosticFactory.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnosticFactory.java deleted file mode 100644 index a3a54d14b4a..00000000000 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/UnresolvedReferenceDiagnosticFactory.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2010-2013 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.jet.lang.diagnostics; - -import com.intellij.openapi.util.TextRange; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.lang.psi.JetArrayAccessExpression; -import org.jetbrains.jet.lang.psi.JetReferenceExpression; - -import java.util.Collections; -import java.util.List; - -public class UnresolvedReferenceDiagnosticFactory extends DiagnosticFactory1 { - public UnresolvedReferenceDiagnosticFactory() { - super(Severity.ERROR, new PositioningStrategy() { - @NotNull - @Override - public List mark(@NotNull JetReferenceExpression element) { - if (element instanceof JetArrayAccessExpression) { - List ranges = ((JetArrayAccessExpression) element).getBracketRanges(); - if (!ranges.isEmpty()) { - return ranges; - } - } - return Collections.singletonList(element.getTextRange()); - } - }); - } - - public DiagnosticWithParameters1 on(@NotNull JetReferenceExpression reference) { - return new DiagnosticWithParameters1(reference, reference.getText(), this, severity); - } - - public static UnresolvedReferenceDiagnosticFactory create() { - return new UnresolvedReferenceDiagnosticFactory(); - } -} diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java index 09079621ad8..646ca3b696b 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java @@ -616,7 +616,7 @@ public class DescriptorResolver { trace.record(BindingContext.REFERENCE_TARGET, subjectTypeParameterName, classifier); } else { - trace.report(UNRESOLVED_REFERENCE.on(subjectTypeParameterName)); + trace.report(UNRESOLVED_REFERENCE.on(subjectTypeParameterName, subjectTypeParameterName.getText())); } } else { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/QualifiedExpressionResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/QualifiedExpressionResolver.java index a3ac86261b6..9ee22708098 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/QualifiedExpressionResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/QualifiedExpressionResolver.java @@ -359,7 +359,7 @@ public class QualifiedExpressionResolver { // Simple case of no descriptors if (descriptors.isEmpty()) { trace.record(BindingContext.RESOLUTION_SCOPE, referenceExpression, resolutionScope); - trace.report(UNRESOLVED_REFERENCE.on(referenceExpression)); + trace.report(UNRESOLVED_REFERENCE.on(referenceExpression, referenceExpression.getText())); return; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java index b229fa1eebb..6b3ede747e3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CallResolver.java @@ -430,7 +430,7 @@ public class CallResolver { resolveFunctionArguments(context, resultsForFirstNonemptyCandidateSet); } else { - context.trace.report(UNRESOLVED_REFERENCE.on(reference)); + context.trace.report(UNRESOLVED_REFERENCE.on(reference, reference.getText())); argumentTypeResolver.checkTypesWithNoCallee(context, RESOLVE_FUNCTION_ARGUMENTS); } return resultsForFirstNonemptyCandidateSet != null ? resultsForFirstNonemptyCandidateSet : OverloadResolutionResultsImpl.nameNotFound(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java index 6b755c08154..cd001181288 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java @@ -153,7 +153,7 @@ import static org.jetbrains.jet.lang.resolve.calls.ValueArgumentsToParametersMap JetSimpleNameExpression nameReference = argument.getArgumentName().getReferenceExpression(); ValueParameterDescriptor valueParameterDescriptor = parameterByName.get(nameReference.getReferencedNameAsName()); if (valueParameterDescriptor == null) { - report(NAMED_PARAMETER_NOT_FOUND.on(nameReference)); + report(NAMED_PARAMETER_NOT_FOUND.on(nameReference, nameReference.getText())); unmappedArguments.add(argument); setStatus(WEAK_ERROR); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TracingStrategyImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TracingStrategyImpl.java index 7c10e52c13e..567c709702e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TracingStrategyImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/tasks/TracingStrategyImpl.java @@ -87,7 +87,7 @@ public class TracingStrategyImpl implements TracingStrategy { @Override public void unresolvedReference(@NotNull BindingTrace trace) { - trace.report(UNRESOLVED_REFERENCE.on(reference)); + trace.report(UNRESOLVED_REFERENCE.on(reference, reference.getText())); } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorForStatements.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorForStatements.java index a827b1d2c75..2e656f89c65 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorForStatements.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorForStatements.java @@ -217,7 +217,7 @@ public class ExpressionTypingVisitorForStatements extends ExpressionTypingVisito if (leftType == null) { dataFlowInfo = facade.getTypeInfo(right, context.replaceDataFlowInfo(dataFlowInfo)).getDataFlowInfo(); - context.trace.report(UNRESOLVED_REFERENCE.on(operationSign)); + context.trace.report(UNRESOLVED_REFERENCE.on(operationSign, operationSign.getText())); temporaryBindingTrace.commit(); return JetTypeInfo.create(null, dataFlowInfo); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/LabelResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/LabelResolver.java index 6705b07df8e..a2741ec732a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/LabelResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/LabelResolver.java @@ -111,7 +111,7 @@ public class LabelResolver { Stack stack = labeledElements.get(labelName); if (stack == null || stack.isEmpty()) { if (reportUnresolved) { - context.trace.report(UNRESOLVED_REFERENCE.on(labelExpression)); + context.trace.report(UNRESOLVED_REFERENCE.on(labelExpression, labelExpression.getText())); } return null; } @@ -174,11 +174,11 @@ public class LabelResolver { return LabeledReceiverResolutionResult.labelResolutionSuccess(thisReceiver); } else { - context.trace.report(UNRESOLVED_REFERENCE.on(targetLabel)); + context.trace.report(UNRESOLVED_REFERENCE.on(targetLabel, targetLabel.getText())); } } else { - context.trace.report(UNRESOLVED_REFERENCE.on(targetLabel)); + context.trace.report(UNRESOLVED_REFERENCE.on(targetLabel, targetLabel.getText())); } } else {