Search: Restrict KtParameter usage scope to its containing declaration
#KT-13542 Fixed #KT-8672 Fixed
This commit is contained in:
@@ -96,6 +96,8 @@ These artifacts include extensions for the types available in the latter JDKs, s
|
|||||||
### IDE
|
### IDE
|
||||||
|
|
||||||
- [`KT-9125`](https://youtrack.jetbrains.com/issue/KT-9125) Support Type Hierarchy on references inside of super type call entries
|
- [`KT-9125`](https://youtrack.jetbrains.com/issue/KT-9125) Support Type Hierarchy on references inside of super type call entries
|
||||||
|
- [`KT-13542`](https://youtrack.jetbrains.com/issue/KT-13542) Rename: Do not search parameter text occurrences outside of its containing declaration
|
||||||
|
- [`KT-8672`](https://youtrack.jetbrains.com/issue/KT-8672) Rename: Optimize search of parameter references in calls with named arguments
|
||||||
|
|
||||||
#### Refactorings
|
#### Refactorings
|
||||||
|
|
||||||
|
|||||||
@@ -20,6 +20,8 @@ import com.intellij.lang.ASTNode;
|
|||||||
import com.intellij.navigation.ItemPresentation;
|
import com.intellij.navigation.ItemPresentation;
|
||||||
import com.intellij.navigation.ItemPresentationProviders;
|
import com.intellij.navigation.ItemPresentationProviders;
|
||||||
import com.intellij.psi.PsiElement;
|
import com.intellij.psi.PsiElement;
|
||||||
|
import com.intellij.psi.search.GlobalSearchScope;
|
||||||
|
import com.intellij.psi.search.LocalSearchScope;
|
||||||
import com.intellij.psi.search.SearchScope;
|
import com.intellij.psi.search.SearchScope;
|
||||||
import com.intellij.psi.tree.TokenSet;
|
import com.intellij.psi.tree.TokenSet;
|
||||||
import com.intellij.psi.util.PsiTreeUtil;
|
import com.intellij.psi.util.PsiTreeUtil;
|
||||||
@@ -182,8 +184,14 @@ public class KtParameter extends KtNamedDeclarationStub<KotlinParameterStub> imp
|
|||||||
@NotNull
|
@NotNull
|
||||||
@Override
|
@Override
|
||||||
public SearchScope getUseScope() {
|
public SearchScope getUseScope() {
|
||||||
KtDeclarationWithBody owner = getOwnerFunction();
|
KtExpression owner = getOwnerFunction();
|
||||||
if (owner instanceof KtPrimaryConstructor && hasValOrVar()) return super.getUseScope();
|
if (owner instanceof KtPrimaryConstructor) {
|
||||||
return owner != null ? owner.getUseScope() : super.getUseScope();
|
if (hasValOrVar()) return super.getUseScope();
|
||||||
|
owner = ((KtPrimaryConstructor) owner).getContainingClassOrObject();
|
||||||
|
}
|
||||||
|
if (owner == null) {
|
||||||
|
owner = PsiTreeUtil.getParentOfType(this, KtExpression.class);
|
||||||
|
}
|
||||||
|
return owner != null ? new LocalSearchScope(owner) : GlobalSearchScope.EMPTY_SCOPE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,12 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
// a
|
||||||
|
|
||||||
|
val t = "a"
|
||||||
|
|
||||||
|
fun foo(b: Int) {
|
||||||
|
// b
|
||||||
|
val tt = "b"
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test() = foo(b = 1)
|
||||||
+12
@@ -0,0 +1,12 @@
|
|||||||
|
package test
|
||||||
|
|
||||||
|
// a
|
||||||
|
|
||||||
|
val t = "a"
|
||||||
|
|
||||||
|
fun foo(/*rename*/a: Int) {
|
||||||
|
// a
|
||||||
|
val tt = "a"
|
||||||
|
}
|
||||||
|
|
||||||
|
fun test() = foo(a = 1)
|
||||||
+6
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"type": "MARKED_ELEMENT",
|
||||||
|
"mainFile": "test/test.kt",
|
||||||
|
"newName": "b",
|
||||||
|
"withRuntime": "true"
|
||||||
|
}
|
||||||
@@ -251,6 +251,12 @@ public class RenameTestGenerated extends AbstractRenameTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("parameterTextOccurrences/parameterTextOccurrences.test")
|
||||||
|
public void testParameterTextOccurrences_ParameterTextOccurrences() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/rename/parameterTextOccurrences/parameterTextOccurrences.test");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("parameterWithQuotation/parameterWithQuotation.test")
|
@TestMetadata("parameterWithQuotation/parameterWithQuotation.test")
|
||||||
public void testParameterWithQuotation_ParameterWithQuotation() throws Exception {
|
public void testParameterWithQuotation_ParameterWithQuotation() throws Exception {
|
||||||
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/rename/parameterWithQuotation/parameterWithQuotation.test");
|
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/refactoring/rename/parameterWithQuotation/parameterWithQuotation.test");
|
||||||
|
|||||||
Reference in New Issue
Block a user