apache / apache/netbeans

Java move refactoring: `IllegalStateException: Cannot use Elements.getTypeElement before the TaskEvent.Kind.ENTER finished event.`

Open
#4,916 0 comments 0 reactions 0 assignees View on GitHub
Java kind:bug nb-javac needs:triage
Dominant language
Java
Stars
3.1k
Forks
935
Avg merge
2d 3h
Merged PRs (30d)
17

Description

### Apache NetBeans version

Apache NetBeans 16 release candidate

### What happened

16rc3. Running on JDK 17.0.4 but using source level 8. In a largish Maven project, I cut a class from the **Source Packages** view and pasted into another package. The **Move class** refactoring dialog opened; I click **Refactor** and then this is thrown:

```
java.lang.IllegalStateException: Cannot use Elements.getTypeElement before the TaskEvent.Kind.ENTER finished event.
at com.sun.tools.javac.model.JavacElements.ensureEntered(JavacElements.java:838)
at com.sun.tools.javac.model.JavacElements.doGetTypeElement(JavacElements.java:172)
at com.sun.tools.javac.model.JavacElements.getTypeElement(JavacElements.java:168)
at com.sun.tools.javac.model.JavacElements.getTypeElement(JavacElements.java:88)
at org.netbeans.modules.java.source.save.ElementOverlay.resolve(ElementOverlay.java:198)
at org.netbeans.modules.java.source.save.ElementOverlay.resolve(ElementOverlay.java:187)
at org.netbeans.modules.java.source.save.ElementOverlay.unnamedPackage(ElementOverlay.java:428)
at org.netbeans.modules.java.source.pretty.ImportAnalysis2.(ImportAnalysis2.java:95)
at org.netbeans.modules.java.source.pretty.ImportAnalysis2.(ImportAnalysis2.java:85)
at org.netbeans.api.java.source.WorkingCopy.processCurrentCompilationUnit(WorkingCopy.java:783)
at org.netbeans.api.java.source.WorkingCopy.getChanges(WorkingCopy.java:1321)
at org.netbeans.api.java.source.JavaSource$1.run(JavaSource.java:678)
at org.netbeans.api.java.source.JavaSource$1.run(JavaSource.java:665)
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:169)
at org.netbeans.modules.parsing.api.ParserManager$MultiUserTaskAction.run(ParserManager.java:140)
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:686)
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.spi.JavaRefactoringPlugin.createAndAddElements(JavaRefactoringPlugin.java:354)
at org.netbeans.modules.refactoring.java.plugins.MoveFileRefactoringPlugin.prepare(MoveFileRefactoringPlugin.java:576)
[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:1418)
at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
at org.openide.util.lookup.Lookups.executeWith(Lookups.java:278)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)
```

(I had recently renamed the same source file within a package, successfully.)

### How to reproduce

Unknown. Reproduces locally right now but not sure how to reconstruct in another environment.

### Did this work correctly in an earlier version?

No / Don't know

### Operating System

Linux

### JDK

17.0.4

### Apache NetBeans packaging

Apache NetBeans Snap Package

### Anything else

_No response_

### Are you willing to submit a pull request?

No

### Code of Conduct

Yes

Contributor guide

Open the contributing guide

Research direction

Start with the stack trace in java.source.save.ElementOverlay.java and follow its calls through ImportAnalysis2, WorkingCopy, and MoveFileRefactoringPlugin. Try to reproduce the Java move refactoring with JDK 17 and source level 8, although the issue gives no reliable reproduction steps. Done means the move completes without the IllegalStateException.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.