redhat-developer / redhat-developer/vscode-java
Renaming methods causes code behavior to change
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- TypeScript
- Estrellas
- 2.3k
- Forks
- 546
- Merge medio
- 20 h 1 min
- PR fusionados (30 d)
- 11
Descripción
[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
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Línea de trabajo
Reproduce el problema en el flujo de Refactor-Rename usando las clases Java proporcionadas, Windows 11, JDK 17, VS Code 1.88 y Java extension 1.29. Sigue cómo el cambio de nombre de k a m afecta a la llamada en f(), y luego verifica que la refactorización advierta cuando la resolución de métodos podría cambiar.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- java
- Área
- developer-experience
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100