Inline Method leaves unqualified instance method call inside local class when inlining into static context
Maintainer antworten meist innerhalb von 1 Tag
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 48/100
Rechercherichtung
Beginne mit der Implementierung von Inline Method und reproduziere das Problem anhand des Beispiels I01. Konzentriere dich dabei auf lokale Klassen, die in statische main-Kontexte verschoben wurden. Verfolge, wie der Empfänger des ursprünglichen obj.f() innerhalb von H.g() behandelt wird; abgeschlossen ist die Aufgabe, wenn der generierte Aufruf helper() mit dem Empfänger qualifiziert ist und der refaktorisierte Java-Code kompiliert.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
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();
}
}
- Vorherrschende Sprache
- TypeScript
- Sterne
- 2.3k
- Forks
- 548
- Ø Merge
- 7 Std. 10 Min.
- Gemergte PRs (30 T.)
- 7
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus redhat-developer/vscode-java
-
JDK_HOME can be sorted after lower-priority auto-detected JDK sourcesEvtl. vergeben @shblue21 hat das vor 113 Tagen übernommen. Offen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
redhat-developer/vscode-java#4426 ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug Lombok
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 52/100
redhat-developer/vscode-java#4521 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug need info
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 35/100
redhat-developer/vscode-java#4520 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 4/5 3-5 Tage Anfängerfreundlichkeit 25/100
redhat-developer/vscode-java#4517 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Red Hat Not ActivatingOffenbug documentation
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 25/100
redhat-developer/vscode-java#4516 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
Alle Issues in redhat-developer/vscode-java
Ähnliche Issues
-
area:docs bug triage:confirmed
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 74/100
Cotal-AI/Cotal#2875 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 65/100
anomalyco/models.dev#8862 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
fix(data-lake): wizard source step still previews the local slug, not the server-disambiguated oneOffendata-lake
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag
-
ready-for-triage
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
konflux-ci/konflux-ui#1596 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
enhancement good first issue priority: low size: XS
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 1 Tag