diff options
-rw-r--r-- | src/main/java/org/javacs/CompileBatch.java | 45 |
1 files changed, 23 insertions, 22 deletions
diff --git a/src/main/java/org/javacs/CompileBatch.java b/src/main/java/org/javacs/CompileBatch.java index aeda6f3..f344c82 100644 --- a/src/main/java/org/javacs/CompileBatch.java +++ b/src/main/java/org/javacs/CompileBatch.java @@ -157,28 +157,6 @@ public class CompileBatch { return field.getEnclosingElement() instanceof TypeElement; } - private Optional<TreePath> ref(TreePath from) { - var root = from.getCompilationUnit(); - var lines = root.getLineMap(); - var to = trees.getElement(from); - // Skip elements we can't find - if (to == null) { - // LOG.warning(String.format("No element for `%s`", from.getLeaf())); - return Optional.empty(); - } - // Skip non-methods - if (!(to instanceof ExecutableElement || to instanceof TypeElement || isField(to))) { - return Optional.empty(); - } - // TODO skip anything not on source path - var result = trees.getPath(to); - if (result == null) { - // LOG.warning(String.format("Element `%s` has no TreePath", to)); - return Optional.empty(); - } - return Optional.of(result); - } - private List<TreePath> referencesToElement(CompilationUnitTree root, Element to) { var trees = Trees.instance(task); var results = new ArrayList<TreePath>(); @@ -222,8 +200,31 @@ public class CompileBatch { } private List<Ptr> index(CompilationUnitTree root) { + // TODO remember if the file contains errors, and keep re-indexing it var refs = new ArrayList<Ptr>(); class IndexFile extends TreePathScanner<Void, Void> { + Optional<TreePath> ref(TreePath from) { + var root = from.getCompilationUnit(); + var lines = root.getLineMap(); + var to = trees.getElement(from); + // Skip elements we can't find + if (to == null) { + // LOG.warning(String.format("No element for `%s`", from.getLeaf())); + return Optional.empty(); + } + // Skip non-methods + if (!(to instanceof ExecutableElement || to instanceof TypeElement || isField(to))) { + return Optional.empty(); + } + // TODO skip anything not on source path + var result = trees.getPath(to); + if (result == null) { + // LOG.warning(String.format("Element `%s` has no TreePath", to)); + return Optional.empty(); + } + return Optional.of(result); + } + void check(TreePath from) { var r = ref(from); if (r.isPresent()) { |