From a53eae79b5745cf8084a58b4009f17694c485883 Mon Sep 17 00:00:00 2001 From: Svetlana Isakova Date: Tue, 3 Sep 2013 19:56:20 +0400 Subject: [PATCH] bug fixed: analyze arguments in FREE expression position --- .../lang/resolve/calls/ArgumentTypeResolver.java | 4 ++-- .../analyzeArgsInFreeExpressionPosition.kt | 12 ++++++++++++ .../checkers/JetDiagnosticsTestGenerated.java | 16 +++++++++++++++- 3 files changed, 29 insertions(+), 3 deletions(-) create mode 100644 compiler/testData/diagnostics/tests/resolve/nestedCalls/analyzeArgsInFreeExpressionPosition.kt diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ArgumentTypeResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ArgumentTypeResolver.java index 630b8e0ca1a..a382a8100a9 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ArgumentTypeResolver.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ArgumentTypeResolver.java @@ -180,8 +180,8 @@ public class ArgumentTypeResolver { if (recordedTypeInfo != null) { return recordedTypeInfo; } - ResolutionContext newContext = context.replaceExpectedType(TypeUtils.NO_EXPECTED_TYPE).replaceContextDependency( - ContextDependency.DEPENDENT); + ResolutionContext newContext = context.replaceExpectedType(TypeUtils.NO_EXPECTED_TYPE) + .replaceContextDependency(ContextDependency.DEPENDENT).replaceExpressionPosition(ExpressionPosition.FREE); return expressionTypingServices.getTypeInfo(expression, newContext); } diff --git a/compiler/testData/diagnostics/tests/resolve/nestedCalls/analyzeArgsInFreeExpressionPosition.kt b/compiler/testData/diagnostics/tests/resolve/nestedCalls/analyzeArgsInFreeExpressionPosition.kt new file mode 100644 index 00000000000..939c5b3f407 --- /dev/null +++ b/compiler/testData/diagnostics/tests/resolve/nestedCalls/analyzeArgsInFreeExpressionPosition.kt @@ -0,0 +1,12 @@ +class A { + class object { + + } +} + +fun use(vararg a: Any?) = a + +fun test() { + use(use(A, null).toString()) +} + diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java index c5f0282aea2..f8a0e241433 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java @@ -4748,7 +4748,7 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage } @TestMetadata("compiler/testData/diagnostics/tests/resolve") - @InnerTestClasses({Resolve.Invoke.class, Resolve.SpecialConstructions.class}) + @InnerTestClasses({Resolve.Invoke.class, Resolve.NestedCalls.class, Resolve.SpecialConstructions.class}) public static class Resolve extends AbstractDiagnosticsTestWithEagerResolve { public void testAllFilesPresentInResolve() throws Exception { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/diagnostics/tests/resolve"), Pattern.compile("^(.+)\\.kt$"), true); @@ -4817,6 +4817,19 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage } + @TestMetadata("compiler/testData/diagnostics/tests/resolve/nestedCalls") + public static class NestedCalls extends AbstractDiagnosticsTestWithEagerResolve { + public void testAllFilesPresentInNestedCalls() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/diagnostics/tests/resolve/nestedCalls"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("analyzeArgsInFreeExpressionPosition.kt") + public void testAnalyzeArgsInFreeExpressionPosition() throws Exception { + doTest("compiler/testData/diagnostics/tests/resolve/nestedCalls/analyzeArgsInFreeExpressionPosition.kt"); + } + + } + @TestMetadata("compiler/testData/diagnostics/tests/resolve/specialConstructions") public static class SpecialConstructions extends AbstractDiagnosticsTestWithEagerResolve { public void testAllFilesPresentInSpecialConstructions() throws Exception { @@ -4844,6 +4857,7 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage TestSuite suite = new TestSuite("Resolve"); suite.addTestSuite(Resolve.class); suite.addTestSuite(Invoke.class); + suite.addTestSuite(NestedCalls.class); suite.addTestSuite(SpecialConstructions.class); return suite; }