Inline Method leaves unqualified instance method call inside local class when inlining into static context
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 48/100
Direção de pesquisa
Comece pela implementação de Inline Method e reproduza o problema usando o exemplo I01, concentrando-se nas classes locais movidas para contextos estáticos de main. Rastreie como o receptor do obj.f() original é tratado dentro de H.g(); considera-se concluído quando a chamada gerada a helper() é qualificada com o receptor e o código Java refatorado compila.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
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();
}
}
- Linguagem predominante
- TypeScript
- Estrelas
- 2.3k
- Forks
- 549
- Merge médio
- 8h 20min
- PRs com merge (30d)
- 6
Preparar o ambiente
- Sem Dockerfile nem arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de redhat-developer/vscode-java
-
JDK_HOME can be sorted after lower-priority auto-detected JDK sourcesTalvez já em andamento @shblue21 assumiu há 117 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
redhat-developer/vscode-java#4426 ·
Mantenedores costumam responder em até 1 dia
-
Java template regressionAbertabug
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
redhat-developer/vscode-java#4539 ·
Mantenedores costumam responder em até 1 dia
-
bug
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
redhat-developer/vscode-java#4537 ·
Mantenedores costumam responder em até 1 dia
-
bug Lombok
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 52/100
redhat-developer/vscode-java#4521 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
bug need info
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
redhat-developer/vscode-java#4520 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
Todas as issues de redhat-developer/vscode-java
Issues semelhantes
-
effort:S priority:P2
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
cameri/nostream#811 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
dam-agents/dam#4562 ·
Mantenedores costumam responder em até 1 dia
-
bug p3 triaged
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 70/100
Mantenedores costumam responder em até 1 dia
-
bug javascript P2-medium python release:v3.1
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
adrirubio/claude-deck#546 ·
Mantenedores costumam responder em até 1 dia