netbeans icon indicating copy to clipboard operation
netbeans copied to clipboard

javac assertion error during method rename

Open mbien opened this issue 1 month ago • 1 comments

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

  1. check out https://github.com/mbien/netbeans/tree/rename-javac-ae and build
  2. open two projects ide/editor.document and groovy/groovy.gsp
  3. open GspIndenter and 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

mbien avatar Dec 01 '25 17:12 mbien

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.

mbien avatar Dec 02 '25 05:12 mbien