Refactor rename: AssertionError: Diff not implemented: SNIPPET
- Dominant language
- Java
- Stars
- 3.1k
- Forks
- 935
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 17
Description
### Apache NetBeans version
Apache NetBeans 30
### What happened
With
```
interface RefactorSnippet {
/**
* {@snippet :
* update();
* }
*/
default void update() {
}
}
```
1. Place cursor on `update` on line `default void update() {`
2. Do refactor rename
3. check box `Apply rename on comments`
4. Click refactor
Observe `AssertionError`
### Language / Project Type / NetBeans Component
java refactor
### How to reproduce
See OP
### Did this work correctly in an earlier version?
No / Don't know
### Operating System
Linux harmony 7.0.9-76070009-generic #202605191504~1779464622~22.04~ef31795 SMP PREEMPT_DYNAMIC Fri M x86_64 x86_64 x86_64 GNU/Linux
### JDK
openjdk 26 2026-03-17 OpenJDK Runtime Environment (build 26+35-2893) OpenJDK 64-Bit Server VM (build 26+35-2893, mixed mode, sharing)
### Apache NetBeans packaging
Apache NetBeans binary zip
### Anything else
```
INFO [org.netbeans.modules.refactoring.spi.impl.ParametersPanel]: org.netbeans.modules.refactoring.api.AbstractRefactoring$ProgressL@5b1ea785 called start multiple times
INFO [org.netbeans.modules.refactoring.spi.impl.ParametersPanel]: org.netbeans.modules.refactoring.api.AbstractRefactoring$ProgressL@5b1ea785 called start multiple times
SEVERE [org.openide.util.Exceptions]
java.lang.AssertionError: Diff not implemented: SNIPPET com.sun.tools.javac.tree.DCTree$DCSnippet
at org.netbeans.modules.java.source.save.CasualDiff.diffDocTree(CasualDiff.java:4891)
at org.netbeans.modules.java.source.save.CasualDiff.diffList(CasualDiff.java:5310)
at org.netbeans.modules.java.source.save.CasualDiff.diffDocComment(CasualDiff.java:4924)
at org.netbeans.modules.java.source.save.CasualDiff.diffDocTree(CasualDiff.java:4779)
at org.netbeans.modules.java.source.save.CasualDiff.diffCommentLists(CasualDiff.java:4674)
at org.netbeans.modules.java.source.save.CasualDiff.diffPrecedingComments(CasualDiff.java:4565)
at org.netbeans.modules.java.source.save.CasualDiff.diffTreeImpl0(CasualDiff.java:5664)
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:905)
at org.netbeans.api.java.source.WorkingCopy.getChanges(WorkingCopy.java:1320)
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)
```
### Are you willing to submit a pull request?
No
Contributor guide
Research direction
Start in java.source.save.CasualDiff at diffDocTree around line 4891 and reproduce the rename with “Apply rename on comments” using the snippet shown in the issue. Trace the SNIPPET handling through diffDocComment and verify that the refactoring completes without AssertionError while preserving the intended comment update.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 58/100