diff --git a/src/delombok/lombok/delombok/DocCommentIntegrator.java b/src/delombok/lombok/delombok/DocCommentIntegrator.java index 3464964e..491073c7 100644 --- a/src/delombok/lombok/delombok/DocCommentIntegrator.java +++ b/src/delombok/lombok/delombok/DocCommentIntegrator.java @@ -31,11 +31,13 @@ import java.util.regex.Pattern; import com.sun.tools.javac.parser.Tokens.Comment; import com.sun.tools.javac.tree.DocCommentTable; +import com.sun.tools.javac.tree.EndPosTable; import com.sun.tools.javac.tree.JCTree; import com.sun.tools.javac.tree.JCTree.JCClassDecl; import com.sun.tools.javac.tree.JCTree.JCCompilationUnit; import com.sun.tools.javac.tree.JCTree.JCMethodDecl; import com.sun.tools.javac.tree.JCTree.JCVariableDecl; +import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition; import com.sun.tools.javac.tree.TreeScanner; import lombok.javac.CommentInfo; @@ -132,6 +134,35 @@ public class DocCommentIntegrator { return docCommentContent_; } + @Override public DiagnosticPosition getPos() { + return new DiagnosticPosition() { + public JCTree getTree() { + return node; + } + + public int getStartPosition() { + return pos; + } + + public int getPreferredPosition() { + return pos; + } + + @SuppressWarnings("unused") // We compile against very old versions of javac intentionally (to support old stuff), but this is the method for newer impls. + public int getEndPosition(EndPosTable endPosTable) { + int end = endPosTable == null ? 0 : endPosTable.getEndPos(node); + if (end > pos) return end; + return pos + docCommentContent_.length(); + } + + public int getEndPosition(Map endPosTable) { + Integer end = endPosTable.get(node); + if (end != null && end.intValue() > pos) return end.intValue(); + return pos + docCommentContent_.length(); + } + }; + } + @Override public int getSourcePos(int index) { return pos + index; } diff --git a/src/stubs/com/sun/tools/javac/tree/EndPosTable.java b/src/stubs/com/sun/tools/javac/tree/EndPosTable.java new file mode 100644 index 00000000..b6e25220 --- /dev/null +++ b/src/stubs/com/sun/tools/javac/tree/EndPosTable.java @@ -0,0 +1,5 @@ +package com.sun.tools.javac.tree; + +public interface EndPosTable { + int getEndPos(JCTree tree); +} diff --git a/src/stubs/com/sun/tools/javac/util/JCDiagnostic.java b/src/stubsstubs/com/sun/tools/javac/util/JCDiagnostic.java similarity index 100% rename from src/stubs/com/sun/tools/javac/util/JCDiagnostic.java rename to src/stubsstubs/com/sun/tools/javac/util/JCDiagnostic.java diff --git a/src/utils/lombok/javac/Javac.java b/src/utils/lombok/javac/Javac.java index af19114d..22edcd05 100644 --- a/src/utils/lombok/javac/Javac.java +++ b/src/utils/lombok/javac/Javac.java @@ -55,7 +55,6 @@ import com.sun.tools.javac.tree.JCTree.JCIdent; import com.sun.tools.javac.tree.JCTree.JCImport; import com.sun.tools.javac.tree.JCTree.JCLiteral; import com.sun.tools.javac.tree.JCTree.JCVariableDecl; -import com.sun.tools.javac.tree.TreeInfo; import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition; import lombok.core.ClassLiteral;