use of com.google.devtools.j2objc.ast.Javadoc in project j2objc by google.
the class JavadocConverter method convertJavadoc.
/**
* Returns an AST node for the javadoc comment of a specified class,
* method, or field element.
*/
static Javadoc convertJavadoc(Element element, String source, JavacEnvironment env, boolean reportWarnings) {
DocTrees docTrees = DocTrees.instance(env.task());
TreePath path = docTrees.getPath(element);
if (path == null) {
throw new AssertionError("could not find tree path for element");
}
DCTree.DCDocComment docComment = (DCTree.DCDocComment) docTrees.getDocCommentTree(path);
if (docComment == null) {
// Declaration does not have a javadoc comment.
return null;
}
JavadocConverter converter = new JavadocConverter(element, docComment, source, docTrees, path.getCompilationUnit(), reportWarnings);
Javadoc result = new Javadoc();
// First tag has no name.
TagElement newTag = new TagElement();
converter.scan(docComment.getFirstSentence(), newTag);
converter.scan(docComment.getBody(), newTag);
if (!newTag.getFragments().isEmpty()) {
List<TreeNode> fragments = newTag.getFragments();
int start = fragments.get(0).getStartPosition();
TreeNode lastFragment = fragments.get(fragments.size() - 1);
int end = start + lastFragment.getLength();
converter.setPos(newTag, start, end);
result.addTag(newTag);
}
for (DocTree tag : docComment.getBlockTags()) {
if (tag.getKind() != DocTree.Kind.ERRONEOUS) {
newTag = new TagElement();
converter.scan(tag, newTag);
result.addTag(newTag);
}
}
return result;
}
use of com.google.devtools.j2objc.ast.Javadoc in project j2objc by google.
the class GenerationUnit method addPackageJavadoc.
// Collect javadoc from the package declarations to display in the header.
private void addPackageJavadoc(CompilationUnit unit, String qualifiedMainType) {
Javadoc javadoc = unit.getPackage().getJavadoc();
if (javadoc == null) {
return;
}
SourceBuilder builder = new SourceBuilder(false);
JavadocGenerator.printDocComment(builder, javadoc);
javadocBlocks.put(qualifiedMainType, builder.toString());
}
use of com.google.devtools.j2objc.ast.Javadoc in project j2objc by google.
the class TreeConverter method convertAssociatedComment.
private Comment convertAssociatedComment(JCTree node, Element element) {
boolean docCommentsEnabled = newUnit.getEnv().options().docCommentsEnabled();
DocCommentTable docComments = unit.docComments;
if (!docCommentsEnabled || docComments == null || !docComments.hasComment(node)) {
return null;
}
com.sun.tools.javac.parser.Tokens.Comment javacComment = docComments.getComment(node);
Comment comment;
switch(javacComment.getStyle()) {
case BLOCK:
comment = new BlockComment();
break;
case JAVADOC:
comment = docCommentsEnabled ? convertJavadocComment(element) : new Javadoc();
break;
case LINE:
comment = new LineComment();
break;
default:
throw new AssertionError("unknown comment type");
}
int startPos = javacComment.getSourcePos(0);
int endPos = startPos + javacComment.getText().length();
comment.setSourceRange(startPos, endPos);
comment.setLineNumber(unit.getLineMap().getLineNumber(startPos));
return comment;
}
Aggregations