Merge pull request #3139 from sdedic/bugfix/javacompiler-phase
Get elements resolved before working with types.
diff --git a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/compiler/CompilationUnit.java b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/compiler/CompilationUnit.java
index 4465f4c..2974456 100644
--- a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/compiler/CompilationUnit.java
+++ b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/compiler/CompilationUnit.java
@@ -164,6 +164,7 @@
Task<CompilationController> task = new Task<CompilationController>() {
@Override
public void run(CompilationController controller) throws Exception {
+ controller.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED);
Elements elements = controller.getElements();
TypeElement typeElement = ElementSearch.getClass(elements, name);
if (typeElement != null) {
diff --git a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/MethodCompletion.java b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/MethodCompletion.java
index 71a5274..d3948e8 100644
--- a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/MethodCompletion.java
+++ b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/MethodCompletion.java
@@ -158,8 +158,8 @@
try {
javaSource.runUserActionTask(new Task<CompilationController>() {
@Override
- public void run(CompilationController info) {
-
+ public void run(CompilationController info) throws IOException {
+ info.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED);
List<Element> typelist = new ArrayList<>();
for (String importName : getAllImports()) {
typelist.addAll(getElementListFor(info.getElements(), importName));
diff --git a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/TypesCompletion.java b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/TypesCompletion.java
index acc9f98..0071487 100644
--- a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/TypesCompletion.java
+++ b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/TypesCompletion.java
@@ -345,9 +345,9 @@
try {
javaSource.runUserActionTask(new Task<CompilationController>() {
@Override
- public void run(CompilationController info) {
+ public void run(CompilationController info) throws IOException {
Elements elements = info.getElements();
-
+ info.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED);
addPackageElements(elements.getPackageElement(pkg));
addTypeElements(elements.getTypeElement(pkg));
}
diff --git a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/provider/JavaElementHandler.java b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/provider/JavaElementHandler.java
index 4a5e73e..83f18ab 100644
--- a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/provider/JavaElementHandler.java
+++ b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/completion/provider/JavaElementHandler.java
@@ -215,7 +215,7 @@
return false;
}
};
-
+ info.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED);
TypeElement te = elements.getTypeElement(className);
if (te != null) {
for (ExecutableElement element : ElementFilter.methodsIn(te.getEnclosedElements())) {
@@ -383,7 +383,7 @@
return false;
}
};
-
+ info.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED);
TypeElement te = elements.getTypeElement(className);
if (te != null) {
for (VariableElement element : ElementFilter.fieldsIn(te.getEnclosedElements())) {
diff --git a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/java/JavaElementHandle.java b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/java/JavaElementHandle.java
index 8a765c9..e4bb0a1 100644
--- a/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/java/JavaElementHandle.java
+++ b/groovy/groovy.editor/src/org/netbeans/modules/groovy/editor/java/JavaElementHandle.java
@@ -213,6 +213,7 @@
@Override
public void run(CompilationController parameter) throws Exception {
try {
+ parameter.toPhase(JavaSource.Phase.ELEMENTS_RESOLVED);
result = resolver.apply(parameter, toElement(parameter));
} catch (Exception ex) {
thrown = ex;