diff --git a/langtools/src/share/classes/com/sun/source/util/DocSourcePositions.java b/langtools/src/share/classes/com/sun/source/util/DocSourcePositions.java new file mode 100644 index 00000000000..d249da1c278 --- /dev/null +++ b/langtools/src/share/classes/com/sun/source/util/DocSourcePositions.java @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.source.util; + +import com.sun.source.doctree.DocCommentTree; +import com.sun.source.doctree.DocTree; +import com.sun.source.tree.CompilationUnitTree; + +/** + * Provides methods to obtain the position of a DocTree within a javadoc comment. + * A position is defined as a simple character offset from the start of a + * CompilationUnit where the first character is at offset 0. + * + * @since 1.8 + */ +@jdk.Supported +public interface DocSourcePositions extends SourcePositions { + + /** + * Gets the starting position of the tree within the comment within the file. If tree is not found within + * file, or if the starting position is not available, + * return {@link javax.tools.Diagnostic#NOPOS}. + * The given tree should be under the given comment tree, and the given documentation + * comment tree should be returned from a {@link DocTrees#getDocCommentTree(com.sun.source.util.TreePath) } + * for a tree under the given file. + * The returned position must be at the start of the yield of this tree, that + * is for any sub-tree of this tree, the following must hold: + * + *
+ * {@code tree.getStartPosition() <= subtree.getStartPosition()} or
+ * {@code tree.getStartPosition() == NOPOS} or
+ * {@code subtree.getStartPosition() == NOPOS}
+ *
+ * {@code tree.getEndPosition() >= subtree.getEndPosition()} or
+ * {@code tree.getEndPosition() == NOPOS} or
+ * {@code subtree.getEndPosition() == NOPOS}
+ *
+ * {@code tree.getStartPosition() <= tree.getEndPosition()} or
+ * {@code tree.getStartPosition() == NOPOS} or
+ * {@code tree.getEndPosition() == NOPOS}
+ *
Description with {@link java.io.InputStream link} + * + * @param first description + * @param second description + * @return whatever + * @throws IllegalStateException why? + * @since 1.15 + * @see java.util.List +TEXT:First sentence. +START_ELEMENT:
+TEXT:Description with!trailing-whitespace! +LINK:{@link java.io.InputStream link} +REFERENCE:java.io.InputStream +TEXT:link +PARAM:@param first description +IDENTIFIER:first +TEXT:description +PARAM:@param second description +IDENTIFIER:second +TEXT:description +RETURN:@return whatever +TEXT:whatever +THROWS:@throws IllegalStateException why? +REFERENCE:IllegalStateException +TEXT:why? +SINCE:@since 1.15 +TEXT:1.15 +SEE:@see java.util.List +REFERENCE:java.util.List +erroneous: +DOC_COMMENT:First sentence. + * + *
Description with {@link}, {@link java.util.List}, {@link + * + * @param + * @param second + * @return + * @throws + * @throws IllegalStateException + * @since + * @see +TEXT:First sentence. +START_ELEMENT:
+TEXT:Description with!trailing-whitespace! +LINK:{@link} +TEXT:,!trailing-whitespace! +LINK:{@link java.util.List} +REFERENCE:java.util.List +TEXT:,!trailing-whitespace! +ERRONEOUS:{@link +ERRONEOUS:@param +PARAM:@param second +IDENTIFIER:second +RETURN:@return +ERRONEOUS:@throws +THROWS:@throws IllegalStateException +REFERENCE:IllegalStateException +SINCE:@since +ERRONEOUS:@see +withWhiteSpaces: +DOC_COMMENT:First sentence. + * + *
Description with {@link }, {@link java.util.List#add( int )}, + * {@link java.util.List#add( int ) some text with whitespaces}, {@link + * + * @param first + * @param second some text with trailing whitespace + * @return some return + * @throws java.lang.IllegalStateException + * @throws java.lang.IllegalStateException some text +TEXT:First sentence. +START_ELEMENT:
+TEXT:Description with!trailing-whitespace! +LINK:{@link } +TEXT:,!trailing-whitespace! +LINK:{@link java.util.List#add( int )} +REFERENCE:java.util.List#add( int ) +TEXT:, + *!trailing-whitespace! +LINK:{@link java.util.List#add( int ) some text with whitespaces} +REFERENCE:java.util.List#add( int ) +TEXT:some text with whitespaces +TEXT:,!trailing-whitespace! +ERRONEOUS:{@link +PARAM:@param first +IDENTIFIER:first +PARAM:@param second some text with trailing whitespace +IDENTIFIER:second +TEXT:some text with trailing whitespace +RETURN:@return some return +TEXT:some return +THROWS:@throws java.lang.IllegalStateException +REFERENCE:java.lang.IllegalStateException +THROWS:@throws java.lang.IllegalStateException some text +REFERENCE:java.lang.IllegalStateException +TEXT:some text \ No newline at end of file diff --git a/langtools/test/tools/javac/doctree/positions/TestPositionSource.java b/langtools/test/tools/javac/doctree/positions/TestPositionSource.java new file mode 100644 index 00000000000..801af3d687c --- /dev/null +++ b/langtools/test/tools/javac/doctree/positions/TestPositionSource.java @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +public class TestPositionSource { + + /**First sentence. + * + *
Description with {@link java.io.InputStream link} + * + * @param first description + * @param second description + * @return whatever + * @throws IllegalStateException why? + * @since 1.15 + * @see java.util.List + */ + public boolean valid(int first, int second) throws IllegalStateException { + return true; + } + + /**First sentence. + * + *
Description with {@link}, {@link java.util.List}, {@link + * + * @param + * @param second + * @return + * @throws + * @throws IllegalStateException + * @since + * @see + */ + public boolean erroneous(int first, int second) throws IllegalStateException { + return true; + } + + /**First sentence. + * + *
Description with {@link }, {@link java.util.List#add( int )}, + * {@link java.util.List#add( int ) some text with whitespaces}, {@link + * + * @param first + * @param second some text with trailing whitespace + * @return some return + * @throws java.lang.IllegalStateException + * @throws java.lang.IllegalStateException some text + */ + public boolean withWhiteSpaces(int first, int second) throws IllegalStateException { + return true; + } + +}