8190552: Augment the Compiler API tree with APIs to represent HTML content
Reviewed-by: jjg, jlahoda
This commit is contained in:
parent
4da03ba907
commit
e3c574e026
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2011, 2017, 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
|
||||
@ -26,6 +26,7 @@
|
||||
package com.sun.source.doctree;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -69,4 +70,39 @@ public interface DocCommentTree extends DocTree {
|
||||
* @return the block tags of a documentation comment
|
||||
*/
|
||||
List<? extends DocTree> getBlockTags();
|
||||
|
||||
/**
|
||||
* Returns a list of trees containing the content (if any) preceding
|
||||
* the content of the documentation comment.
|
||||
* When the {@code DocCommentTree} has been read from a documentation
|
||||
* comment in a Java source file, the list will be empty.
|
||||
* When the {@code DocCommentTree} has been read from an HTML file, this
|
||||
* represents the content from the beginning of the file up to and
|
||||
* including the {@code <body>} tag.
|
||||
*
|
||||
* @implSpec This implementation returns an empty list.
|
||||
*
|
||||
* @return the list of trees
|
||||
* @since 10
|
||||
*/
|
||||
default List<? extends DocTree> getPreamble() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns a list of trees containing the content (if any) following the
|
||||
* content of the documentation comment.
|
||||
* When the {@code DocCommentTree} has been read from a documentation
|
||||
* comment in a Java source file, the list will be empty.
|
||||
* When {@code DocCommentTree} has been read from an HTML file, this
|
||||
* represents the content from the {@code </body>} tag to the end of file.
|
||||
*
|
||||
* @implSpec This implementation returns an empty list.
|
||||
*
|
||||
* @return the list of trees
|
||||
* @since 10
|
||||
*/
|
||||
default List<? extends DocTree> getPostamble() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
@ -77,6 +77,12 @@ public interface DocTree {
|
||||
*/
|
||||
DOC_ROOT("docRoot"),
|
||||
|
||||
/**
|
||||
* Used for instances of {@link DocTypeTree}
|
||||
* representing an HTML DocType declaration.
|
||||
*/
|
||||
DOC_TYPE,
|
||||
|
||||
/**
|
||||
* Used for instances of {@link EndElementTree}
|
||||
* representing the end of an HTML element.
|
||||
|
@ -104,6 +104,21 @@ public interface DocTreeVisitor<R,P> {
|
||||
*/
|
||||
R visitDocRoot(DocRootTree node, P p);
|
||||
|
||||
/**
|
||||
* Visits a DocTypeTree node.
|
||||
*
|
||||
* @implSpec Visits a {@code DocTypeTree} node
|
||||
* by calling {@code visitOther(node, p)}.
|
||||
*
|
||||
* @param node the node being visited
|
||||
* @param p a parameter value
|
||||
* @return a result value
|
||||
* @since 10
|
||||
*/
|
||||
default R visitDocType(DocTypeTree node, P p) {
|
||||
return visitOther(node, p);
|
||||
}
|
||||
|
||||
/**
|
||||
* Visits an EndElementTree node.
|
||||
* @param node the node being visited
|
||||
@ -267,7 +282,9 @@ public interface DocTreeVisitor<R,P> {
|
||||
* @return a result value
|
||||
* @since 10
|
||||
*/
|
||||
default R visitSummary(SummaryTree node, P p) { return visitOther(node, p);}
|
||||
default R visitSummary(SummaryTree node, P p) {
|
||||
return visitOther(node, p);
|
||||
}
|
||||
|
||||
/**
|
||||
* Visits a TextTree node.
|
||||
|
@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (c) 2017, 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.doctree;
|
||||
|
||||
/**
|
||||
* A tree node for a {@code doctype} declaration.
|
||||
*
|
||||
* <p>
|
||||
* <!doctype text>
|
||||
*
|
||||
* @since 10
|
||||
*/
|
||||
public interface DocTypeTree extends DocTree {
|
||||
/**
|
||||
* Returns the text of the doctype declaration.
|
||||
* @return text
|
||||
*/
|
||||
String getText();
|
||||
}
|
@ -39,6 +39,7 @@ import com.sun.source.doctree.DeprecatedTree;
|
||||
import com.sun.source.doctree.DocCommentTree;
|
||||
import com.sun.source.doctree.DocRootTree;
|
||||
import com.sun.source.doctree.DocTree;
|
||||
import com.sun.source.doctree.DocTypeTree;
|
||||
import com.sun.source.doctree.EndElementTree;
|
||||
import com.sun.source.doctree.EntityTree;
|
||||
import com.sun.source.doctree.ErroneousTree;
|
||||
@ -121,12 +122,34 @@ public interface DocTreeFactory {
|
||||
*/
|
||||
DocCommentTree newDocCommentTree(List<? extends DocTree> fullBody, List<? extends DocTree> tags);
|
||||
|
||||
|
||||
/**
|
||||
* Create a new {@code DocCommentTree} object, to represent the enitire doc comment.
|
||||
* @param fullBody the entire body of the doc comment
|
||||
* @param tags the block tags in the doc comment
|
||||
* @param preamble the meta content of an html file including the body tag
|
||||
* @param postamble the meta content of an html including the closing body tag
|
||||
* @return a {@code DocCommentTree} object
|
||||
* @since 10
|
||||
*/
|
||||
DocCommentTree newDocCommentTree(List<? extends DocTree> fullBody,
|
||||
List<? extends DocTree> tags,
|
||||
List<? extends DocTree> preamble,
|
||||
List<? extends DocTree> postamble);
|
||||
/**
|
||||
* Create a new {@code DocRootTree} object, to represent an {@code {@docroot} } tag.
|
||||
* @return a {@code DocRootTree} object
|
||||
*/
|
||||
DocRootTree newDocRootTree();
|
||||
|
||||
/**
|
||||
* Create a new {@code DocTypeTree}, to represent a {@code DOCTYPE} HTML declaration.
|
||||
* @param text the content of the declaration
|
||||
* @return a {@code CommentTree} object
|
||||
* @since 10
|
||||
*/
|
||||
DocTypeTree newDocTypeTree(String text);
|
||||
|
||||
/**
|
||||
* Create a new {@code EndElement} object, to represent the end of an HTML element.
|
||||
* @param name the name of the HTML element
|
||||
|
@ -198,6 +198,18 @@ public class DocTreeScanner<R,P> implements DocTreeVisitor<R,P> {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc} This implementation returns {@code null}.
|
||||
*
|
||||
* @param node {@inheritDoc}
|
||||
* @param p {@inheritDoc}
|
||||
* @return the result of scanning
|
||||
*/
|
||||
@Override
|
||||
public R visitDocType(DocTypeTree node, P p) {
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc} This implementation returns {@code null}.
|
||||
*
|
||||
|
@ -98,13 +98,12 @@ public abstract class DocTrees extends Trees {
|
||||
/**
|
||||
* Returns the doc comment tree of the given file. The file must be
|
||||
* an HTML file, in which case the doc comment tree represents the
|
||||
* contents of the <body> tag, and any enclosing tags are ignored.
|
||||
* entire contents of the file.
|
||||
* Returns {@code null} if no doc comment was found.
|
||||
* Future releases may support additional file types.
|
||||
*
|
||||
* @param fileObject the content container
|
||||
* @return the doc comment tree
|
||||
*
|
||||
* @since 9
|
||||
*/
|
||||
public abstract DocCommentTree getDocCommentTree(FileObject fileObject);
|
||||
|
@ -167,6 +167,19 @@ public class SimpleDocTreeVisitor<R,P> implements DocTreeVisitor<R, P> {
|
||||
return defaultAction(node, p);
|
||||
}
|
||||
|
||||
/**
|
||||
* {@inheritDoc}
|
||||
*
|
||||
* @implSpec This implementation calls {@code defaultAction}.
|
||||
*
|
||||
* @param node {@inheritDoc}
|
||||
* @param p {@inheritDoc}
|
||||
* @return the result of {@code defaultAction}
|
||||
* @since 10
|
||||
*/
|
||||
@Override
|
||||
public R visitDocType(DocTypeTree node, P p) { return defaultAction(node, p); }
|
||||
|
||||
/**
|
||||
* {@inheritDoc} This implementation calls {@code defaultAction}.
|
||||
*
|
||||
@ -175,9 +188,7 @@ public class SimpleDocTreeVisitor<R,P> implements DocTreeVisitor<R, P> {
|
||||
* @return the result of {@code defaultAction}
|
||||
*/
|
||||
@Override
|
||||
public R visitEndElement(EndElementTree node, P p) {
|
||||
return defaultAction(node, p);
|
||||
}
|
||||
public R visitEndElement(EndElementTree node, P p) { return defaultAction(node, p);}
|
||||
|
||||
/**
|
||||
* {@inheritDoc} This implementation calls {@code defaultAction}.
|
||||
|
@ -28,9 +28,8 @@ package com.sun.tools.javac.api;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.IOException;
|
||||
import java.text.BreakIterator;
|
||||
import java.util.HashMap;
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
@ -59,6 +58,8 @@ import javax.tools.StandardLocation;
|
||||
|
||||
import com.sun.source.doctree.DocCommentTree;
|
||||
import com.sun.source.doctree.DocTree;
|
||||
import com.sun.source.doctree.EndElementTree;
|
||||
import com.sun.source.doctree.StartElementTree;
|
||||
import com.sun.source.tree.CatchTree;
|
||||
import com.sun.source.tree.CompilationUnitTree;
|
||||
import com.sun.source.tree.Scope;
|
||||
@ -68,6 +69,7 @@ import com.sun.source.util.DocTreePath;
|
||||
import com.sun.source.util.DocTreeScanner;
|
||||
import com.sun.source.util.DocTrees;
|
||||
import com.sun.source.util.JavacTask;
|
||||
import com.sun.source.util.SimpleDocTreeVisitor;
|
||||
import com.sun.source.util.TreePath;
|
||||
import com.sun.tools.javac.code.Flags;
|
||||
import com.sun.tools.javac.code.Scope.NamedImportScope;
|
||||
@ -1006,16 +1008,7 @@ public class JavacTrees extends DocTrees {
|
||||
public String getText() {
|
||||
try {
|
||||
CharSequence rawDoc = fileObject.getCharContent(true);
|
||||
Pattern bodyPat =
|
||||
Pattern.compile("(?is).*?<body\\b[^>]*>(.*)</body\\b.*");
|
||||
Matcher m = bodyPat.matcher(rawDoc);
|
||||
if (m.matches()) {
|
||||
offset = m.end(1);
|
||||
return m.group(1);
|
||||
} else {
|
||||
// Assume doclint will do the right thing.
|
||||
return "";
|
||||
}
|
||||
return rawDoc.toString();
|
||||
} catch (IOException ignore) {
|
||||
// do nothing
|
||||
}
|
||||
@ -1038,13 +1031,15 @@ public class JavacTrees extends DocTrees {
|
||||
}
|
||||
};
|
||||
|
||||
return new DocCommentParser(parser, diagSource, comment).parse();
|
||||
return new DocCommentParser(parser, diagSource, comment, true).parse();
|
||||
}
|
||||
|
||||
@Override @DefinedBy(Api.COMPILER_TREE)
|
||||
public DocTreePath getDocTreePath(FileObject fileObject, PackageElement packageElement) {
|
||||
JavaFileObject jfo = asJavaFileObject(fileObject);
|
||||
DocCommentTree docCommentTree = getDocCommentTree(jfo);
|
||||
if (docCommentTree == null)
|
||||
return null;
|
||||
TreePath treePath = makeTreePath((PackageSymbol)packageElement, jfo, docCommentTree);
|
||||
return new DocTreePath(treePath, docCommentTree);
|
||||
}
|
||||
|
@ -36,10 +36,12 @@ import com.sun.tools.javac.parser.Tokens.TokenKind;
|
||||
import com.sun.tools.javac.tree.DCTree;
|
||||
import com.sun.tools.javac.tree.DCTree.DCAttribute;
|
||||
import com.sun.tools.javac.tree.DCTree.DCDocComment;
|
||||
import com.sun.tools.javac.tree.DCTree.DCEndElement;
|
||||
import com.sun.tools.javac.tree.DCTree.DCEndPosTree;
|
||||
import com.sun.tools.javac.tree.DCTree.DCErroneous;
|
||||
import com.sun.tools.javac.tree.DCTree.DCIdentifier;
|
||||
import com.sun.tools.javac.tree.DCTree.DCReference;
|
||||
import com.sun.tools.javac.tree.DCTree.DCStartElement;
|
||||
import com.sun.tools.javac.tree.DCTree.DCText;
|
||||
import com.sun.tools.javac.tree.DocTreeMaker;
|
||||
import com.sun.tools.javac.tree.JCTree;
|
||||
@ -50,6 +52,7 @@ import com.sun.tools.javac.util.Log;
|
||||
import com.sun.tools.javac.util.Name;
|
||||
import com.sun.tools.javac.util.Names;
|
||||
import com.sun.tools.javac.util.Position;
|
||||
import com.sun.tools.javac.util.StringUtils;
|
||||
|
||||
import static com.sun.tools.javac.util.LayoutCharacters.*;
|
||||
|
||||
@ -68,11 +71,14 @@ public class DocCommentParser {
|
||||
}
|
||||
}
|
||||
|
||||
private enum Phase {PREAMBLE, BODY, POSTAMBLE};
|
||||
|
||||
final ParserFactory fac;
|
||||
final DiagnosticSource diagSource;
|
||||
final Comment comment;
|
||||
final DocTreeMaker m;
|
||||
final Names names;
|
||||
final boolean isFileContent;
|
||||
|
||||
BreakIterator sentenceBreaker;
|
||||
|
||||
@ -93,17 +99,23 @@ public class DocCommentParser {
|
||||
|
||||
Map<Name, TagParser> tagParsers;
|
||||
|
||||
public DocCommentParser(ParserFactory fac, DiagnosticSource diagSource, Comment comment) {
|
||||
public DocCommentParser(ParserFactory fac, DiagnosticSource diagSource,
|
||||
Comment comment, boolean isFileContent) {
|
||||
this.fac = fac;
|
||||
this.diagSource = diagSource;
|
||||
this.comment = comment;
|
||||
names = fac.names;
|
||||
this.isFileContent = isFileContent;
|
||||
m = fac.docTreeMaker;
|
||||
initTagParsers();
|
||||
}
|
||||
|
||||
public DocCommentParser(ParserFactory fac, DiagnosticSource diagSource, Comment comment) {
|
||||
this(fac, diagSource, comment, false);
|
||||
}
|
||||
|
||||
public DocCommentParser(ParserFactory fac) {
|
||||
this(fac, null, null);
|
||||
this(fac, null, null, false);
|
||||
}
|
||||
|
||||
public DCDocComment parse() {
|
||||
@ -115,13 +127,22 @@ public class DocCommentParser {
|
||||
bp = -1;
|
||||
nextChar();
|
||||
|
||||
List<DCTree> body = blockContent();
|
||||
List<DCTree> preamble = isFileContent ? blockContent(Phase.PREAMBLE) : List.nil();
|
||||
List<DCTree> body = blockContent(Phase.BODY);
|
||||
List<DCTree> tags = blockTags();
|
||||
int pos = !body.isEmpty()
|
||||
? body.head.pos
|
||||
: !tags.isEmpty() ? tags.head.pos : Position.NOPOS;
|
||||
List<DCTree> postamble = isFileContent ? blockContent(Phase.POSTAMBLE) : List.nil();
|
||||
|
||||
DCDocComment dc = m.at(pos).newDocCommentTree(comment, body, tags);
|
||||
int pos = Position.NOPOS;
|
||||
if (!preamble.isEmpty())
|
||||
pos = preamble.head.pos;
|
||||
else if (!body.isEmpty())
|
||||
pos = body.head.pos;
|
||||
else if (!tags.isEmpty())
|
||||
pos = tags.head.pos;
|
||||
else if (!postamble.isEmpty())
|
||||
pos = postamble.head.pos;
|
||||
|
||||
DCDocComment dc = m.at(pos).newDocCommentTree(comment, body, tags, preamble, postamble);
|
||||
return dc;
|
||||
}
|
||||
|
||||
@ -133,13 +154,17 @@ public class DocCommentParser {
|
||||
}
|
||||
}
|
||||
|
||||
protected List<DCTree> blockContent() {
|
||||
return blockContent(Phase.BODY);
|
||||
}
|
||||
|
||||
/**
|
||||
* Read block content, consisting of text, html and inline tags.
|
||||
* Terminated by the end of input, or the beginning of the next block tag:
|
||||
* i.e. @ as the first non-whitespace character on a line.
|
||||
*/
|
||||
@SuppressWarnings("fallthrough")
|
||||
protected List<DCTree> blockContent() {
|
||||
protected List<DCTree> blockContent(Phase phase) {
|
||||
ListBuffer<DCTree> trees = new ListBuffer<>();
|
||||
textStart = -1;
|
||||
|
||||
@ -160,8 +185,36 @@ public class DocCommentParser {
|
||||
|
||||
case '<':
|
||||
newline = false;
|
||||
if (isFileContent) {
|
||||
switch (phase) {
|
||||
case PREAMBLE:
|
||||
if (peek("body")) {
|
||||
trees.add(html());
|
||||
if (textStart == -1) {
|
||||
textStart = bp;
|
||||
lastNonWhite = -1;
|
||||
}
|
||||
// mark this as the start, for processing purposes
|
||||
newline = true;
|
||||
break loop;
|
||||
}
|
||||
break;
|
||||
case BODY:
|
||||
if (peek("/body")) {
|
||||
addPendingText(trees, lastNonWhite);
|
||||
break loop;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// fallthrough
|
||||
}
|
||||
}
|
||||
addPendingText(trees, bp - 1);
|
||||
trees.add(html());
|
||||
|
||||
if (phase == Phase.PREAMBLE || phase == Phase.POSTAMBLE) {
|
||||
break; // Ignore newlines after html tags, in the meta content
|
||||
}
|
||||
if (textStart == -1) {
|
||||
textStart = bp;
|
||||
lastNonWhite = -1;
|
||||
@ -734,11 +787,37 @@ public class DocCommentParser {
|
||||
}
|
||||
}
|
||||
|
||||
boolean peek(String s) {
|
||||
final int savedpos = bp;
|
||||
try {
|
||||
if (ch == '<')
|
||||
nextChar();
|
||||
|
||||
if (ch == '/') {
|
||||
if (s.charAt(0) != ch) {
|
||||
return false;
|
||||
} else {
|
||||
s = s.substring(1, s.length());
|
||||
nextChar();
|
||||
}
|
||||
}
|
||||
|
||||
if (isIdentifierStart(ch)) {
|
||||
Name name = readIdentifier();
|
||||
return StringUtils.toLowerCase(name.toString()).equals(s);
|
||||
}
|
||||
return false;
|
||||
} finally {
|
||||
bp = savedpos;
|
||||
ch = buf[bp];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Read the start or end of an HTML tag, or an HTML comment
|
||||
* {@literal <identifier attrs> } or {@literal </identifier> }
|
||||
*/
|
||||
protected DCTree html() {
|
||||
private DCTree html() {
|
||||
int p = bp;
|
||||
nextChar();
|
||||
if (isIdentifierStart(ch)) {
|
||||
@ -790,6 +869,19 @@ public class DocCommentParser {
|
||||
nextChar();
|
||||
}
|
||||
}
|
||||
} else if (isIdentifierStart(ch) && peek("doctype")) {
|
||||
readIdentifier();
|
||||
nextChar();
|
||||
skipWhitespace();
|
||||
int d = bp;
|
||||
while (bp < buflen) {
|
||||
if (ch == '>') {
|
||||
int mark = bp;
|
||||
nextChar();
|
||||
return m.at(d).newDocTypeTree(newString(d, mark));
|
||||
}
|
||||
nextChar();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1316,4 +1408,5 @@ public class DocCommentParser {
|
||||
tagParsers.put(names.fromString(p.getTreeKind().tagName), p);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -109,17 +109,23 @@ public abstract class DCTree implements DocTree {
|
||||
public final List<DCTree> firstSentence;
|
||||
public final List<DCTree> body;
|
||||
public final List<DCTree> tags;
|
||||
public final List<DCTree> preamble;
|
||||
public final List<DCTree> postamble;
|
||||
|
||||
public DCDocComment(Comment comment,
|
||||
List<DCTree> fullBody,
|
||||
List<DCTree> firstSentence,
|
||||
List<DCTree> body,
|
||||
List<DCTree> tags) {
|
||||
List<DCTree> tags,
|
||||
List<DCTree> preamble,
|
||||
List<DCTree> postamble) {
|
||||
this.comment = comment;
|
||||
this.firstSentence = firstSentence;
|
||||
this.fullBody = fullBody;
|
||||
this.body = body;
|
||||
this.tags = tags;
|
||||
this.preamble = preamble;
|
||||
this.postamble = postamble;
|
||||
}
|
||||
|
||||
@Override @DefinedBy(Api.COMPILER_TREE)
|
||||
@ -152,6 +158,15 @@ public abstract class DCTree implements DocTree {
|
||||
return tags;
|
||||
}
|
||||
|
||||
@Override @DefinedBy(Api.COMPILER_TREE)
|
||||
public List<? extends DocTree> getPreamble() {
|
||||
return preamble;
|
||||
}
|
||||
|
||||
@Override @DefinedBy(Api.COMPILER_TREE)
|
||||
public List<? extends DocTree> getPostamble() {
|
||||
return postamble;
|
||||
}
|
||||
}
|
||||
|
||||
public static abstract class DCBlockTag extends DCTree implements BlockTagTree {
|
||||
@ -288,6 +303,29 @@ public abstract class DCTree implements DocTree {
|
||||
}
|
||||
}
|
||||
|
||||
public static class DCDocType extends DCTree implements DocTypeTree {
|
||||
public final String text;
|
||||
|
||||
DCDocType(String text) {
|
||||
this.text = text;
|
||||
}
|
||||
|
||||
@Override @DefinedBy(Api.COMPILER_TREE)
|
||||
public Kind getKind() {
|
||||
return Kind.DOC_TYPE;
|
||||
}
|
||||
|
||||
@Override @DefinedBy(Api.COMPILER_TREE)
|
||||
public <R, D> R accept(DocTreeVisitor<R, D> v, D d) {
|
||||
return v.visitDocType(this, d);
|
||||
}
|
||||
|
||||
@Override @DefinedBy(Api.COMPILER_TREE)
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
}
|
||||
|
||||
public static class DCEndElement extends DCTree implements EndElementTree {
|
||||
public final Name name;
|
||||
|
||||
|
@ -224,6 +224,16 @@ public class DocPretty implements DocTreeVisitor<Void,Void> {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override @DefinedBy(Api.COMPILER_TREE)
|
||||
public Void visitDocType(DocTypeTree node, Void p) {
|
||||
try {
|
||||
print(node.getText());
|
||||
} catch (IOException e) {
|
||||
throw new UncheckedIOException(e);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override @DefinedBy(Api.COMPILER_TREE)
|
||||
public Void visitEndElement(EndElementTree node, Void p) {
|
||||
try {
|
||||
|
@ -28,6 +28,7 @@ package com.sun.tools.javac.tree;
|
||||
import java.text.BreakIterator;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.ListIterator;
|
||||
@ -37,6 +38,7 @@ import javax.tools.Diagnostic;
|
||||
import javax.tools.JavaFileObject;
|
||||
|
||||
import com.sun.source.doctree.AttributeTree.ValueKind;
|
||||
import com.sun.source.doctree.DocCommentTree;
|
||||
import com.sun.source.doctree.DocTree;
|
||||
import com.sun.source.doctree.DocTree.Kind;
|
||||
import com.sun.source.doctree.EndElementTree;
|
||||
@ -59,6 +61,7 @@ import com.sun.tools.javac.tree.DCTree.DCComment;
|
||||
import com.sun.tools.javac.tree.DCTree.DCDeprecated;
|
||||
import com.sun.tools.javac.tree.DCTree.DCDocComment;
|
||||
import com.sun.tools.javac.tree.DCTree.DCDocRoot;
|
||||
import com.sun.tools.javac.tree.DCTree.DCDocType;
|
||||
import com.sun.tools.javac.tree.DCTree.DCEndElement;
|
||||
import com.sun.tools.javac.tree.DCTree.DCEntity;
|
||||
import com.sun.tools.javac.tree.DCTree.DCErroneous;
|
||||
@ -195,9 +198,23 @@ public class DocTreeMaker implements DocTreeFactory {
|
||||
return tree;
|
||||
}
|
||||
|
||||
public DCDocComment newDocCommentTree(Comment comment, List<? extends DocTree> fullBody, List<? extends DocTree> tags) {
|
||||
@Override @DefinedBy(Api.COMPILER_TREE)
|
||||
public DCDocComment newDocCommentTree(List<? extends DocTree> fullBody, List<? extends DocTree> tags) {
|
||||
Pair<List<DCTree>, List<DCTree>> pair = splitBody(fullBody);
|
||||
DCDocComment tree = new DCDocComment(comment, cast(fullBody), pair.fst, pair.snd, cast(tags));
|
||||
List<DCTree> preamble = Collections.emptyList();
|
||||
List<DCTree> postamble = Collections.emptyList();
|
||||
|
||||
return newDocCommentTree(fullBody, tags, preamble, postamble);
|
||||
}
|
||||
|
||||
public DCDocComment newDocCommentTree(Comment comment,
|
||||
List<? extends DocTree> fullBody,
|
||||
List<? extends DocTree> tags,
|
||||
List<? extends DocTree> preamble,
|
||||
List<? extends DocTree> postamble) {
|
||||
Pair<List<DCTree>, List<DCTree>> pair = splitBody(fullBody);
|
||||
DCDocComment tree = new DCDocComment(comment, cast(fullBody), pair.fst, pair.snd,
|
||||
cast(tags), cast(preamble), cast(postamble));
|
||||
tree.pos = pos;
|
||||
return tree;
|
||||
}
|
||||
@ -208,7 +225,10 @@ public class DocTreeMaker implements DocTreeFactory {
|
||||
* where the trees are being synthesized by a tool.
|
||||
*/
|
||||
@Override @DefinedBy(Api.COMPILER_TREE)
|
||||
public DCDocComment newDocCommentTree(List<? extends DocTree> fullBody, List<? extends DocTree> tags) {
|
||||
public DCDocComment newDocCommentTree(List<? extends DocTree> fullBody,
|
||||
List<? extends DocTree> tags,
|
||||
List<? extends DocTree> preamble,
|
||||
List<? extends DocTree> postamble) {
|
||||
ListBuffer<DCTree> lb = new ListBuffer<>();
|
||||
lb.addAll(cast(fullBody));
|
||||
List<DCTree> fBody = lb.toList();
|
||||
@ -236,7 +256,8 @@ public class DocTreeMaker implements DocTreeFactory {
|
||||
}
|
||||
};
|
||||
Pair<List<DCTree>, List<DCTree>> pair = splitBody(fullBody);
|
||||
DCDocComment tree = new DCDocComment(c, fBody, pair.fst, pair.snd, cast(tags));
|
||||
DCDocComment tree = new DCDocComment(c, fBody, pair.fst, pair.snd, cast(tags),
|
||||
cast(preamble), cast(postamble));
|
||||
return tree;
|
||||
}
|
||||
|
||||
@ -247,6 +268,13 @@ public class DocTreeMaker implements DocTreeFactory {
|
||||
return tree;
|
||||
}
|
||||
|
||||
@Override @DefinedBy(Api.COMPILER_TREE)
|
||||
public DCDocType newDocTypeTree(String text) {
|
||||
DCDocType tree = new DCDocType(text);
|
||||
tree.pos = pos;
|
||||
return tree;
|
||||
}
|
||||
|
||||
@Override @DefinedBy(Api.COMPILER_TREE)
|
||||
public DCEndElement newEndElementTree(Name name) {
|
||||
DCEndElement tree = new DCEndElement(name);
|
||||
|
@ -61,6 +61,7 @@ import javax.tools.ForwardingJavaFileManager;
|
||||
import javax.tools.JavaCompiler;
|
||||
import javax.tools.JavaFileManager;
|
||||
import javax.tools.JavaFileObject;
|
||||
import javax.tools.JavaFileObject.Kind;
|
||||
import javax.tools.SimpleJavaFileObject;
|
||||
import javax.tools.StandardJavaFileManager;
|
||||
import javax.tools.StandardLocation;
|
||||
@ -214,7 +215,9 @@ public abstract class JavadocHelper implements AutoCloseable {
|
||||
}
|
||||
}
|
||||
|
||||
DocCommentTree docCommentTree = parseDocComment(task, docComment);
|
||||
Pair<DocCommentTree, Integer> parsed = parseDocComment(task, docComment);
|
||||
DocCommentTree docCommentTree = parsed.fst;
|
||||
int offset = parsed.snd;
|
||||
IOException[] exception = new IOException[1];
|
||||
Map<int[], String> replace = new TreeMap<>((span1, span2) -> span2[0] - span1[0]);
|
||||
|
||||
@ -349,7 +352,10 @@ public abstract class JavadocHelper implements AutoCloseable {
|
||||
if (inherited == null) {
|
||||
return null;
|
||||
}
|
||||
DocCommentTree inheritedDocTree = parseDocComment(inheritedJavacTask, inherited);
|
||||
Pair<DocCommentTree, Integer> parsed =
|
||||
parseDocComment(inheritedJavacTask, inherited);
|
||||
DocCommentTree inheritedDocTree = parsed.fst;
|
||||
int offset = parsed.snd;
|
||||
List<List<? extends DocTree>> inheritedText = new ArrayList<>();
|
||||
DocTree parent = interestingParent.peek();
|
||||
switch (parent.getKind()) {
|
||||
@ -391,7 +397,6 @@ public abstract class JavadocHelper implements AutoCloseable {
|
||||
break;
|
||||
}
|
||||
if (!inheritedText.isEmpty()) {
|
||||
long offset = trees.getSourcePositions().getStartPosition(null, inheritedDocTree, inheritedDocTree);
|
||||
long start = Long.MAX_VALUE;
|
||||
long end = Long.MIN_VALUE;
|
||||
|
||||
@ -475,7 +480,6 @@ public abstract class JavadocHelper implements AutoCloseable {
|
||||
return docComment;
|
||||
|
||||
StringBuilder replacedInheritDoc = new StringBuilder(docComment);
|
||||
int offset = (int) trees.getSourcePositions().getStartPosition(null, docCommentTree, docCommentTree);
|
||||
|
||||
for (Entry<int[], String> e : replace.entrySet()) {
|
||||
replacedInheritDoc.delete(e.getKey()[0] - offset, e.getKey()[1] - offset + 1);
|
||||
@ -507,22 +511,28 @@ public abstract class JavadocHelper implements AutoCloseable {
|
||||
}
|
||||
|
||||
private DocTree parseBlockTag(JavacTask task, String blockTag) {
|
||||
DocCommentTree dc = parseDocComment(task, blockTag);
|
||||
DocCommentTree dc = parseDocComment(task, blockTag).fst;
|
||||
|
||||
return dc.getBlockTags().get(0);
|
||||
}
|
||||
|
||||
private DocCommentTree parseDocComment(JavacTask task, String javadoc) {
|
||||
private Pair<DocCommentTree, Integer> parseDocComment(JavacTask task, String javadoc) {
|
||||
DocTrees trees = DocTrees.instance(task);
|
||||
try {
|
||||
return trees.getDocCommentTree(new SimpleJavaFileObject(new URI("mem://doc.html"), javax.tools.JavaFileObject.Kind.HTML) {
|
||||
SimpleJavaFileObject fo =
|
||||
new SimpleJavaFileObject(new URI("mem://doc.html"), Kind.HTML) {
|
||||
@Override @DefinedBy(Api.COMPILER)
|
||||
public CharSequence getCharContent(boolean ignoreEncodingErrors) throws IOException {
|
||||
public CharSequence getCharContent(boolean ignoreEncodingErrors)
|
||||
throws IOException {
|
||||
return "<body>" + javadoc + "</body>";
|
||||
}
|
||||
});
|
||||
};
|
||||
DocCommentTree tree = trees.getDocCommentTree(fo);
|
||||
int offset = (int) trees.getSourcePositions().getStartPosition(null, tree, tree);
|
||||
offset += "<body>".length() + 1;
|
||||
return Pair.of(tree, offset);
|
||||
} catch (URISyntaxException ex) {
|
||||
return null;
|
||||
throw new IllegalStateException(ex);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3096,6 +3096,10 @@ public class Utils {
|
||||
if (!configuration.isAllowScriptInComments()) {
|
||||
DocCommentTree dct = configuration.cmtUtils.parse(
|
||||
URI.create("option://" + name.replace("-", "")), "<body>" + value + "</body>");
|
||||
|
||||
if (dct == null)
|
||||
return;
|
||||
|
||||
try {
|
||||
javaScriptScanner.scan(dct, null, p -> {
|
||||
throw new JavaScriptScanner.Fault();
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -23,7 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8131019
|
||||
* @bug 8131019 8190552
|
||||
* @summary Test JavadocHelper
|
||||
* @library /tools/lib
|
||||
* @modules jdk.compiler/com.sun.tools.javac.api
|
||||
|
@ -44,7 +44,7 @@ public class TestPackageHtml extends JavadocTester {
|
||||
"-sourcepath", testSrc,
|
||||
"pkg1");
|
||||
checkExit(Exit.ERROR);
|
||||
checkOutput(Output.OUT, true, "package.html:10: error: bad use of '>'");
|
||||
checkOutput(Output.OUT, true, "package.html:5: error: bad use of '>'");
|
||||
}
|
||||
|
||||
// Doclet must handle empty body in package.html, must
|
||||
|
@ -102,7 +102,7 @@ public class TestSummaryTag extends JavadocTester {
|
||||
"p2");
|
||||
checkExit(Exit.OK);
|
||||
|
||||
checkOutput(Output.OUT, true, "package.html:5: warning: invalid use of @summary");
|
||||
checkOutput(Output.OUT, true, "package.html:3: warning: invalid use of @summary");
|
||||
|
||||
checkOutput("index-all.html", true, "<div class=\"block\">foo bar</div>\n");
|
||||
|
||||
|
@ -404,9 +404,18 @@ public class DocCommentTester {
|
||||
public Void visitDocComment(DocCommentTree node, Void p) {
|
||||
header(node);
|
||||
indent(+1);
|
||||
// Applicable only to html files, print iff non-empty
|
||||
if (!node.getPreamble().isEmpty())
|
||||
print("preamble", node.getPreamble());
|
||||
|
||||
print("firstSentence", node.getFirstSentence());
|
||||
print("body", node.getBody());
|
||||
print("block tags", node.getBlockTags());
|
||||
|
||||
// Applicable only to html files, print iff non-empty
|
||||
if (!node.getPostamble().isEmpty())
|
||||
print("postamble", node.getPostamble());
|
||||
|
||||
indent(-1);
|
||||
indent();
|
||||
out.println("]");
|
||||
@ -418,6 +427,11 @@ public class DocCommentTester {
|
||||
return null;
|
||||
}
|
||||
|
||||
public Void visitDocType(DocTypeTree node, Void p) {
|
||||
header(node, compress(node.getText()));
|
||||
return null;
|
||||
}
|
||||
|
||||
public Void visitEndElement(EndElementTree node, Void p) {
|
||||
header(node, node.getName().toString());
|
||||
return null;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2012, 2017, 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
|
||||
@ -31,6 +31,7 @@
|
||||
|
||||
import com.sun.source.doctree.DocCommentTree;
|
||||
import com.sun.source.doctree.DocTree;
|
||||
import com.sun.source.doctree.DocTree.Kind;
|
||||
import com.sun.source.doctree.DocTreeVisitor;
|
||||
import com.sun.source.tree.ClassTree;
|
||||
import com.sun.source.tree.CompilationUnitTree;
|
||||
@ -84,7 +85,7 @@ public class SimpleDocTreeVisitorTest {
|
||||
}
|
||||
|
||||
for (DocTree.Kind k: DocTree.Kind.values()) {
|
||||
if (!found.contains(k) && k != DocTree.Kind.OTHER)
|
||||
if (!found.contains(k) && k != DocTree.Kind.OTHER && k != DocTree.Kind.DOC_TYPE)
|
||||
error("not found: " + k);
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -22,6 +22,6 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* OverviewTest test.
|
||||
* Anchor test.
|
||||
*/
|
||||
public class OverviewTest {}
|
||||
public class Anchor {}
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, 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
|
||||
@ -23,7 +23,7 @@
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 8132096 8157611
|
||||
* @bug 8132096 8157611 8190552
|
||||
* @summary test the APIs in the DocTree interface
|
||||
* @modules jdk.compiler/com.sun.tools.javac.api
|
||||
* jdk.compiler/com.sun.tools.javac.file
|
||||
@ -52,6 +52,7 @@ import javax.lang.model.element.PackageElement;
|
||||
import javax.lang.model.util.Elements;
|
||||
import javax.tools.FileObject;
|
||||
import javax.tools.JavaFileObject;
|
||||
import javax.tools.JavaFileObject.Kind;
|
||||
import javax.tools.StandardJavaFileManager;
|
||||
|
||||
import com.sun.source.doctree.DocTree;
|
||||
@ -64,8 +65,8 @@ import com.sun.tools.javac.tree.DocPretty;
|
||||
|
||||
public class DocCommentTreeApiTester {
|
||||
|
||||
private static final String MARKER_START = "<!-- EXPECT_START";
|
||||
private static final String MARKER_END = "EXPECT_END -->";
|
||||
private static final String MARKER_START = "EXPECT_START";
|
||||
private static final String MARKER_END = "EXPECT_END";
|
||||
|
||||
private static final String testSrc = System.getProperty("test.src", ".");
|
||||
|
||||
@ -85,22 +86,26 @@ public class DocCommentTreeApiTester {
|
||||
DocCommentTreeApiTester test = new DocCommentTreeApiTester();
|
||||
try {
|
||||
// test getting a DocTree from an element
|
||||
test.runElementAndBreakIteratorTests("OverviewTest.java", "OverviewTest test.");
|
||||
test.runElementAndBreakIteratorTests("Anchor.java", "Anchor test.");
|
||||
|
||||
// test relative paths in a class within a package
|
||||
test.runRelativePathTest("pkg/Anchor.java", "package.html");
|
||||
test.runRelativePathTest("pkg/Anchor.java", "package.html", true);
|
||||
|
||||
// tests files relative path in an unnamed package
|
||||
test.runRelativePathTest("OverviewTest.java", "overview0.html");
|
||||
test.runRelativePathTest("Anchor.java", "overview0.html", true);
|
||||
|
||||
// tests doctreepath using package element and package.html
|
||||
test.runDocTreePath("pkg/Anchor.java", "package.html");
|
||||
// test doctree path and Doc
|
||||
test.runDocTreePath("Anchor.java", "package.html");
|
||||
|
||||
// test for correct parsing using valid and some invalid html tags
|
||||
for (int i = 0; i < 7; i++) {
|
||||
String hname = "overview" + i + ".html";
|
||||
test.runFileObjectTest(hname);
|
||||
}
|
||||
test.runFileObjectTest("overview0.html");
|
||||
test.runFileObjectTest("overview1.html");
|
||||
test.runFileObjectTest("overview2.html");
|
||||
test.runFileObjectTest("overview3.html");
|
||||
test.runFileObjectTest("overview4.html");
|
||||
test.runFileObjectTest("overview5.html");
|
||||
test.runFileObjectTest("overview6.html");
|
||||
test.runFileObjectTest("overview7.html");
|
||||
|
||||
} finally {
|
||||
test.status();
|
||||
@ -166,7 +171,8 @@ public class DocCommentTreeApiTester {
|
||||
* @param fileName the relative html file
|
||||
* @throws java.lang.Exception ouch
|
||||
*/
|
||||
public void runRelativePathTest(String javaFileName, String fileName) throws Exception {
|
||||
public void runRelativePathTest(String javaFileName, String fileName,
|
||||
boolean bodyOnly) throws Exception {
|
||||
List<File> javaFiles = new ArrayList<>();
|
||||
javaFiles.add(new File(testSrc, javaFileName));
|
||||
|
||||
@ -185,13 +191,17 @@ public class DocCommentTreeApiTester {
|
||||
Element klass = elements.iterator().next();
|
||||
|
||||
DocCommentTree dcTree = trees.getDocCommentTree(klass, fileName);
|
||||
|
||||
if (dcTree == null)
|
||||
throw new Error("invalid input: " + fileName);
|
||||
|
||||
StringWriter sw = new StringWriter();
|
||||
printer.print(dcTree, sw);
|
||||
String found = sw.toString();
|
||||
|
||||
FileObject htmlFo = fm.getFileForInput(javax.tools.StandardLocation.SOURCE_PATH,
|
||||
t.getElements().getPackageOf(klass).getQualifiedName().toString(),
|
||||
fileName);
|
||||
fileName + ".out");
|
||||
|
||||
String expected = getExpected(htmlFo.openReader(true));
|
||||
astcheck(fileName, expected, found);
|
||||
@ -209,6 +219,7 @@ public class DocCommentTreeApiTester {
|
||||
|
||||
List<File> otherFiles = new ArrayList<>();
|
||||
otherFiles.add(new File(testSrc, htmlfileName));
|
||||
otherFiles.add(new File(testSrc, htmlfileName + ".out"));
|
||||
|
||||
try (StandardJavaFileManager fm = javac.getStandardFileManager(null, null, null)) {
|
||||
Iterable<? extends JavaFileObject> fos = fm.getJavaFileObjectsFromFiles(javaFiles);
|
||||
@ -218,10 +229,22 @@ public class DocCommentTreeApiTester {
|
||||
final DocTrees trees = DocTrees.instance(t);
|
||||
|
||||
StringWriter sw = new StringWriter();
|
||||
DocCommentTree dct = null;
|
||||
String expected = null;
|
||||
for (JavaFileObject jfo : others) {
|
||||
switch (jfo.getKind()) {
|
||||
case HTML:
|
||||
dct = trees.getDocCommentTree(jfo);
|
||||
if (dct == null)
|
||||
throw new Exception("invalid input: " + jfo);
|
||||
break;
|
||||
default:
|
||||
expected = getExpected(jfo.openReader(true));
|
||||
}
|
||||
}
|
||||
|
||||
printer.print(trees.getDocCommentTree(others.iterator().next()), sw);
|
||||
printer.print(dct, sw);
|
||||
String found = sw.toString();
|
||||
String expected = getExpected(otherFiles.iterator().next().toPath());
|
||||
astcheck(otherFiles.toString(), expected, found);
|
||||
}
|
||||
}
|
||||
@ -237,6 +260,9 @@ public class DocCommentTreeApiTester {
|
||||
List<File> javaFiles = new ArrayList<>();
|
||||
javaFiles.add(new File(testSrc, javaFileName));
|
||||
|
||||
List<File> otherFiles = new ArrayList<>();
|
||||
otherFiles.add(new File(testSrc, pkgFileName + ".out"));
|
||||
|
||||
List<File> dirs = new ArrayList<>();
|
||||
dirs.add(new File(testSrc));
|
||||
|
||||
@ -256,15 +282,23 @@ public class DocCommentTreeApiTester {
|
||||
FileObject htmlFo = fm.getFileForInput(javax.tools.StandardLocation.SOURCE_PATH,
|
||||
t.getElements().getPackageOf(klass).getQualifiedName().toString(),
|
||||
"package.html");
|
||||
System.out.println();
|
||||
DocTreePath treePath = trees.getDocTreePath(htmlFo, pkg);
|
||||
|
||||
if (treePath == null) {
|
||||
throw new Exception("invalid input: " + htmlFo);
|
||||
}
|
||||
|
||||
DocCommentTree dcTree = treePath.getDocComment();
|
||||
if (dcTree == null)
|
||||
throw new Exception("invalid input" + htmlFo);
|
||||
|
||||
StringWriter sw = new StringWriter();
|
||||
printer.print(dcTree, sw);
|
||||
String found = sw.toString();
|
||||
Iterable<? extends JavaFileObject> oos = fm.getJavaFileObjectsFromFiles(otherFiles);
|
||||
JavaFileObject otherFo = oos.iterator().next();
|
||||
String expected = getExpected(otherFo.openReader(true));
|
||||
|
||||
String expected = getExpected(htmlFo.openReader(true));
|
||||
astcheck(pkgFileName, expected, found);
|
||||
}
|
||||
}
|
||||
@ -300,10 +334,6 @@ public class DocCommentTreeApiTester {
|
||||
return getExpected(lines);
|
||||
}
|
||||
|
||||
String getExpected(Path p) throws IOException {
|
||||
return getExpected(Files.readAllLines(p));
|
||||
}
|
||||
|
||||
String getExpected(List<String> lines) {
|
||||
boolean start = false;
|
||||
StringWriter sw = new StringWriter();
|
||||
|
@ -1,48 +1,8 @@
|
||||
<!--
|
||||
Copyright (c) 2015, 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.
|
||||
-->
|
||||
<!-- EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:1
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:1, A_simple_well_fo...rmed_html_document]
|
||||
body: 4
|
||||
StartElement[START_ELEMENT, pos:36
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:41, overview0.html]
|
||||
StartElement[START_ELEMENT, pos:55
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:60, .]
|
||||
block tags: empty
|
||||
]
|
||||
EXPECT_END -->
|
||||
<!-- /nodynamiccopyright/ -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
A simple well formed html document <pre>overview0.html<pre>.
|
||||
A simple well formed html document <pre>overview0.html</pre>.
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
</HTML>
|
33
test/langtools/tools/javac/doctree/dcapi/overview0.html.out
Normal file
33
test/langtools/tools/javac/doctree/dcapi/overview0.html.out
Normal file
@ -0,0 +1,33 @@
|
||||
EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:0
|
||||
preamble: 5
|
||||
Comment[COMMENT, pos:0, <!--_/nodynamiccopyright/_-->]
|
||||
StartElement[START_ELEMENT, pos:30
|
||||
name:HTML
|
||||
attributes: empty
|
||||
]
|
||||
StartElement[START_ELEMENT, pos:37
|
||||
name:HEAD
|
||||
attributes: empty
|
||||
]
|
||||
EndElement[END_ELEMENT, pos:44, HEAD]
|
||||
StartElement[START_ELEMENT, pos:52
|
||||
name:BODY
|
||||
attributes: empty
|
||||
]
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:59, A_simple_well_fo...rmed_html_document]
|
||||
body: 4
|
||||
StartElement[START_ELEMENT, pos:94
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:99, overview0.html]
|
||||
EndElement[END_ELEMENT, pos:113, pre]
|
||||
Text[TEXT, pos:119, .]
|
||||
block tags: empty
|
||||
postamble: 2
|
||||
EndElement[END_ELEMENT, pos:121, BODY]
|
||||
EndElement[END_ELEMENT, pos:129, HTML]
|
||||
]
|
||||
EXPECT_END
|
@ -1,47 +1,8 @@
|
||||
<!--
|
||||
Copyright (c) 2015, 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.
|
||||
-->
|
||||
<!-- EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:1
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:1, Html_document]
|
||||
body: 4
|
||||
StartElement[START_ELEMENT, pos:15
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:20, overview1.html]
|
||||
StartElement[START_ELEMENT, pos:34
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:39, .|Missing_HTML.]
|
||||
block tags: empty
|
||||
]
|
||||
EXPECT_END -->
|
||||
<!-- /nodynamiccopyright/ -->
|
||||
<HEAD>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
Html document <pre>overview1.html<pre>.
|
||||
Html document <pre>overview1.html</pre>.
|
||||
Missing HTML.
|
||||
</BODY>
|
||||
</HTML>
|
||||
</HTML>
|
29
test/langtools/tools/javac/doctree/dcapi/overview1.html.out
Normal file
29
test/langtools/tools/javac/doctree/dcapi/overview1.html.out
Normal file
@ -0,0 +1,29 @@
|
||||
EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:0
|
||||
preamble: 4
|
||||
Comment[COMMENT, pos:0, <!--_/nodynamiccopyright/_-->]
|
||||
StartElement[START_ELEMENT, pos:30
|
||||
name:HEAD
|
||||
attributes: empty
|
||||
]
|
||||
EndElement[END_ELEMENT, pos:37, HEAD]
|
||||
StartElement[START_ELEMENT, pos:45
|
||||
name:BODY
|
||||
attributes: empty
|
||||
]
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:52, Html_document]
|
||||
body: 4
|
||||
StartElement[START_ELEMENT, pos:66
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:71, overview1.html]
|
||||
EndElement[END_ELEMENT, pos:85, pre]
|
||||
Text[TEXT, pos:91, .|Missing_HTML.]
|
||||
block tags: empty
|
||||
postamble: 2
|
||||
EndElement[END_ELEMENT, pos:107, BODY]
|
||||
EndElement[END_ELEMENT, pos:115, HTML]
|
||||
]
|
||||
EXPECT_END
|
@ -1,47 +1,8 @@
|
||||
<!--
|
||||
Copyright (c) 2015, 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.
|
||||
-->
|
||||
<!-- EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:1
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:1, Html_document]
|
||||
body: 4
|
||||
StartElement[START_ELEMENT, pos:15
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:20, overview2.html]
|
||||
StartElement[START_ELEMENT, pos:34
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:39, .|Missing_HEAD.]
|
||||
block tags: empty
|
||||
]
|
||||
EXPECT_END -->
|
||||
<!-- /nodynamiccopyright/ -->
|
||||
<HTML>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
Html document <pre>overview2.html<pre>.
|
||||
Html document <pre>overview2.html</pre>.
|
||||
Missing HEAD.
|
||||
</BODY>
|
||||
</HTML>
|
||||
</HTML>
|
29
test/langtools/tools/javac/doctree/dcapi/overview2.html.out
Normal file
29
test/langtools/tools/javac/doctree/dcapi/overview2.html.out
Normal file
@ -0,0 +1,29 @@
|
||||
EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:0
|
||||
preamble: 4
|
||||
Comment[COMMENT, pos:0, <!--_/nodynamiccopyright/_-->]
|
||||
StartElement[START_ELEMENT, pos:30
|
||||
name:HTML
|
||||
attributes: empty
|
||||
]
|
||||
EndElement[END_ELEMENT, pos:37, HEAD]
|
||||
StartElement[START_ELEMENT, pos:45
|
||||
name:BODY
|
||||
attributes: empty
|
||||
]
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:52, Html_document]
|
||||
body: 4
|
||||
StartElement[START_ELEMENT, pos:66
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:71, overview2.html]
|
||||
EndElement[END_ELEMENT, pos:85, pre]
|
||||
Text[TEXT, pos:91, .|Missing_HEAD.]
|
||||
block tags: empty
|
||||
postamble: 2
|
||||
EndElement[END_ELEMENT, pos:107, BODY]
|
||||
EndElement[END_ELEMENT, pos:115, HTML]
|
||||
]
|
||||
EXPECT_END
|
@ -1,47 +1,8 @@
|
||||
<!--
|
||||
Copyright (c) 2015, 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.
|
||||
-->
|
||||
<!-- EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:1
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:1, Html_document]
|
||||
body: 4
|
||||
StartElement[START_ELEMENT, pos:15
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:20, overview3.html]
|
||||
StartElement[START_ELEMENT, pos:34
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:39, .|Missing_enclosing_HEAD.]
|
||||
block tags: empty
|
||||
]
|
||||
EXPECT_END -->
|
||||
<!-- /nodynamiccopyright/ -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<BODY>
|
||||
Html document <pre>overview3.html<pre>.
|
||||
Html document <pre>overview3.html</pre>.
|
||||
Missing enclosing HEAD.
|
||||
</BODY>
|
||||
</HTML>
|
||||
</HTML>
|
32
test/langtools/tools/javac/doctree/dcapi/overview3.html.out
Normal file
32
test/langtools/tools/javac/doctree/dcapi/overview3.html.out
Normal file
@ -0,0 +1,32 @@
|
||||
EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:0
|
||||
preamble: 4
|
||||
Comment[COMMENT, pos:0, <!--_/nodynamiccopyright/_-->]
|
||||
StartElement[START_ELEMENT, pos:30
|
||||
name:HTML
|
||||
attributes: empty
|
||||
]
|
||||
StartElement[START_ELEMENT, pos:37
|
||||
name:HEAD
|
||||
attributes: empty
|
||||
]
|
||||
StartElement[START_ELEMENT, pos:44
|
||||
name:BODY
|
||||
attributes: empty
|
||||
]
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:51, Html_document]
|
||||
body: 4
|
||||
StartElement[START_ELEMENT, pos:65
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:70, overview3.html]
|
||||
EndElement[END_ELEMENT, pos:84, pre]
|
||||
Text[TEXT, pos:90, .|Missing_enclosing_HEAD.]
|
||||
block tags: empty
|
||||
postamble: 2
|
||||
EndElement[END_ELEMENT, pos:116, BODY]
|
||||
EndElement[END_ELEMENT, pos:124, HTML]
|
||||
]
|
||||
EXPECT_END
|
@ -1,44 +1,6 @@
|
||||
<!--
|
||||
Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
<!-- /nodynamiccopyright/ -->
|
||||
|
||||
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.
|
||||
-->
|
||||
<!-- EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:1
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:1, Html_document]
|
||||
body: 4
|
||||
StartElement[START_ELEMENT, pos:15
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:20, overview4.html]
|
||||
StartElement[START_ELEMENT, pos:34
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:39, .|Only_BODY]
|
||||
block tags: empty
|
||||
]
|
||||
EXPECT_END -->
|
||||
<BODY>
|
||||
Html document <pre>overview4.html<pre>.
|
||||
Html document <pre>overview4.html</pre>.
|
||||
Only BODY
|
||||
</BODY>
|
||||
</BODY>
|
23
test/langtools/tools/javac/doctree/dcapi/overview4.html.out
Normal file
23
test/langtools/tools/javac/doctree/dcapi/overview4.html.out
Normal file
@ -0,0 +1,23 @@
|
||||
EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:0
|
||||
preamble: 2
|
||||
Comment[COMMENT, pos:0, <!--_/nodynamiccopyright/_-->]
|
||||
StartElement[START_ELEMENT, pos:31
|
||||
name:BODY
|
||||
attributes: empty
|
||||
]
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:38, Html_document]
|
||||
body: 4
|
||||
StartElement[START_ELEMENT, pos:52
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:57, overview4.html]
|
||||
EndElement[END_ELEMENT, pos:71, pre]
|
||||
Text[TEXT, pos:77, .|Only_BODY]
|
||||
block tags: empty
|
||||
postamble: 1
|
||||
EndElement[END_ELEMENT, pos:89, BODY]
|
||||
]
|
||||
EXPECT_END
|
@ -1,47 +1,8 @@
|
||||
<!--
|
||||
Copyright (c) 2015, 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.
|
||||
-->
|
||||
<!-- EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:1
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:1, Html_document]
|
||||
body: 4
|
||||
StartElement[START_ELEMENT, pos:15
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:20, overview5.html]
|
||||
StartElement[START_ELEMENT, pos:34
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:39, .|Missing_enclosing_HTML]
|
||||
block tags: empty
|
||||
]
|
||||
EXPECT_END -->
|
||||
<!-- /nodynamiccopyright/ -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
Html document <pre>overview5.html<pre>.
|
||||
Html document <pre>overview5.html</pre>.
|
||||
Missing enclosing HTML
|
||||
</BODY>
|
||||
</BODY>
|
32
test/langtools/tools/javac/doctree/dcapi/overview5.html.out
Normal file
32
test/langtools/tools/javac/doctree/dcapi/overview5.html.out
Normal file
@ -0,0 +1,32 @@
|
||||
EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:0
|
||||
preamble: 5
|
||||
Comment[COMMENT, pos:0, <!--_/nodynamiccopyright/_-->]
|
||||
StartElement[START_ELEMENT, pos:30
|
||||
name:HTML
|
||||
attributes: empty
|
||||
]
|
||||
StartElement[START_ELEMENT, pos:37
|
||||
name:HEAD
|
||||
attributes: empty
|
||||
]
|
||||
EndElement[END_ELEMENT, pos:44, HEAD]
|
||||
StartElement[START_ELEMENT, pos:52
|
||||
name:BODY
|
||||
attributes: empty
|
||||
]
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:59, Html_document]
|
||||
body: 4
|
||||
StartElement[START_ELEMENT, pos:73
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:78, overview5.html]
|
||||
EndElement[END_ELEMENT, pos:92, pre]
|
||||
Text[TEXT, pos:98, .|Missing_enclosing_HTML]
|
||||
block tags: empty
|
||||
postamble: 1
|
||||
EndElement[END_ELEMENT, pos:123, BODY]
|
||||
]
|
||||
EXPECT_END
|
@ -1,40 +1,4 @@
|
||||
<!--
|
||||
Copyright (c) 2015, 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.
|
||||
-->
|
||||
<!-- EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:1
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:1, The_first_correct_body_pair.]
|
||||
body: 4
|
||||
EndElement[END_ELEMENT, pos:30, BODY]
|
||||
Text[TEXT, pos:37, ||]
|
||||
StartElement[START_ELEMENT, pos:39
|
||||
name:BODY
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:45, |Illegal_second_...body_pair,_the_first_body_should_not_be_ignored.]
|
||||
block tags: empty
|
||||
]
|
||||
EXPECT_END -->
|
||||
<!-- /nodynamiccopyright/ -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
</HEAD>
|
||||
@ -46,4 +10,3 @@ The first correct body pair.
|
||||
Illegal second body pair, the first body should not be ignored.
|
||||
</BODY>
|
||||
</HTML>
|
||||
|
||||
|
32
test/langtools/tools/javac/doctree/dcapi/overview6.html.out
Normal file
32
test/langtools/tools/javac/doctree/dcapi/overview6.html.out
Normal file
@ -0,0 +1,32 @@
|
||||
EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:0
|
||||
preamble: 5
|
||||
Comment[COMMENT, pos:0, <!--_/nodynamiccopyright/_-->]
|
||||
StartElement[START_ELEMENT, pos:30
|
||||
name:HTML
|
||||
attributes: empty
|
||||
]
|
||||
StartElement[START_ELEMENT, pos:37
|
||||
name:HEAD
|
||||
attributes: empty
|
||||
]
|
||||
EndElement[END_ELEMENT, pos:44, HEAD]
|
||||
StartElement[START_ELEMENT, pos:52
|
||||
name:BODY
|
||||
attributes: empty
|
||||
]
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:59, The_first_correct_body_pair.]
|
||||
body: empty
|
||||
block tags: empty
|
||||
postamble: 5
|
||||
EndElement[END_ELEMENT, pos:88, BODY]
|
||||
StartElement[START_ELEMENT, pos:97
|
||||
name:BODY
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:104, Illegal_second_b...ody_pair,_the_first_body_should_not_be_ignored.|]
|
||||
EndElement[END_ELEMENT, pos:168, BODY]
|
||||
EndElement[END_ELEMENT, pos:176, HTML]
|
||||
]
|
||||
EXPECT_END
|
6
test/langtools/tools/javac/doctree/dcapi/overview7.html
Normal file
6
test/langtools/tools/javac/doctree/dcapi/overview7.html
Normal file
@ -0,0 +1,6 @@
|
||||
<!-- /nodynamiccopyright/ -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
</HEAD>
|
||||
<BODY>@since 1.0</BODY>
|
||||
</HTML>
|
29
test/langtools/tools/javac/doctree/dcapi/overview7.html.out
Normal file
29
test/langtools/tools/javac/doctree/dcapi/overview7.html.out
Normal file
@ -0,0 +1,29 @@
|
||||
EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:0
|
||||
preamble: 5
|
||||
Comment[COMMENT, pos:0, <!--_/nodynamiccopyright/_-->]
|
||||
StartElement[START_ELEMENT, pos:30
|
||||
name:HTML
|
||||
attributes: empty
|
||||
]
|
||||
StartElement[START_ELEMENT, pos:37
|
||||
name:HEAD
|
||||
attributes: empty
|
||||
]
|
||||
EndElement[END_ELEMENT, pos:44, HEAD]
|
||||
StartElement[START_ELEMENT, pos:52
|
||||
name:BODY
|
||||
attributes: empty
|
||||
]
|
||||
firstSentence: empty
|
||||
body: empty
|
||||
block tags: 1
|
||||
Since[SINCE, pos:58
|
||||
body: 1
|
||||
Text[TEXT, pos:65, 1.0]
|
||||
]
|
||||
postamble: 2
|
||||
EndElement[END_ELEMENT, pos:68, BODY]
|
||||
EndElement[END_ELEMENT, pos:76, HTML]
|
||||
]
|
||||
EXPECT_END
|
@ -1,47 +1,11 @@
|
||||
<!--
|
||||
Copyright (c) 2015, 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.
|
||||
-->
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
|
||||
"http://www.w3.org/TR/html4/strict.dtd">
|
||||
<!-- /nodynamiccopyright/ -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>The Crafty Fox</TITLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
A simple well formed html document <pre>package.html<pre>.
|
||||
</BODY>
|
||||
</HTML>
|
||||
<!-- EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:1
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:1, This_is_a_very_simple]
|
||||
body: 4
|
||||
StartElement[START_ELEMENT, pos:23
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:28, _well_formed_html_document_]
|
||||
StartElement[START_ELEMENT, pos:55
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:60, _using_some_html_tags.]
|
||||
block tags: empty
|
||||
]
|
||||
EXPECT_END -->
|
||||
</HTML>
|
43
test/langtools/tools/javac/doctree/dcapi/package.html.out
Normal file
43
test/langtools/tools/javac/doctree/dcapi/package.html.out
Normal file
@ -0,0 +1,43 @@
|
||||
EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:10
|
||||
preamble: 9
|
||||
DocType[DOC_TYPE, pos:10, HTML_PUBLIC_"-//...W3C//DTD_HTML_4.01//EN"|________"http://www.w3.org/TR/html4/strict.dtd"]
|
||||
Comment[COMMENT, pos:99, <!--_/nodynamiccopyright/_-->]
|
||||
StartElement[START_ELEMENT, pos:129
|
||||
name:HTML
|
||||
attributes: empty
|
||||
]
|
||||
StartElement[START_ELEMENT, pos:136
|
||||
name:HEAD
|
||||
attributes: empty
|
||||
]
|
||||
StartElement[START_ELEMENT, pos:147
|
||||
name:TITLE
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:154, The_Crafty_Fox]
|
||||
EndElement[END_ELEMENT, pos:168, TITLE]
|
||||
EndElement[END_ELEMENT, pos:177, HEAD]
|
||||
StartElement[START_ELEMENT, pos:185
|
||||
name:BODY
|
||||
attributes: empty
|
||||
]
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:192, A_simple_well_fo...rmed_html_document]
|
||||
body: 4
|
||||
StartElement[START_ELEMENT, pos:227
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:232, package.html]
|
||||
StartElement[START_ELEMENT, pos:244
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:249, .]
|
||||
block tags: empty
|
||||
postamble: 2
|
||||
EndElement[END_ELEMENT, pos:251, BODY]
|
||||
EndElement[END_ELEMENT, pos:259, HTML]
|
||||
]
|
||||
EXPECT_END
|
@ -1,48 +1,9 @@
|
||||
<!--
|
||||
Copyright (c) 2015, 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.
|
||||
-->
|
||||
<!-- EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:1
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:1, A_simple_well_fo...rmed_html_document]
|
||||
body: 4
|
||||
StartElement[START_ELEMENT, pos:36
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:41, package.html]
|
||||
StartElement[START_ELEMENT, pos:53
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:58, .|In_package_pkg.]
|
||||
block tags: empty
|
||||
]
|
||||
EXPECT_END -->
|
||||
<!-- /nodynamiccopyright/ -->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
A simple well formed html document <pre>package.html<pre>.
|
||||
A simple well formed html document <pre>package.html</pre>.
|
||||
In package pkg.
|
||||
</BODY>
|
||||
</HTML>
|
||||
</HTML>
|
@ -0,0 +1,33 @@
|
||||
EXPECT_START
|
||||
DocComment[DOC_COMMENT, pos:0
|
||||
preamble: 5
|
||||
Comment[COMMENT, pos:0, <!--__/nodynamiccopyright/_-->]
|
||||
StartElement[START_ELEMENT, pos:31
|
||||
name:HTML
|
||||
attributes: empty
|
||||
]
|
||||
StartElement[START_ELEMENT, pos:38
|
||||
name:HEAD
|
||||
attributes: empty
|
||||
]
|
||||
EndElement[END_ELEMENT, pos:45, HEAD]
|
||||
StartElement[START_ELEMENT, pos:53
|
||||
name:BODY
|
||||
attributes: empty
|
||||
]
|
||||
firstSentence: 1
|
||||
Text[TEXT, pos:60, A_simple_well_fo...rmed_html_document]
|
||||
body: 4
|
||||
StartElement[START_ELEMENT, pos:95
|
||||
name:pre
|
||||
attributes: empty
|
||||
]
|
||||
Text[TEXT, pos:100, package.html]
|
||||
EndElement[END_ELEMENT, pos:112, pre]
|
||||
Text[TEXT, pos:118, .|In_package_pkg.]
|
||||
block tags: empty
|
||||
postamble: 2
|
||||
EndElement[END_ELEMENT, pos:136, BODY]
|
||||
EndElement[END_ELEMENT, pos:144, HTML]
|
||||
]
|
||||
EXPECT_END
|
@ -1028,6 +1028,12 @@ public class DPrinter {
|
||||
return visitInlineTag(node, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void visitDocType(DocTypeTree node, Void aVoid) {
|
||||
printLimitedEscapedString("body", node.getText());
|
||||
return visitTree(node, null);
|
||||
}
|
||||
|
||||
public Void visitEndElement(EndElementTree node, Void p) {
|
||||
printName("name", node.getName());
|
||||
return visitTree(node, null);
|
||||
|
Loading…
Reference in New Issue
Block a user