redhat-developer / redhat-developer/vscode-java
Renaming methods causes code behavior to change
Personne n'a encore pris cette issue.
- Langage dominant
- TypeScript
- Étoiles
- 2.3k
- Forks
- 546
- Merge moyen
- 20 h 1 min
- PR mergées (30 j)
- 11
Description
[provide a description of the issue]
Environment
Operating System: Windows11
JDK version: 17
Visual Studio Code version: 1.88
Java extension version: 1.29
Steps To Reproduce
- select "k()"
- click "Refactor-Rename"
- new method name "m()"
In this example, before the rename, the f() method calls the m() method in the parent class, and after the rename, the f() method calls the method in the subclass renamed m(). The rename causes the code behavior to change, so it is a bug.
class A {
void m(Object m){
System.out.println("A");
}
}
class B extends A{
// rename k to m
void k(String m){
System.out.println("B");
}
void f(){
m("1");
}
}
Current Result:
Expected Result: A warning is given during the refactoring process that the name may cause the refactoring behavior to change
Additional Informations
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Reproduisez le problème dans le flux Refactor-Rename avec les classes Java fournies, Windows 11, JDK 17, VS Code 1.88 et Java extension 1.29. Suivez l’impact du renommage de k en m sur l’appel dans f(), puis vérifiez que le refactoring avertit lorsque la résolution de méthode pourrait changer.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- java
- Domaine
- developer-experience
- Type d'issue
- Bug
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100