apache / apache/netbeans

Refactor rename: AssertionError: Diff not implemented: SNIPPET

Open
#9,466 1 comment 0 reactions 0 assignees View on GitHub
Java JavaDoc kind:bug needs:triage
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.