/* * Copyright (c) 2012, 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. */ /* * @test * @bug 7021614 8078320 * @summary extend com.sun.source API to support parsing javadoc comments * @modules jdk.compiler/com.sun.tools.javac.api * jdk.compiler/com.sun.tools.javac.file * jdk.compiler/com.sun.tools.javac.tree * jdk.compiler/com.sun.tools.javac.util * @build DocCommentTester * @run main DocCommentTester ElementTest.java */ class ElementTest { /** * <p>para</p> */ void simple() { } /* DocComment[DOC_COMMENT, pos:1 firstSentence: 2 StartElement[START_ELEMENT, pos:1 name:p attributes: empty ] Text[TEXT, pos:4, para] body: 1 EndElement[END_ELEMENT, pos:8, p] block tags: empty ] */ /** * abc <hr/> */ void self_closing() { } /* DocComment[DOC_COMMENT, pos:1 firstSentence: 2 Text[TEXT, pos:1, abc_] StartElement[START_ELEMENT, pos:5 name:hr attributes: empty ] body: empty block tags: empty ] */ /** * abc < def */ void bad_lt() { } /* DocComment[DOC_COMMENT, pos:1 firstSentence: 3 Text[TEXT, pos:1, abc_] Erroneous[ERRONEOUS, pos:5 code: compiler.err.dc.malformed.html body: < ] Text[TEXT, pos:6, _def] body: empty block tags: empty ] */ /** * abc > def */ void bad_gt() { } /* DocComment[DOC_COMMENT, pos:1 firstSentence: 3 Text[TEXT, pos:1, abc_] Erroneous[ERRONEOUS, pos:5 code: compiler.err.dc.bad.gt body: > ] Text[TEXT, pos:6, _def] body: empty block tags: empty ] */ /** * abc <p 123> def */ void bad_chars_start(); /* DocComment[DOC_COMMENT, pos:1 firstSentence: 5 Text[TEXT, pos:1, abc_] Erroneous[ERRONEOUS, pos:5 code: compiler.err.dc.malformed.html body: < ] Text[TEXT, pos:6, p_123] Erroneous[ERRONEOUS, pos:11 code: compiler.err.dc.bad.gt body: > ] Text[TEXT, pos:12, _def] body: empty block tags: empty ] */ /** * abc </p 123> def */ void bad_chars_end(); /* DocComment[DOC_COMMENT, pos:1 firstSentence: 5 Text[TEXT, pos:1, abc_] Erroneous[ERRONEOUS, pos:5 code: compiler.err.dc.malformed.html body: < ] Text[TEXT, pos:6, /p_123] Erroneous[ERRONEOUS, pos:12 code: compiler.err.dc.bad.gt body: > ] Text[TEXT, pos:13, _def] body: empty block tags: empty ] */ /** * abc <hr */ void unterminated_eoi() { } /* DocComment[DOC_COMMENT, pos:1 firstSentence: 3 Text[TEXT, pos:1, abc_] Erroneous[ERRONEOUS, pos:5 code: compiler.err.dc.malformed.html body: < ] Text[TEXT, pos:6, hr] body: empty block tags: empty ] */ /** * abc <hr * @author jjg */ void unterminated_block() { } /* DocComment[DOC_COMMENT, pos:1 firstSentence: 3 Text[TEXT, pos:1, abc_] Erroneous[ERRONEOUS, pos:5 code: compiler.err.dc.malformed.html body: < ] Text[TEXT, pos:6, hr] body: empty block tags: 1 Author[AUTHOR, pos:10 name: 1 Text[TEXT, pos:18, jjg] ] ] */ /** * abc </p */ void unterminated_end_eoi() { } /* DocComment[DOC_COMMENT, pos:1 firstSentence: 3 Text[TEXT, pos:1, abc_] Erroneous[ERRONEOUS, pos:5 code: compiler.err.dc.malformed.html body: < ] Text[TEXT, pos:6, /p] body: empty block tags: empty ] */ /** * abc </p * @author jjg */ void unterminated_end_block() { } /* DocComment[DOC_COMMENT, pos:1 firstSentence: 3 Text[TEXT, pos:1, abc_] Erroneous[ERRONEOUS, pos:5 code: compiler.err.dc.malformed.html body: < ] Text[TEXT, pos:6, /p] body: empty block tags: 1 Author[AUTHOR, pos:10 name: 1 Text[TEXT, pos:18, jjg] ] ] */ /** * abc * <!-- comment --> * def */ void comment() { } /* DocComment[DOC_COMMENT, pos:1 firstSentence: 3 Text[TEXT, pos:1, abc|_] Comment[COMMENT, pos:6, <!--_comment_-->] Text[TEXT, pos:22, |_def] body: empty block tags: empty ] */ }