mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-02-05 08:06:56 +07:00
[java-refactoring] Support parameters on conflict detection
GitOrigin-RevId: 308c1da92a04f6212c0e6bb764bdf6d940192b2d
This commit is contained in:
committed by
intellij-monorepo-bot
parent
92ac28f978
commit
43b02d2a23
@@ -31,17 +31,20 @@ public final class JavaUnresolvableLocalCollisionDetector {
|
||||
// element is a PsiParameter
|
||||
scope = ((PsiParameter)element).getDeclarationScope();
|
||||
}
|
||||
String oldName = variable.getName();
|
||||
LOG.assertTrue(scope != null, element.getClass().getName());
|
||||
|
||||
boolean methodParameter = element instanceof PsiParameter parameter && parameter.getDeclarationScope() instanceof PsiMethod;
|
||||
|
||||
PsiResolveHelper helper = PsiResolveHelper.getInstance(element.getProject());
|
||||
final CollidingVariableVisitor collidingNameVisitor = new CollidingVariableVisitor() {
|
||||
@Override
|
||||
public void visitCollidingElement(PsiVariable collidingVariable) {
|
||||
if (collidingVariable.equals(element)) return;
|
||||
if (collidingVariable.isUnnamed()) return;
|
||||
if (helper.resolveAccessibleReferencedVariable(newName, element) != collidingVariable &&
|
||||
helper.resolveAccessibleReferencedVariable(variable.getName(), collidingVariable) != element) return;
|
||||
LocalHidesRenamedLocalUsageInfo collision = new LocalHidesRenamedLocalUsageInfo(element, collidingVariable);
|
||||
if (!methodParameter &&
|
||||
helper.resolveAccessibleReferencedVariable(newName, element) != collidingVariable &&
|
||||
helper.resolveAccessibleReferencedVariable(oldName, collidingVariable) != element) return;
|
||||
LocalHidesRenamedLocalUsageInfo collision = new LocalHidesRenamedLocalUsageInfo(collidingVariable, element);
|
||||
result.add(collision);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,41 +1,22 @@
|
||||
/*
|
||||
* Copyright 2000-2009 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
|
||||
package com.intellij.refactoring.rename;
|
||||
|
||||
import com.intellij.java.refactoring.JavaRefactoringBundle;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.refactoring.util.RefactoringUIUtil;
|
||||
import com.intellij.usageView.UsageViewUtil;
|
||||
|
||||
public class LocalHidesRenamedLocalUsageInfo extends UnresolvableCollisionUsageInfo {
|
||||
private final PsiElement myConflictingElement;
|
||||
|
||||
public LocalHidesRenamedLocalUsageInfo(PsiElement element, PsiElement conflictingElement) {
|
||||
super(element, null);
|
||||
myConflictingElement = conflictingElement;
|
||||
public LocalHidesRenamedLocalUsageInfo(PsiElement element, PsiElement referencedElement) {
|
||||
super(element, referencedElement);
|
||||
myConflictingElement = element;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
|
||||
PsiElement element = getElement();
|
||||
String type = element == null ? "element" : UsageViewUtil.getType(element);
|
||||
return JavaRefactoringBundle.message("there.is.already.a.0.it.will.conflict.with.the.renamed.1",
|
||||
RefactoringUIUtil.getDescription(myConflictingElement, true),
|
||||
type);
|
||||
RefactoringUIUtil.getDescription(myConflictingElement, true));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user