netbeans
netbeans copied to clipboard
javac assertion error during method rename
Apache NetBeans version
Apache NetBeans 28
What happened
couldn't rename a method, turned out to be repeatable
SEVERE [org.openide.util.Exceptions]
An error occurred during parsing of '/home/mbien/NetBeansProjects/netbeans/groovy/groovy.gsp/src/org/netbeans/modules/groovy/gsp/editor/indent/GspIndenter.java'. Please report a bug against java/source and attach dump file '/home/mbien/.netbeans/28/var/log/GspIndenter_6.dump'.
An error occurred during parsing of '/home/mbien/NetBeansProjects/netbeans/groovy/groovy.gsp/src/org/netbeans/modules/groovy/gsp/editor/indent/GspIndenter.java'. Please report a bug against java/source and attach dump file '/home/mbien/.netbeans/28/var/log/GspIndenter_6.dump'.
Caused: java.lang.AssertionError
at com.sun.tools.javac.util.Assert.error(Assert.java:155)
at com.sun.tools.javac.util.Assert.check(Assert.java:46)
at com.sun.tools.javac.comp.Flow$AliveAnalyzer.clearPendingExits(Flow.java:632)
at com.sun.tools.javac.comp.Flow$AliveAnalyzer.visitMethodDef(Flow.java:620)
at com.sun.tools.javac.tree.JCTree$JCMethodDecl.accept(JCTree.java:960)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:50)
at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:461)
at com.sun.tools.javac.comp.Flow$AliveAnalyzer.visitClassDef(Flow.java:594)
at com.sun.tools.javac.tree.JCTree$JCClassDecl.accept(JCTree.java:859)
at com.sun.tools.javac.tree.TreeScanner.scan(TreeScanner.java:50)
at com.sun.tools.javac.comp.Flow$BaseAnalyzer.scan(Flow.java:461)
at com.sun.tools.javac.comp.Flow$AliveAnalyzer.analyzeTree(Flow.java:1343)
at com.sun.tools.javac.comp.Flow$AliveAnalyzer.analyzeTree(Flow.java:1335)
at com.sun.tools.javac.comp.Flow.analyzeTree(Flow.java:229)
at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1406)
at com.sun.tools.javac.main.JavaCompiler.flow(JavaCompiler.java:1370)
at com.sun.tools.javac.api.JavacTaskImpl.analyze(JavacTaskImpl.java:404)
at com.sun.tools.javac.api.JavacTaskImpl.lambda$analyze$1(JavacTaskImpl.java:379)
at com.sun.tools.javac.api.JavacTaskImpl.invocationHelper(JavacTaskImpl.java:152)
at com.sun.tools.javac.api.JavacTaskImpl.analyze(JavacTaskImpl.java:379)
Caused: java.lang.IllegalStateException
at com.sun.tools.javac.api.JavacTaskImpl.analyze(JavacTaskImpl.java:383)
at org.netbeans.modules.java.source.parsing.JavacParser.moveToPhase(JavacParser.java:765)
at org.netbeans.modules.java.source.parsing.CompilationInfoImpl.toPhase(CompilationInfoImpl.java:425)
at org.netbeans.api.java.source.CompilationController.toPhase(CompilationController.java:90)
at org.netbeans.api.java.source.WorkingCopy.toPhase(WorkingCopy.java:195)
at org.netbeans.modules.refactoring.java.spi.RefactoringVisitor.setWorkingCopy(RefactoringVisitor.java:111)
at org.netbeans.modules.refactoring.java.spi.JavaRefactoringPlugin$TransformTask.run(JavaRefactoringPlugin.java:437)
at org.netbeans.modules.refactoring.java.spi.JavaRefactoringPlugin$TransformTask.run(JavaRefactoringPlugin.java:420)
at org.netbeans.modules.refactoring.java.spi.JavaRefactoringPlugin.lambda$processFiles$1(JavaRefactoringPlugin.java:325)
at org.netbeans.api.java.source.JavaSource$1.run(JavaSource.java:671)
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:335)
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:323)
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:338)
at org.netbeans.modules.refactoring.java.plugins.RenameRefactoringPlugin.prepare(RenameRefactoringPlugin.java:634)
[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:1403)
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:2018)
Language / Project Type / NetBeans Component
ant nb modules
How to reproduce
- check out https://github.com/mbien/netbeans/tree/rename-javac-ae and build
- open two projects
ide/editor.documentandgroovy/groovy.gsp - open
GspIndenterand try to rename the marked method at L137 https://github.com/mbien/netbeans/commit/3717b4c666e5b677a99587323045c1107f5ddbfc
Did this work correctly in an earlier version?
No / Don't know
Operating System
linux
JDK
JDK 25.0.1
Apache NetBeans packaging
Apache NetBeans binary zip
Anything else
No response
Are you willing to submit a pull request?
No
ran more tests:
- also reproducible with https://github.com/apache/netbeans/pull/9044
- could narrow it down to a problem with the loop right before the usage
diff --git a/groovy/groovy.gsp/src/org/netbeans/modules/groovy/gsp/editor/indent/GspIndenter.java b/groovy/groovy.gsp/src/org/netbeans/modules/groovy/gsp/editor/indent/GspIndenter.java
index defb7e0..05a59dd 100644
--- a/groovy/groovy.gsp/src/org/netbeans/modules/groovy/gsp/editor/indent/GspIndenter.java
+++ b/groovy/groovy.gsp/src/org/netbeans/modules/groovy/gsp/editor/indent/GspIndenter.java
@@ -124,14 +124,14 @@
protected int getPreservedLineInitialIndentation(JoinedTokenSequence<GspTokenId> ts) throws BadLocationException {
int[] index = ts.index();
boolean found = false;
- do {
- if (ts.token().id().isComment()) {
- found = true;
- break;
- } else {
- break;
- }
- } while (ts.movePrevious());
+// do {
+// if (ts.token().id().isComment()) {
+// found = true;
+// break;
+// } else {
+// break;
+// }
+// } while (ts.movePrevious());
int indent = 0;
if (found) {
int lineStart = LineDocumentUtils.getLineStart2(getDocument(), ts.offset());
with the loop removed, NB is able to preview the rename refactoring, but interestingly, it would only show the method declaration as usage, not the method call, but its unclear if its related or not.