Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

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

オープン
#9,645 コメント 3 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
3/5
見積もり時間
1〜2日
初心者へのやさしさ
68/100
issue の種類
バグ
明瞭さ
明確に書かれている
活発さ
活発
技術スタック
java

調査の方向性

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.

索引モデルが issue の本文から書いたものです。

説明

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

主要言語
Java
スター
3.1k
フォーク
939
平均マージ
4日 11時間
マージ済み PR(30日)
43

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

apache/netbeans のほかの issue

apache/netbeans の issue をすべて見る

似ている issue

Java の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。