Inline Method leaves unqualified instance method call inside local class when inlining into static context
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 48/100
Piste de recherche
Commencez par l’implémentation de Inline Method et reproduisez le problème à l’aide de l’exemple I01, en vous concentrant sur les classes locales déplacées dans des contextes statiques de main. Suivez la manière dont le récepteur du obj.f() d’origine est géré dans H.g() ; c’est terminé lorsque l’appel généré à helper() est qualifié avec le récepteur et que le code Java refactorisé compile.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Description
Inline Method produces uncompilable code when inlining an instance method that contains a local class into the static method main.
Before refactoring, the local class H is declared inside the instance method f(). The call helper() inside H.g() is valid because it is implicitly bound to the enclosing I01 instance.
After applying Inline Method to the invocation obj.f(), the local class H is moved into the static method main. However, the call inside H.g() remains:
return helper();
At this point, there is no implicit I01.this available in the static context. The call should be qualified with the original receiver, for example:
return obj.helper();
The refactored code no longer compiles.
Code before refactoring
public class I01 {
public static void main(String[] args) {
I01 obj = new I01();
// Refactoring operation: Inline Method
// Target invocation: obj.f()
int result = obj.f();
System.out.println(result);
}
int helper() {
return 7;
}
int f() {
class H {
int g() {
return helper();
}
}
return H.class.getSimpleName().length();
}
}
Code after refactoring
public class I01 {
public static void main(String[] args) {
I01 obj = new I01();
class H {
int g() {
return helper();
}
}
// Refactoring operation: Inline Method
// Target invocation: obj.f()
int result = H.class.getSimpleName().length();
System.out.println(result);
}
int helper() {
return 7;
}
int f() {
class H {
int g() {
return helper();
}
}
return H.class.getSimpleName().length();
}
}
- Langage dominant
- TypeScript
- Étoiles
- 2.3k
- Forks
- 547
- Merge moyen
- 5 h 36 min
- PR mergées (30 j)
- 10
Préparer son environnement
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.
Autres issues de redhat-developer/vscode-java
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
redhat-developer/vscode-java#4511 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
redhat-developer/vscode-java#4426 ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
redhat-developer/vscode-java#4506 · 7 commentaires · 4 réactions ·
Les mainteneurs répondent en général sous 1 jour
-
bug
Difficulté 4/5 3-5 jours Accessibilité débutants 45/100
redhat-developer/vscode-java#4505 · 5 commentaires · 2 réactions ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 52/100
redhat-developer/vscode-java#4504 · 3 commentaires · 1 réaction ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de redhat-developer/vscode-java
Issues similaires
-
Difficulté 1/5 1-3 heures Accessibilité débutants 88/100
supabase/agent-skills#611 ·
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 68/100
polka-codes/test#345 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 1-3 heures Accessibilité débutants 92/100
GoogleChromeLabs/project-sesame#217 ·
Les mainteneurs répondent en général sous 12 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 74/100
solana-foundation/solana-com#2202 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100