setting javac based compilation unit resolver for early tests

This commit is contained in:
Martin Lippert
2024-12-20 17:53:44 +01:00
parent 617bc6c90d
commit c323fb9ede
2 changed files with 15 additions and 1 deletions

View File

@@ -10,6 +10,7 @@
*******************************************************************************/
package org.springframework.ide.vscode.boot.java.utils;
import java.lang.reflect.Field;
import java.util.Map;
import org.eclipse.core.runtime.IProgressMonitor;
@@ -18,6 +19,8 @@ import org.eclipse.jdt.core.dom.AST;
import org.eclipse.jdt.core.dom.ASTNode;
import org.eclipse.jdt.core.dom.ASTParser;
import org.eclipse.jdt.core.dom.FileASTRequestor;
import org.eclipse.jdt.core.dom.JavacCompilationUnitResolver;
import org.eclipse.jdt.internal.core.dom.ICompilationUnitResolver;
import org.springframework.ide.vscode.boot.java.annotations.AnnotationHierarchies;
/**
@@ -48,6 +51,17 @@ public class ASTParserCleanupEnabled {
parser.setIgnoreMethodBodies(ignoreMethodBodies);
parser.setEnvironment(classpathEntries, sourceEntries, null, false);
try {
Field field = parser.getClass().getDeclaredField("unitResolver");
field.setAccessible(true);
ICompilationUnitResolver resolver = new JavacCompilationUnitResolver();
field.set(parser, resolver);
} catch (Exception e) {
e.printStackTrace();
}
// List<Classpath> classpaths = CUResolver.getClasspath(parser);
// environment = CUResolver.createLookupEnvironment(classpaths.toArray(new Classpath[classpaths.size()]));

View File

@@ -587,7 +587,7 @@ public class SpringIndexerJava implements SpringIndexer {
};
ASTParserCleanupEnabled parser = createParser(project, annotations, ignoreMethodBodies);
parser.createASTs(javaFiles, null, new String[0], requestor, null);
parser.createASTs(javaFiles, new String[javaFiles.length], new String[0], requestor, null);
parser.cleanup();
return (String[]) nextPassFiles.toArray(new String[nextPassFiles.size()]);