diff --git a/src/main/java/org/javacs/markup/ErrorProvider.java b/src/main/java/org/javacs/markup/ErrorProvider.java index a15f96877..f64447554 100644 --- a/src/main/java/org/javacs/markup/ErrorProvider.java +++ b/src/main/java/org/javacs/markup/ErrorProvider.java @@ -40,7 +40,7 @@ private List compilerErrors(CompilationUnitTree root) var result = new ArrayList(); for (var d : task.diagnostics) { if (d.getSource() == null || !d.getSource().toUri().equals(root.getSourceFile().toUri())) continue; - if (d.getStartPosition() == -1 || d.getEndPosition() == -1) continue; + if (d.getStartPosition() == Diagnostic.NOPOS || d.getEndPosition() == Diagnostic.NOPOS) continue; result.add(lspDiagnostic(d, root.getLineMap())); } return result; @@ -126,19 +126,24 @@ private org.javacs.lsp.Diagnostic warnUnused(Element unusedEl) { throw new RuntimeException(unusedEl + " has no path"); } var root = path.getCompilationUnit(); + var file = Paths.get(root.getSourceFile().toUri()); + var contents = FileStore.contents(file); var leaf = path.getLeaf(); var pos = trees.getSourcePositions(); var start = (int) pos.getStartPosition(root, leaf); var end = (int) pos.getEndPosition(root, leaf); + if (end == Diagnostic.NOPOS) { + end = contents.length(); + } + if (leaf instanceof VariableTree) { var v = (VariableTree) leaf; var offset = (int) pos.getEndPosition(root, v.getType()); - if (offset != -1) { + if (offset != Diagnostic.NOPOS) { start = offset; } } - var file = Paths.get(root.getSourceFile().toUri()); - var contents = FileStore.contents(file); + var name = unusedEl.getSimpleName(); if (name.contentEquals("")) { name = unusedEl.getEnclosingElement().getSimpleName();