redhat-developer / redhat-developer/vscode-java

Change Method Signature fails to modify parameter type

Abierto
#3,535 2 comentarios 0 reacciones 0 asignados Ver en GitHub

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

Change Method Signature fails when trying to modify a parameter type.

Environment
  • Operating System: Mac
  • JDK version: openjdk version "21.0.2" 2024-01-16 LTS
  • Visual Studio Code version: 1.87.2
  • Java extension version: v0.25.2023121402
Steps To Reproduce
  1. Use "Change method signature" to change the type of an input parameter
  2. Hit Preview or Refactor
Current Result

The buttons do not seem to do anything. In the output panel, the following exception is shown:

SEVERE: Internal error: java.lang.NullPointerException: Cannot invoke "org.eclipse.jdt.internal.compiler.ast.TypeReference.getTypeName()" because "argument.type" is null
java.util.concurrent.CompletionException: java.lang.NullPointerException: Cannot invoke "org.eclipse.jdt.internal.compiler.ast.TypeReference.getTypeName()" because "argument.type" is null
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture$UniApply.tryFire(Unknown Source)
	at java.base/java.util.concurrent.CompletableFuture$Completion.exec(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinTask.doExec(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool.scan(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinPool.runWorker(Unknown Source)
	at java.base/java.util.concurrent.ForkJoinWorkerThread.run(Unknown Source)
Caused by: java.lang.NullPointerException: Cannot invoke "org.eclipse.jdt.internal.compiler.ast.TypeReference.getTypeName()" because "argument.type" is null
	at org.eclipse.jdt.internal.compiler.parser.RecoveredMethod.updateFromParserState(RecoveredMethod.java:496)
	at org.eclipse.jdt.internal.compiler.parser.Parser.updateRecoveryState(Parser.java:14202)
	at org.eclipse.jdt.internal.compiler.parser.Parser.resumeOnSyntaxError(Parser.java:14112)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12626)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12978)
	at org.eclipse.jdt.internal.compiler.parser.Parser.parse(Parser.java:12935)
	at org.eclipse.jdt.internal.compiler.parser.Parser.dietParse(Parser.java:11317)
	at org.eclipse.jdt.internal.core.search.matching.MatchLocator.parseAndBuildBindings(MatchLocator.java:1950)
	at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1305)
	at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1406)
	at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1526)
	at org.eclipse.jdt.internal.core.search.JavaSearchParticipant.locateMatches(JavaSearchParticipant.java:134)
	at org.eclipse.jdt.internal.core.search.BasicSearchEngine.findMatches(BasicSearchEngine.java:253)
	at org.eclipse.jdt.internal.core.search.BasicSearchEngine.search(BasicSearchEngine.java:599)
	at org.eclipse.jdt.core.search.SearchEngine.search(SearchEngine.java:669)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RippleMethodFinder2.findAllDeclarations(RippleMethodFinder2.java:475)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RippleMethodFinder2.findAllRippleMethods(RippleMethodFinder2.java:208)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RippleMethodFinder2.getAllRippleMethods(RippleMethodFinder2.java:188)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RippleMethodFinder2.getRelatedMethods(RippleMethodFinder2.java:181)
	at org.eclipse.jdt.internal.corext.refactoring.structure.ChangeSignatureProcessor.checkFinalConditions(ChangeSignatureProcessor.java:823)
	at org.eclipse.ltk.core.refactoring.participants.ProcessorBasedRefactoring.checkFinalConditions(ProcessorBasedRefactoring.java:227)
	at org.eclipse.jdt.ls.core.internal.handlers.ChangeSignatureHandler.getChangeSignatureRefactoring(ChangeSignatureHandler.java:198)
	at org.eclipse.jdt.ls.core.internal.handlers.GetRefactorEditHandler.getEditsForRefactor(GetRefactorEditHandler.java:161)
	at org.eclipse.jdt.ls.core.internal.handlers.JDTLanguageServer.lambda$46(JDTLanguageServer.java:1128)
	at org.eclipse.jdt.ls.core.internal.BaseJDTLanguageServer.lambda$0(BaseJDTLanguageServer.java:87)
	... 7 more
Expected Result

Should just work. Or at least give visual feedback an about the error (fails silently).

Additional Informations

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Reproduzca el fallo utilizando la refactorización Change Method Signature e inspeccione el stack trace mediante ChangeSignatureHandler.getChangeSignatureRefactoring y ChangeSignatureProcessor.checkFinalConditions. Compruebe cómo la refactorización de JDT gestiona un tipo de parámetro modificado y, a continuación, verifique que Preview o Refactor se completen correctamente y que los fallos proporcionen información visible.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
tooling
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

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.