Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Rename class with pattern matching instanceof fails with BINDING_PATTERN com.sun.tools.javac.tree.JCTree$JCBindingPattern

Abierto
#9,645 2 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
68/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
java

Línea de trabajo

Start with org.netbeans.modules.java.source.save.CasualDiff.java, especially treesMatch at line 3484 and matchTypeTest, then reproduce the class rename using a pattern-matching instanceof expression. Trace how the BINDING_PATTERN node is handled during refactoring. Done means renaming completes without the AssertionError and the reference is updated correctly.

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

Descripción

cannot reproduce Java kind:bug needs:triage
Apache NetBeans version

Apache NetBeans 31

What happened

NetBeans 31, when renaming a class that has a JDK 16+ "pattern matching instanceof"

if (cp instanceof GrandProjectContextProvider gcp)

Image
INFO [org.netbeans.ui.indexing]: Indexing finished, indexing took 0 ms.
INFO [org.netbeans.modules.refactoring.spi.impl.ParametersPanel]: org.netbeans.modules.refactoring.api.AbstractRefactoring$ProgressL@2c1ed6fc called start multiple times
INFO [null]: Last record repeated again.
SEVERE [org.openide.util.Exceptions]
java.lang.AssertionError: BINDING_PATTERN com.sun.tools.javac.tree.JCTree$JCBindingPattern
	at org.netbeans.modules.java.source.save.CasualDiff.treesMatch(CasualDiff.java:3484)
	at org.netbeans.modules.java.source.save.CasualDiff.treesMatch(CasualDiff.java:3300)
	at org.netbeans.modules.java.source.save.CasualDiff.matchTypeTest(CasualDiff.java:6137)
	at org.netbeans.modules.java.source.save.CasualDiff.treesMatch(CasualDiff.java:3384)
	at org.netbeans.modules.java.source.save.CasualDiff.treesMatch(CasualDiff.java:3300)
	at org.netbeans.modules.java.source.save.CasualDiff.treesMatch(CasualDiff.java:3378)
	at org.netbeans.modules.java.source.save.CasualDiff.treesMatch(CasualDiff.java:3300)
	at org.netbeans.modules.java.source.save.CasualDiff.matchIf(CasualDiff.java:6077)
	at org.netbeans.modules.java.source.save.CasualDiff.treesMatch(CasualDiff.java:3354)
	at org.netbeans.modules.java.source.save.CasualDiff.treesMatch(CasualDiff.java:3300)
	at org.netbeans.modules.java.source.save.CasualDiff.listsMatch(CasualDiff.java:6009)
	at org.netbeans.modules.java.source.save.CasualDiff.matchBlock(CasualDiff.java:6023)
	at org.netbeans.modules.java.source.save.CasualDiff.treesMatch(CasualDiff.java:3330)
	at org.netbeans.modules.java.source.save.CasualDiff.treesMatch(CasualDiff.java:3300)
	at org.netbeans.modules.java.source.save.CasualDiff.matchLambda(CasualDiff.java:6192)
	at org.netbeans.modules.java.source.save.CasualDiff.treesMatch(CasualDiff.java:3456)
	at org.netbeans.modules.java.source.save.CasualDiff.treesMatch(CasualDiff.java:3300)
	at org.netbeans.modules.java.source.save.CasualDiff.listsMatch(CasualDiff.java:6009)
	at org.netbeans.modules.java.source.save.CasualDiff.diffApply(CasualDiff.java:2494)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTreeImpl0(CasualDiff.java:5787)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTreeImpl(CasualDiff.java:5603)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTree(CasualDiff.java:5530)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTree(CasualDiff.java:5501)
	at org.netbeans.modules.java.source.save.CasualDiff.diffExec(CasualDiff.java:2385)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTreeImpl0(CasualDiff.java:5766)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTreeImpl(CasualDiff.java:5603)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTree(CasualDiff.java:5530)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTree(CasualDiff.java:5501)
	at org.netbeans.modules.java.source.save.CasualDiff.diffList(CasualDiff.java:4314)
	at org.netbeans.modules.java.source.save.CasualDiff.diffBlock(CasualDiff.java:1805)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTreeImpl0(CasualDiff.java:5727)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTreeImpl(CasualDiff.java:5603)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTree(CasualDiff.java:5530)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTree(CasualDiff.java:5501)
	at org.netbeans.modules.java.source.save.CasualDiff.diffMethodDef(CasualDiff.java:1494)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTreeImpl0(CasualDiff.java:5717)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTreeImpl(CasualDiff.java:5603)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTree(CasualDiff.java:5530)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTree(CasualDiff.java:5501)
	at org.netbeans.modules.java.source.save.CasualDiff.diffList(CasualDiff.java:4314)
	at org.netbeans.modules.java.source.save.CasualDiff.diffClassDef(CasualDiff.java:1204)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTreeImpl0(CasualDiff.java:5714)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTreeImpl(CasualDiff.java:5603)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTree(CasualDiff.java:5530)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTree(CasualDiff.java:5501)
	at org.netbeans.modules.java.source.save.CasualDiff.diffList(CasualDiff.java:4314)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTopLevel(CasualDiff.java:602)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTreeImpl0(CasualDiff.java:5684)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTreeImpl(CasualDiff.java:5603)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTree(CasualDiff.java:5530)
	at org.netbeans.modules.java.source.save.CasualDiff.diffTree(CasualDiff.java:5513)
	at org.netbeans.modules.java.source.save.CasualDiff.diff(CasualDiff.java:358)
	at org.netbeans.api.java.source.WorkingCopy.processCurrentCompilationUnit(WorkingCopy.java:889)
	at org.netbeans.api.java.source.WorkingCopy.getChanges(WorkingCopy.java:1304)
	at org.netbeans.api.java.source.JavaSource$1.run(JavaSource.java:672)
	at org.netbeans.api.java.source.JavaSource$1.run(JavaSource.java:661)
	at org.netbeans.api.java.source.JavaSource$MultiTask.run(JavaSource.java:504)
	at org.netbeans.modules.parsing.impl.TaskProcessor.callUserTask(TaskProcessor.java:586)
	at org.netbeans.modules.parsing.api.ParserManager$MultiUserTaskAction.run(ParserManager.java:235)
	at org.netbeans.modules.parsing.api.ParserManager$MultiUserTaskAction.run(ParserManager.java:205)
	at org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:181)
	at org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:178)
	at org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.priorityIO(FileChangedManager.java:153)
	at org.netbeans.modules.masterfs.providers.ProvidedExtensions.priorityIO(ProvidedExtensions.java:341)
	at org.netbeans.modules.parsing.nb.DataObjectEnvFactory.runPriorityIO(DataObjectEnvFactory.java:118)
	at org.netbeans.modules.parsing.impl.Utilities.runPriorityIO(Utilities.java:67)
	at org.netbeans.modules.parsing.impl.TaskProcessor.runUserTask(TaskProcessor.java:178)
	at org.netbeans.modules.parsing.api.ParserManager.parse(ParserManager.java:85)
	at org.netbeans.api.java.source.JavaSource.runUserActionTaskImpl(JavaSource.java:454)
	at org.netbeans.api.java.source.JavaSource.runUserActionTask(JavaSource.java:425)
	at org.netbeans.api.java.source.JavaSource.runModificationTask(JavaSource.java:680)
	at org.netbeans.modules.refactoring.java.spi.JavaRefactoringPlugin.processFiles(JavaRefactoringPlugin.java:325)
	at org.netbeans.modules.refactoring.java.spi.JavaRefactoringPlugin.processFiles(JavaRefactoringPlugin.java:264)
	at org.netbeans.modules.refactoring.java.spi.JavaRefactoringPlugin.processFiles(JavaRefactoringPlugin.java:246)
	at org.netbeans.modules.refactoring.java.spi.JavaRefactoringPlugin.createAndAddElements(JavaRefactoringPlugin.java:340)
	at org.netbeans.modules.refactoring.java.spi.JavaRefactoringPlugin.createAndAddElements(JavaRefactoringPlugin.java:356)
	at org.netbeans.modules.refactoring.java.plugins.RenameRefactoringPlugin.prepare(RenameRefactoringPlugin.java:613)
[catch] at org.netbeans.modules.refactoring.api.AbstractRefactoring.pluginsPrepare2(AbstractRefactoring.java:417)
	at org.netbeans.modules.refactoring.api.AbstractRefactoring.pluginsPrepare(AbstractRefactoring.java:401)
	at org.netbeans.modules.refactoring.api.AbstractRefactoring.prepare(AbstractRefactoring.java:212)
	at org.netbeans.modules.refactoring.spi.impl.ParametersPanel$Prepare.run(ParametersPanel.java:1063)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1370)
	at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
	at org.openide.util.lookup.Lookups.executeWith(Lookups.java:287)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1981)
Language / Project Type / NetBeans Component

No response

How to reproduce

Rename a class that has a reference using the pattern matching instanceof

Did this work correctly in an earlier version?

No / Don't know

Operating System

Ubuntu 22.04

JDK

JDK 26.0.2

Apache NetBeans packaging

Community provided installer

Anything else

Always i would say

Are you willing to submit a pull request?

No

Lenguaje dominante
Java
Estrellas
3.1k
Forks
939
Merge medio
5 d 3 h
PR fusionados (30 d)
22

Preparar el entorno

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.

Más de apache/netbeans

Todos los issues de apache/netbeans

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.