From 2077faa76a8feb6892511e87c3164aada859a5ed Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Mon, 24 Dec 2012 14:41:00 +0400 Subject: [PATCH] no ambiguity when overloading with different function type (in incomplete resolve) --- .../lang/resolve/calls/CandidateResolver.java | 1 - .../NoAmbiguityForDifferentFunctionTypes.kt | 16 ++++++++++++++++ .../checkers/JetDiagnosticsTestGenerated.java | 16 +++++++++++++++- 3 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 compiler/testData/diagnostics/tests/inference/reportingImprovements/NoAmbiguityForDifferentFunctionTypes.kt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CandidateResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CandidateResolver.java index b355e7f178f..093221eec2d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CandidateResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/CandidateResolver.java @@ -257,7 +257,6 @@ public class CandidateResolver { for (ValueArgument valueArgument : resolvedValueArgument.getArguments()) { - if (JetPsiUtil.isFunctionLiteralWithoutDeclaredParameterTypes(valueArgument.getArgumentExpression())) continue; // TODO : more attempts, with different expected types // Here we type check expecting an error type (DONT_CARE, substitution with substituteDontCare) diff --git a/compiler/testData/diagnostics/tests/inference/reportingImprovements/NoAmbiguityForDifferentFunctionTypes.kt b/compiler/testData/diagnostics/tests/inference/reportingImprovements/NoAmbiguityForDifferentFunctionTypes.kt new file mode 100644 index 00000000000..235b80dd691 --- /dev/null +++ b/compiler/testData/diagnostics/tests/inference/reportingImprovements/NoAmbiguityForDifferentFunctionTypes.kt @@ -0,0 +1,16 @@ +package a + +trait Closeable {} +class C : Closeable {} + +fun T.foo(block: (T)-> R) = block + +fun T.foo(block: (T, T)-> R) = block + +fun main(args: Array) { + C().foo { // no ambiguity here + www -> + xs + } +} + diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index c7a6c8d1b33..0cd1a16b324 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -1960,7 +1960,7 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage } @TestMetadata("compiler/testData/diagnostics/tests/inference") - @InnerTestClasses({Inference.Regressions.class, Inference.Varargs.class}) + @InnerTestClasses({Inference.Regressions.class, Inference.ReportingImprovements.class, Inference.Varargs.class}) public static class Inference extends AbstractDiagnosticsTestWithEagerResolve { public void testAllFilesPresentInInference() throws Exception { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/diagnostics/tests/inference"), "kt", true); @@ -2259,6 +2259,19 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage } + @TestMetadata("compiler/testData/diagnostics/tests/inference/reportingImprovements") + public static class ReportingImprovements extends AbstractDiagnosticsTestWithEagerResolve { + public void testAllFilesPresentInReportingImprovements() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/diagnostics/tests/inference/reportingImprovements"), "kt", true); + } + + @TestMetadata("NoAmbiguityForDifferentFunctionTypes.kt") + public void testNoAmbiguityForDifferentFunctionTypes() throws Exception { + doTest("compiler/testData/diagnostics/tests/inference/reportingImprovements/NoAmbiguityForDifferentFunctionTypes.kt"); + } + + } + @TestMetadata("compiler/testData/diagnostics/tests/inference/varargs") public static class Varargs extends AbstractDiagnosticsTestWithEagerResolve { public void testAllFilesPresentInVarargs() throws Exception { @@ -2276,6 +2289,7 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage TestSuite suite = new TestSuite("Inference"); suite.addTestSuite(Inference.class); suite.addTestSuite(Regressions.class); + suite.addTestSuite(ReportingImprovements.class); suite.addTestSuite(Varargs.class); return suite; }