From d72bc78550cac1977e7bfb140586c7531946536f Mon Sep 17 00:00:00 2001 From: "Pavel V. Talanov" Date: Tue, 19 Jan 2016 19:05:50 +0300 Subject: [PATCH] Resolve annotations on parameters of function type --- .../src/org/jetbrains/kotlin/resolve/TypeResolver.kt | 2 +- .../AnnotationOnNamedParameterOfFunctionType.kt | 3 +++ .../AnnotationOnParameterOfFunctionType.kt | 5 +++++ .../kotlin/checkers/PsiCheckerTestGenerated.java | 12 ++++++++++++ 4 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 idea/testData/checker/regression/AnnotationOnNamedParameterOfFunctionType.kt create mode 100644 idea/testData/checker/regression/AnnotationOnParameterOfFunctionType.kt diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/TypeResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/TypeResolver.kt index c2c36e9f513..7e23b57f7cc 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/TypeResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/TypeResolver.kt @@ -244,7 +244,7 @@ class TypeResolver( val parameterType = resolveType(c.noBareTypes(), parameter.typeReference!!) val descriptor = ParameterOfFunctionTypeDescriptor( c.scope.ownerDescriptor, - Annotations.EMPTY, + annotationResolver.resolveAnnotationsWithoutArguments(c.scope, parameter.modifierList, c.trace), parameter.nameAsSafeName, parameterType, parameter.toSourceElement() diff --git a/idea/testData/checker/regression/AnnotationOnNamedParameterOfFunctionType.kt b/idea/testData/checker/regression/AnnotationOnNamedParameterOfFunctionType.kt new file mode 100644 index 00000000000..17dade5cb78 --- /dev/null +++ b/idea/testData/checker/regression/AnnotationOnNamedParameterOfFunctionType.kt @@ -0,0 +1,3 @@ +fun intercept(block: (@A key: K, (K) -> V) -> V) { + +} \ No newline at end of file diff --git a/idea/testData/checker/regression/AnnotationOnParameterOfFunctionType.kt b/idea/testData/checker/regression/AnnotationOnParameterOfFunctionType.kt new file mode 100644 index 00000000000..c84533f984c --- /dev/null +++ b/idea/testData/checker/regression/AnnotationOnParameterOfFunctionType.kt @@ -0,0 +1,5 @@ +fun intercept(block: (@A K, (K) -> V) -> V) { + +} + +annotation class A \ 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 4dad86e9d3a..dae2fe729fa 100644 --- a/idea/tests/org/jetbrains/kotlin/checkers/PsiCheckerTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/checkers/PsiCheckerTestGenerated.java @@ -394,6 +394,18 @@ public class PsiCheckerTestGenerated extends AbstractPsiCheckerTest { doTest(fileName); } + @TestMetadata("AnnotationOnNamedParameterOfFunctionType.kt") + public void testAnnotationOnNamedParameterOfFunctionType() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/checker/regression/AnnotationOnNamedParameterOfFunctionType.kt"); + doTest(fileName); + } + + @TestMetadata("AnnotationOnParameterOfFunctionType.kt") + public void testAnnotationOnParameterOfFunctionType() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/checker/regression/AnnotationOnParameterOfFunctionType.kt"); + doTest(fileName); + } + @TestMetadata("AssignmentsUnderOperators.kt") public void testAssignmentsUnderOperators() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/checker/regression/AssignmentsUnderOperators.kt");