/*
* 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.
*/
/*
* @test
* @bug 8144287
* @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 IndexTest.java
*/
class IndexTest {
/**
* abc {@index xyz} def
*/
void simple_term() {}
/*
DocComment[DOC_COMMENT, pos:1
firstSentence: 3
Text[TEXT, pos:1, abc_]
Index[INDEX, pos:5
term:
Text[TEXT, pos:13, xyz]
description: empty
]
Text[TEXT, pos:17, _def]
body: empty
block tags: empty
]
*/
/**
* abc {@index lmn pqr stu} def
*/
void simple_term_with_description() { }
/*
DocComment[DOC_COMMENT, pos:1
firstSentence: 3
Text[TEXT, pos:1, abc_]
Index[INDEX, pos:5
term:
Text[TEXT, pos:13, lmn]
description: 1
Text[TEXT, pos:17, pqr_stu]
]
Text[TEXT, pos:25, _def]
body: empty
block tags: empty
]
*/
/**
* abc {@index ijk {lmn opq} } def
*/
void phrase_with_curly_description() { }
/*
DocComment[DOC_COMMENT, pos:1
firstSentence: 3
Text[TEXT, pos:1, abc_]
Index[INDEX, pos:5
term:
Text[TEXT, pos:13, ijk]
description: 1
Text[TEXT, pos:17, {lmn_opq}_]
]
Text[TEXT, pos:28, _def]
body: empty
block tags: empty
]
*/
/**
* abc {@index ijk lmn
* opq
* rst
* } def
*/
void phrase_with_nl_description() { }
/*
DocComment[DOC_COMMENT, pos:1
firstSentence: 3
Text[TEXT, pos:1, abc_]
Index[INDEX, pos:5
term:
Text[TEXT, pos:13, ijk]
description: 1
Text[TEXT, pos:17, lmn|_opq|_rst|_]
]
Text[TEXT, pos:33, _def]
body: empty
block tags: empty
]
*/
/**
* abc {@index "lmn pqr"} def
*/
void phrase_no_description() { }
/*
DocComment[DOC_COMMENT, pos:1
firstSentence: 3
Text[TEXT, pos:1, abc_]
Index[INDEX, pos:5
term:
Text[TEXT, pos:13, "lmn_pqr"]
description: empty
]
Text[TEXT, pos:23, _def]
body: empty
block tags: empty
]
*/
/**
* abc {@index "ijk lmn" pqr xyz} def
*/
void phrase_with_description() { }
/*
DocComment[DOC_COMMENT, pos:1
firstSentence: 3
Text[TEXT, pos:1, abc_]
Index[INDEX, pos:5
term:
Text[TEXT, pos:13, "ijk_lmn"]
description: 1
Text[TEXT, pos:23, pqr_xyz]
]
Text[TEXT, pos:31, _def]
body: empty
block tags: empty
]
*/
/**
* abc {@index {@xyz} "{@see xyz}" def}
*/
void term_and_description_with_nested_tag() {}
/*
DocComment[DOC_COMMENT, pos:1
firstSentence: 2
Text[TEXT, pos:1, abc_]
Index[INDEX, pos:5
term:
Text[TEXT, pos:13, {@xyz}]
description: 1
Text[TEXT, pos:20, "{@see_xyz}"_def]
]
body: empty
block tags: empty
]
*/
/**
* abc {@index @def lmn } xyz
*/
void term_with_at() { }
/*
DocComment[DOC_COMMENT, pos:1
firstSentence: 3
Text[TEXT, pos:1, abc_]
Index[INDEX, pos:5
term:
Text[TEXT, pos:13, @def]
description: 1
Text[TEXT, pos:18, lmn_]
]
Text[TEXT, pos:23, _xyz]
body: empty
block tags: empty
]
*/
/**
* abc {@index ijk@lmn pqr } xyz
*/
void term_with_text_at() { }
/*
DocComment[DOC_COMMENT, pos:1
firstSentence: 3
Text[TEXT, pos:1, abc_]
Index[INDEX, pos:5
term:
Text[TEXT, pos:13, ijk@lmn]
description: 1
Text[TEXT, pos:21, pqr_]
]
Text[TEXT, pos:26, _xyz]
body: empty
block tags: empty
]
*/
/**
* abc {@index ""} def
*/
void empty_index_in_quotes() {}
/*
DocComment[DOC_COMMENT, pos:1
firstSentence: 3
Text[TEXT, pos:1, abc_]
Index[INDEX, pos:5
term:
Text[TEXT, pos:13, ""]
description: empty
]
Text[TEXT, pos:16, _def]
body: empty
block tags: empty
]
*/
/**
* abc {@index
* @return def} xyz
*/
void bad_nl_at_in_term() {}
/*
DocComment[DOC_COMMENT, pos:1
firstSentence: 2
Text[TEXT, pos:1, abc_]
Erroneous[ERRONEOUS, pos:5
code: compiler.err.dc.no.content
body: {@index
]
body: empty
block tags: 1
Return[RETURN, pos:14
description: 1
Text[TEXT, pos:22, def}_xyz]
]
]
*/
/**
* abc {@index "xyz } def
*/
void bad_unbalanced_quote() {}
/*
DocComment[DOC_COMMENT, pos:1
firstSentence: 2
Text[TEXT, pos:1, abc_]
Erroneous[ERRONEOUS, pos:5
code: compiler.err.dc.no.content
body: {@index_"xyz_}_def
]
body: empty
block tags: empty
]
*/
/**
* abc {@index} def
*/
void bad_no_index() {}
/*
DocComment[DOC_COMMENT, pos:1
firstSentence: 3
Text[TEXT, pos:1, abc_]
Erroneous[ERRONEOUS, pos:5
code: compiler.err.dc.no.content
body: {@index
]
Text[TEXT, pos:12, }_def]
body: empty
block tags: empty
]
*/
}