diff --git a/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java b/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java index ceb51aa6b22..e2172b39dab 100644 --- a/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java +++ b/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java @@ -102,6 +102,12 @@ public class ResolveElementCache { return additionalResolveCache.getValue().fun(elementOfAdditionalResolve); } + JetParameter parameter = PsiTreeUtil.getTopmostParentOfType(jetElement, JetParameter.class); + if (parameter != null) { + // Parameters for function literal could be met inside other parameters. We can't make resolveToDescriptors for internal elements. + jetElement = parameter; + } + JetDeclaration declaration = PsiTreeUtil.getParentOfType(jetElement, JetDeclaration.class, false); if (declaration != null) { // Activate descriptor resolution diff --git a/idea/testData/resolve/references/TypeParameterInFunctionLiteral.kt b/idea/testData/resolve/references/TypeParameterInFunctionLiteral.kt new file mode 100644 index 00000000000..f2da342ce30 --- /dev/null +++ b/idea/testData/resolve/references/TypeParameterInFunctionLiteral.kt @@ -0,0 +1,5 @@ +package testing + +class TestClass(val test: (String) -> Int) + +// REF: (jet).String \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/resolve/ReferenceResolveTestGenerated.java b/idea/tests/org/jetbrains/jet/resolve/ReferenceResolveTestGenerated.java index cb91d3797e7..ee1d9125b24 100644 --- a/idea/tests/org/jetbrains/jet/resolve/ReferenceResolveTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/resolve/ReferenceResolveTestGenerated.java @@ -166,4 +166,9 @@ public class ReferenceResolveTestGenerated extends AbstractResolveBaseTest { doTest("idea/testData/resolve/references/SeveralOverrides.kt"); } + @TestMetadata("TypeParameterInFunctionLiteral.kt") + public void testTypeParameterInFunctionLiteral() throws Exception { + doTest("idea/testData/resolve/references/TypeParameterInFunctionLiteral.kt"); + } + }