From 068a120600d301d4f1e42f59f3e95a28d0dd3ff9 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 22 Jun 2016 15:58:23 +0300 Subject: [PATCH] Rename: Constraint search scope of parameter declared in a private member #KT-9649 Fixed (cherry picked from commit fa144b0) --- ChangeLog.md | 1 + .../src/org/jetbrains/kotlin/psi/KtFunctionLiteral.java | 8 ++++++++ .../src/org/jetbrains/kotlin/psi/KtParameter.java | 9 +++++++++ 3 files changed, 18 insertions(+) diff --git a/ChangeLog.md b/ChangeLog.md index a6bbbd8f763..4115d18d3fc 100644 --- a/ChangeLog.md +++ b/ChangeLog.md @@ -250,6 +250,7 @@ - [`KT-9435`](https://youtrack.jetbrains.com/issue/KT-9435) Process property accesor usages (Java) in comments and string literals - [`KT-9444`](https://youtrack.jetbrains.com/issue/KT-9444) Rename dialog: Allow typing any identifier without backquotes - [`KT-9446`](https://youtrack.jetbrains.com/issue/KT-9446) Copy default parameter values to overriding function which is renamed while its base function is not +- [`KT-9649`](https://youtrack.jetbrains.com/issue/KT-9649) Constraint search scope of parameter declared in a private member - [`KT-10033`](https://youtrack.jetbrains.com/issue/KT-10033) Qualify references to members of enum companions in case of conflict with enum entries - [`KT-10713`](https://youtrack.jetbrains.com/issue/KT-10713) Skip read-only declarations when renaming parameters - [`KT-10687`](https://youtrack.jetbrains.com/issue/KT-10687) Qualify property references to avoid shadowing by parameters diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtFunctionLiteral.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtFunctionLiteral.java index a55cb719664..3e23bb88b1b 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtFunctionLiteral.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtFunctionLiteral.java @@ -18,6 +18,8 @@ package org.jetbrains.kotlin.psi; import com.intellij.lang.ASTNode; import com.intellij.psi.PsiElement; +import com.intellij.psi.search.LocalSearchScope; +import com.intellij.psi.search.SearchScope; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.kotlin.lexer.KtTokens; @@ -84,4 +86,10 @@ public class KtFunctionLiteral extends KtFunctionNotStubbed { public boolean hasBody() { return getBodyExpression() != null; } + + @NotNull + @Override + public SearchScope getUseScope() { + return new LocalSearchScope(this); + } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtParameter.java b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtParameter.java index 20b8f9cd756..39252ea0d31 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/psi/KtParameter.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/psi/KtParameter.java @@ -20,6 +20,7 @@ import com.intellij.lang.ASTNode; import com.intellij.navigation.ItemPresentation; import com.intellij.navigation.ItemPresentationProviders; import com.intellij.psi.PsiElement; +import com.intellij.psi.search.SearchScope; import com.intellij.psi.tree.TokenSet; import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; @@ -177,4 +178,12 @@ public class KtParameter extends KtNamedDeclarationStub imp if (!(parent instanceof KtParameterList)) return null; return ((KtParameterList) parent).getOwnerFunction(); } + + @NotNull + @Override + public SearchScope getUseScope() { + KtDeclarationWithBody owner = getOwnerFunction(); + if (owner instanceof KtPrimaryConstructor && hasValOrVar()) return super.getUseScope(); + return owner != null ? owner.getUseScope() : super.getUseScope(); + } }