From b632fc31d99e7ab096928d8e64f25f9145df9324 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Mon, 5 Sep 2011 19:35:31 +0400 Subject: [PATCH] Tests fixed, and error messages a little --- .../ValueArgumentsToParametersMapper.java | 13 ++++++---- .../jet/lang/types/JetTypeInferrer.java | 6 ++++- idea/testData/resolve/Projections.jet | 4 ++-- .../resolve/ResolveOfInfixExpressions.jet | 8 +++---- .../jet/resolve/ExpectedResolveData.java | 24 +++++++++++++------ 5 files changed, 37 insertions(+), 18 deletions(-) diff --git a/idea/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java b/idea/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java index f784d6cd894..b4bcf3e2364 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/calls/ValueArgumentsToParametersMapper.java @@ -12,6 +12,7 @@ import org.jetbrains.jet.lang.psi.JetLabelQualifiedExpression; import org.jetbrains.jet.lang.psi.ValueArgument; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.types.CallMaker; +import org.jetbrains.jet.resolve.DescriptorRenderer; import java.util.List; import java.util.Map; @@ -88,12 +89,12 @@ import static org.jetbrains.jet.lang.resolve.BindingContext.REFERENCE_TARGET; usedParameters.add(valueParameterDescriptor); } else { - temporaryTrace.getErrorHandler().genericError(valueArgument.asElement().getNode(), "Too many arguments"); + temporaryTrace.getErrorHandler().genericError(valueArgument.asElement().getNode(), getTooManyArgumentsMessage(candidate)); error = true; } } else { - temporaryTrace.getErrorHandler().genericError(valueArgument.asElement().getNode(), "Too many arguments"); + temporaryTrace.getErrorHandler().genericError(valueArgument.asElement().getNode(), getTooManyArgumentsMessage(candidate)); error = true; } } @@ -105,7 +106,7 @@ import static org.jetbrains.jet.lang.resolve.BindingContext.REFERENCE_TARGET; JetExpression possiblyLabeledFunctionLiteral = functionLiteralArguments.get(0); if (valueParameters.isEmpty()) { - temporaryTrace.getErrorHandler().genericError(possiblyLabeledFunctionLiteral.getNode(), "Too many arguments"); + temporaryTrace.getErrorHandler().genericError(possiblyLabeledFunctionLiteral.getNode(), getTooManyArgumentsMessage(candidate)); error = true; } else { JetFunctionLiteralExpression functionLiteral; @@ -124,7 +125,7 @@ import static org.jetbrains.jet.lang.resolve.BindingContext.REFERENCE_TARGET; } else { if (!usedParameters.add(parameterDescriptor)) { - temporaryTrace.getErrorHandler().genericError(possiblyLabeledFunctionLiteral.getNode(), "Too many arguments"); + temporaryTrace.getErrorHandler().genericError(possiblyLabeledFunctionLiteral.getNode(), getTooManyArgumentsMessage(candidate)); error = true; } else { @@ -151,4 +152,8 @@ import static org.jetbrains.jet.lang.resolve.BindingContext.REFERENCE_TARGET; } return error; } + + private static String getTooManyArgumentsMessage(Descriptor candidate) { + return "Too many arguments for " + DescriptorRenderer.TEXT.render(candidate); + } } diff --git a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java index 2bd8f74604e..91b13314c9e 100644 --- a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java +++ b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java @@ -1857,7 +1857,11 @@ public class JetTypeInferrer { else { String errorMessage = "For-loop range must have an iterator() method"; if (iteratorResolutionResult.isAmbiguity()) { - errorMessage = "Method 'iterator()' is ambiguous for this expression: " + iteratorResolutionResult.getDescriptors(); + StringBuffer stringBuffer = new StringBuffer("Method 'iterator()' is ambiguous for this expression: "); + for (FunctionDescriptor functionDescriptor : iteratorResolutionResult.getDescriptors()) { + stringBuffer.append(DescriptorRenderer.TEXT.render(functionDescriptor)).append(" "); + } + errorMessage = "Method 'iterator()' is ambiguous for this expression: " + stringBuffer; } context.trace.getErrorHandler().genericError(reportErrorsOn, errorMessage); } diff --git a/idea/testData/resolve/Projections.jet b/idea/testData/resolve/Projections.jet index 4c017746adf..65a2de5aab9 100644 --- a/idea/testData/resolve/Projections.jet +++ b/idea/testData/resolve/Projections.jet @@ -18,8 +18,8 @@ class Inv() { fun testInOut() { In().`In.f:T->Unit`f("1"); (return : In).`In.f:T->Unit`f("1"); - (return : In).`!`f("1") - (return : In<*>).`!`f("1"); + (return : In).`In.f:Int->Int`f("1") + (return : In<*>).`In.f:Int->Int`f("1"); In().`In.f:Int->Int`f(1); (return : In).`In.f:Int->Int`f(1); diff --git a/idea/testData/resolve/ResolveOfInfixExpressions.jet b/idea/testData/resolve/ResolveOfInfixExpressions.jet index c7f22629218..de55e5a7ace 100644 --- a/idea/testData/resolve/ResolveOfInfixExpressions.jet +++ b/idea/testData/resolve/ResolveOfInfixExpressions.jet @@ -62,15 +62,15 @@ fun tt(t : T) : T { val x : List = 0 x`java::java.util.List.get()`[1] val foo = `Bar()`Bar() - foo`!`[null, 1] + foo`!!`[null, 1] foo`get2`[1, 1] foo`get1`[1] foo`set1`[1] = "" - foo`!`[1, 2] = "" + foo`set1`[1, 2] = "" x`java::java.util.List.set()`[1] = null (x`java::java.util.List.set()`[1]) = null - x`!`[null] = null - (x`!`[null, 2]) = null + x`java::java.util.List.set()`[null] = null + (x`java::java.util.List.set()`[null, 2]) = null (`not`!foo)[1]`:std::Char` val y = Bar() y`inc`++ diff --git a/idea/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java b/idea/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java index 9febffc5b50..39a6bd15498 100644 --- a/idea/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java +++ b/idea/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java @@ -26,6 +26,8 @@ import java.util.regex.Matcher; import java.util.regex.Pattern; import static junit.framework.Assert.*; +import static org.jetbrains.jet.lang.resolve.BindingContext.AMBIGUOUS_REFERENCE_TARGET; +import static org.jetbrains.jet.lang.resolve.BindingContext.REFERENCE_TARGET; /** * @author abreslav @@ -124,16 +126,24 @@ public class ExpectedResolveData { assertTrue( "Must have been unresolved: " + renderReferenceInContext(referenceExpression) + - " but was resolved to " + DescriptorRenderer.TEXT.render(bindingContext.get(BindingContext.REFERENCE_TARGET, referenceExpression)), + " but was resolved to " + DescriptorRenderer.TEXT.render(bindingContext.get(REFERENCE_TARGET, referenceExpression)), unresolvedReferences.contains(referenceExpression)); continue; } + if ("!!".equals(name)) { + assertTrue( + "Must have been resolved to multiple descriptors: " + + renderReferenceInContext(referenceExpression) + + " but was resolved to " + DescriptorRenderer.TEXT.render(bindingContext.get(REFERENCE_TARGET, referenceExpression)), + bindingContext.get(AMBIGUOUS_REFERENCE_TARGET, referenceExpression) != null); + continue; + } else if ("!null".equals(name)) { assertTrue( "Must have been resolved to null: " + renderReferenceInContext(referenceExpression) + - " but was resolved to " + DescriptorRenderer.TEXT.render(bindingContext.get(BindingContext.REFERENCE_TARGET, referenceExpression)), - bindingContext.get(BindingContext.REFERENCE_TARGET, referenceExpression) == null + " but was resolved to " + DescriptorRenderer.TEXT.render(bindingContext.get(REFERENCE_TARGET, referenceExpression)), + bindingContext.get(REFERENCE_TARGET, referenceExpression) == null ); continue; } @@ -141,8 +151,8 @@ public class ExpectedResolveData { assertTrue( "Must have been resolved to error: " + renderReferenceInContext(referenceExpression) + - " but was resolved to " + DescriptorRenderer.TEXT.render(bindingContext.get(BindingContext.REFERENCE_TARGET, referenceExpression)), - ErrorUtils.isError(bindingContext.get(BindingContext.REFERENCE_TARGET, referenceExpression)) + " but was resolved to " + DescriptorRenderer.TEXT.render(bindingContext.get(REFERENCE_TARGET, referenceExpression)), + ErrorUtils.isError(bindingContext.get(REFERENCE_TARGET, referenceExpression)) ); continue; } @@ -160,7 +170,7 @@ public class ExpectedResolveData { DeclarationDescriptor expectedDescriptor = nameToDescriptor.get(name); JetTypeReference typeReference = getAncestorOfType(JetTypeReference.class, element); if (expectedDescriptor != null) { - DeclarationDescriptor actual = bindingContext.get(BindingContext.REFERENCE_TARGET, reference); + DeclarationDescriptor actual = bindingContext.get(REFERENCE_TARGET, reference); assertSame("Expected: " + name, expectedDescriptor.getOriginal(), actual == null ? null : actual.getOriginal()); continue; } @@ -198,7 +208,7 @@ public class ExpectedResolveData { } - DeclarationDescriptor actualDescriptor = bindingContext.get(BindingContext.REFERENCE_TARGET, reference); + DeclarationDescriptor actualDescriptor = bindingContext.get(REFERENCE_TARGET, reference); if (actualDescriptor instanceof VariableAsFunctionDescriptor) { VariableAsFunctionDescriptor descriptor = (VariableAsFunctionDescriptor) actualDescriptor; actualDescriptor = descriptor.getVariableDescriptor();