From ce42d47383d4fd57bcea23cdfb17dcd055528087 Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Fri, 15 Jan 2016 15:54:42 +0300 Subject: [PATCH] Resolve lambda argument types when failing to resolve call --- .../org/jetbrains/kotlin/resolve/calls/CallResolver.java | 3 ++- .../checker/regression/FunctionLiteralInsideAnnotation.kt | 4 ++++ .../jetbrains/kotlin/checkers/PsiCheckerTestGenerated.java | 6 ++++++ 3 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 idea/testData/checker/regression/FunctionLiteralInsideAnnotation.kt diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallResolver.java index 601afe58779..2ae05411e81 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/calls/CallResolver.java @@ -32,6 +32,7 @@ import org.jetbrains.kotlin.psi.*; import org.jetbrains.kotlin.resolve.*; import org.jetbrains.kotlin.resolve.bindingContextUtil.BindingContextUtilsKt; import org.jetbrains.kotlin.resolve.calls.callResolverUtil.CallResolverUtilKt; +import org.jetbrains.kotlin.resolve.calls.callResolverUtil.ResolveArgumentsMode; import org.jetbrains.kotlin.resolve.calls.callUtil.CallUtilKt; import org.jetbrains.kotlin.resolve.calls.checkers.CallChecker; import org.jetbrains.kotlin.resolve.calls.context.*; @@ -574,7 +575,7 @@ public class CallResolver { } private OverloadResolutionResultsImpl checkArgumentTypesAndFail(BasicCallResolutionContext context) { - argumentTypeResolver.checkTypesWithNoCallee(context); + argumentTypeResolver.checkTypesWithNoCallee(context, ResolveArgumentsMode.RESOLVE_FUNCTION_ARGUMENTS); return OverloadResolutionResultsImpl.nameNotFound(); } diff --git a/idea/testData/checker/regression/FunctionLiteralInsideAnnotation.kt b/idea/testData/checker/regression/FunctionLiteralInsideAnnotation.kt new file mode 100644 index 00000000000..57115c44b99 --- /dev/null +++ b/idea/testData/checker/regression/FunctionLiteralInsideAnnotation.kt @@ -0,0 +1,4 @@ +package foo + +@Anno ({ val x: Int }) +fun f() {} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/checkers/PsiCheckerTestGenerated.java b/idea/tests/org/jetbrains/kotlin/checkers/PsiCheckerTestGenerated.java index e3c13c5defc..4dad86e9d3a 100644 --- a/idea/tests/org/jetbrains/kotlin/checkers/PsiCheckerTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/checkers/PsiCheckerTestGenerated.java @@ -466,6 +466,12 @@ public class PsiCheckerTestGenerated extends AbstractPsiCheckerTest { doTest(fileName); } + @TestMetadata("FunctionLiteralInsideAnnotation.kt") + public void testFunctionLiteralInsideAnnotation() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/checker/regression/FunctionLiteralInsideAnnotation.kt"); + doTest(fileName); + } + @TestMetadata("InterfaceDeclarationAsExpression.kt") public void testInterfaceDeclarationAsExpression() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/checker/regression/InterfaceDeclarationAsExpression.kt");