Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

8325168: JShell should support Markdown comments #17686

Closed
wants to merge 120 commits into from
Closed
Changes from all commits
Commits
Show all changes
120 commits
Select commit Hold shift + click to select a range
128363b
JDK-8298405: Support Markdown in Documentation Comments
jonathan-gibbons Oct 26, 2023
ea9c161
Customize support for Markdown headings
jonathan-gibbons Nov 8, 2023
ec7445d
Improve handling of embedded inline taglets
jonathan-gibbons Nov 14, 2023
843cc27
Fix whitespace
jonathan-gibbons Nov 14, 2023
39cdd2b
Address review comments
jonathan-gibbons Nov 15, 2023
9f46a9e
Merge remote-tracking branch 'upstream/master' into 8298405.doclet-ma…
jonathan-gibbons Jan 8, 2024
50bb105
Merge with upstream/master
jonathan-gibbons Jan 8, 2024
a192f10
Merge with upstream/master
jonathan-gibbons Jan 19, 2024
30eb1d1
Merge remote-tracking branch 'upstream/master' into 8298405.doclet-ma…
jonathan-gibbons Jan 26, 2024
4d22a10
Merge remote-tracking branch 'upstream/master' into 8298405.doclet-ma…
jonathan-gibbons Jan 29, 2024
4dd2da4
fix copyright year
jonathan-gibbons Jan 29, 2024
5e3f03c
fix @since tags
jonathan-gibbons Jan 29, 2024
50c3a40
address review feedback
jonathan-gibbons Jan 31, 2024
f5175a8
Merge remote-tracking branch 'upstream/master' into 8298405.doclet-ma…
jonathan-gibbons Jan 31, 2024
0da7ba5
refine the Comment used for synthetic doc comments
jonathan-gibbons Jan 31, 2024
71ce4b1
change AUTOREF_PREFIX from a static string to a dynamically generated…
jonathan-gibbons Jan 31, 2024
586dadd
address review feedback for MarkdownTransformer `label.replace("\\[\\…
jonathan-gibbons Jan 31, 2024
66bd836
remove obsolete debug code
jonathan-gibbons Feb 1, 2024
56347b2
MarkdownTransformer: use suggested text for using streams
jonathan-gibbons Feb 1, 2024
30f447f
MarkdownTransformer: change `Lower.replaceIter` to be `private final`
jonathan-gibbons Feb 1, 2024
54d40b2
MarkdownTransformer: tweak doc comments
jonathan-gibbons Feb 1, 2024
4ed7eb4
Attempting to add support for Markdown to JavadocHelper/JShell.
lahodaj Feb 1, 2024
2b398fb
Merge branch '8298405.doclet-markdown-v3' into 8298405.markdown-jshell
lahodaj Feb 1, 2024
b02d467
add info about provenance of `jdk.internal.md` module
jonathan-gibbons Feb 1, 2024
f086aaa
updates for "first sentence" issues and tests
jonathan-gibbons Feb 2, 2024
0734094
Attempting to improve the code shape.
lahodaj Feb 2, 2024
8f6be87
Adding forgotten class.
lahodaj Feb 2, 2024
203532b
First pass at remove DocCommentTransformer from the public API.
jonathan-gibbons Feb 6, 2024
8caa471
Removing ToHTMLMarkdownTransformer, as suggested
lahodaj Feb 6, 2024
2a20c74
remove unused imports
jonathan-gibbons Feb 6, 2024
7c63168
initial fix for source offset problem
jonathan-gibbons Feb 7, 2024
5710c28
add test case contributed by @lahodaj
jonathan-gibbons Feb 7, 2024
63dd8bf
Merge remote-tracking branch 'upstream/master' into 8298405.doclet-ma…
jonathan-gibbons Feb 7, 2024
92b5e7a
clean up imports in ModuleGenerator test file
jonathan-gibbons Feb 8, 2024
5fc415b
remove commented-out code from DocCommentTester
jonathan-gibbons Feb 8, 2024
c891fe9
improve comments on negative test case
jonathan-gibbons Feb 8, 2024
cb07045
amend comment in test
jonathan-gibbons Feb 8, 2024
3b1350b
added test case in TestMarkdown.java for handling of `@deprecated` tag
jonathan-gibbons Feb 8, 2024
91588bc
address review feedback
jonathan-gibbons Feb 9, 2024
d22668d
address review feedback
jonathan-gibbons Feb 9, 2024
3f8aa6b
refactor recent new test case in TestMarkdown.java
jonathan-gibbons Feb 9, 2024
910af71
Merge branch '8298405.doclet-markdown-v3' into JDK-8298405
lahodaj Feb 12, 2024
6907266
update copyright year on test
jonathan-gibbons Feb 12, 2024
184343f
Merge remote-tracking branch 'upstream/master' into 8298405.doclet-ma…
jonathan-gibbons Feb 12, 2024
9eaf84e
improve support for DocCommentParser.LineKind
jonathan-gibbons Feb 12, 2024
1c64a6e
Merge remote-tracking branch 'upstream/master' into 8298405.doclet-ma…
jonathan-gibbons Feb 12, 2024
9745cc5
Merge remote-tracking branch 'upstream/master' into 8298405.doclet-ma…
jonathan-gibbons Feb 13, 2024
214d7bb
Cleanup.
lahodaj Feb 14, 2024
396512d
Fixing positions when transforming javadoc text with replacement char…
lahodaj Feb 14, 2024
937035e
change "standard" to "traditional" when referring to a comment
jonathan-gibbons Feb 15, 2024
2eb7c63
fixes for the "New API" page
jonathan-gibbons Feb 15, 2024
2801c2e
fill in `visitRawText` in `CommentHelper.getTags` visitor
jonathan-gibbons Feb 15, 2024
f6d08db
fix compilation and whitespace issues
jonathan-gibbons Feb 15, 2024
dd4059a
remove debug print
jonathan-gibbons Feb 15, 2024
393d3a9
fix return tag name
jonathan-gibbons Feb 15, 2024
94776a8
update LineKind members and test
jonathan-gibbons Feb 15, 2024
eda4036
improve comments for some LineKind members
jonathan-gibbons Feb 15, 2024
da8752c
fix handling of `@' in a Markdown comment
jonathan-gibbons Feb 15, 2024
2d905d3
fix typo
jonathan-gibbons Feb 15, 2024
53afd80
Support for Table Of Contents in Markdown headings
jonathan-gibbons Feb 16, 2024
25921fd
remove obsolete comment
jonathan-gibbons Feb 16, 2024
8616ee1
fix indentation, for consistency
jonathan-gibbons Feb 20, 2024
5fc9c84
update DocCommentParser and tests to improve handling of code blocks …
jonathan-gibbons Feb 22, 2024
7242041
refactor tests for Markdown headings into a separate test class.
jonathan-gibbons Feb 22, 2024
27bc0b9
fix Markdown.update for new POST_LIST_INDENT test case given in revie…
jonathan-gibbons Feb 22, 2024
4061686
fix whitespace
jonathan-gibbons Feb 22, 2024
d460ee3
add support for (top-level) trailing code blocks
jonathan-gibbons Feb 22, 2024
398f93f
Refactor most of TestMarkdown.java into separate tests, grouped by fu…
jonathan-gibbons Feb 23, 2024
0b4d9b3
Revise `Markdown.update` to better handle container blocks.
jonathan-gibbons Mar 1, 2024
8e64dc2
Merge remote-tracking branch 'upstream/master' into 8298405.doclet-ma…
jonathan-gibbons Mar 4, 2024
292ff0f
fix test after merge
jonathan-gibbons Mar 4, 2024
0c497c9
avoid relying on unspecified behavior `List.toString`
jonathan-gibbons Mar 6, 2024
fc76e8c
fix `textOf` method to accommodate Markdown content.
jonathan-gibbons Mar 6, 2024
8dfd9e0
add test cases for links to anchors
jonathan-gibbons Mar 7, 2024
81279a7
improve first-sentence break in Markdown comments
jonathan-gibbons Mar 11, 2024
76eccbf
Merge with upstream/master
jonathan-gibbons Mar 11, 2024
635af77
Merge with upstream/master
jonathan-gibbons Mar 15, 2024
7d4810d
Merge remote-tracking branch 'upstream/master' into 8298405.doclet-ma…
jonathan-gibbons Mar 18, 2024
03652d2
update man page
jonathan-gibbons Mar 18, 2024
5e08eac
Merge remote-tracking branch 'upstream/master' into 8298405.doclet-ma…
jonathan-gibbons Mar 18, 2024
21d9ac5
Merge branch '8298405.doclet-markdown-v3' into fix-positions-replacement
lahodaj Mar 21, 2024
4ac7c5d
Merge branch '8298405.doclet-markdown-v3' into JDK-8298405
lahodaj Mar 21, 2024
fd8edf3
Cleanup.
lahodaj Mar 21, 2024
477fb15
Merge pull request #3 from lahodaj/fix-positions-replacement
jonathan-gibbons Mar 21, 2024
a8ea1c7
Merge branch '8298405.doclet-markdown-v3' of https://github.com/jonat…
jonathan-gibbons Mar 21, 2024
8ccf9df
Merge branch '8298405.doclet-markdown-v3' into JDK-8298405
lahodaj Mar 22, 2024
8814ab1
Fixing test.
lahodaj Mar 22, 2024
77ab24a
Preventing a NPE.
lahodaj Mar 25, 2024
0ba0fff
Cleanup.
lahodaj Mar 25, 2024
3764628
add support for `--disable-line-doc-comments`
jonathan-gibbons Mar 27, 2024
21f5b00
add support for JDK-8329296: Update Elements for '///' documentation …
jonathan-gibbons Apr 8, 2024
d4c2c73
address review feedback for updates to Elements and friends
jonathan-gibbons Apr 11, 2024
fbcb4c3
address review feedback for updates to Elements and friends
jonathan-gibbons Apr 26, 2024
c4709cf
Merge with upstream/master
jonathan-gibbons Apr 26, 2024
a884ae3
Suppress warnings building tests
jonathan-gibbons Apr 26, 2024
fadc130
Remove links to `jdk.javadoc` module from `java.compiler` module`
jonathan-gibbons Apr 29, 2024
74c86f5
update commonmark-java from 0.21.0 to 0.22.0
jonathan-gibbons Apr 30, 2024
20a384b
Merge remote-tracking branch 'upstream/master' into 8298405.doclet-ma…
jonathan-gibbons Apr 30, 2024
6576d02
update copyright years
jonathan-gibbons Apr 30, 2024
fe94ab8
address review feedback, to improve testing of changes to Elements
jonathan-gibbons May 1, 2024
e42632a
Merge remote-tracking branch 'upstream/master' into 8298405.doclet-ma…
jonathan-gibbons May 1, 2024
9ad5c39
Update javadoc.1 troff man page
jonathan-gibbons May 6, 2024
e48ebb5
Remove `--no-fonts` from `MISSING_IN_MAN_PAGE`
jonathan-gibbons May 6, 2024
198a5e8
Merge branch '8298405.doclet-markdown-v3' into JDK-8298405
lahodaj May 7, 2024
28211c7
Post merge fix.
lahodaj May 7, 2024
cc12140
Merge remote-tracking branch 'upstream/master' into 8298405.doclet-ma…
jonathan-gibbons May 7, 2024
f466bad
Merge remote-tracking branch 'upstream/master' into 8298405.doclet-ma…
jonathan-gibbons May 13, 2024
4354610
Merge remote-tracking branch 'upstream/master' into 8298405.doclet-ma…
jonathan-gibbons May 15, 2024
bfa35bd
update tests for dangling doc comments, per review feedback
jonathan-gibbons May 15, 2024
a0df7a4
address review feedback
jonathan-gibbons May 16, 2024
73405e5
Merge branch '8298405.doclet-markdown-v3' into JDK-8298405
lahodaj May 17, 2024
4aaca88
Merge branch 'master' into JDK-8298405
lahodaj May 17, 2024
9b9550f
Fixing test.
lahodaj May 17, 2024
a90d9ae
8332858: References with escapes have broken positions after they are…
lahodaj May 24, 2024
dcde9e8
Merge remote-tracking branch 'origin/JDK-8332858' into JDK-8298405
lahodaj May 24, 2024
081c930
Fixing handling of synthetic/rewritten links.
lahodaj May 24, 2024
b75f896
Fixing prefix offset.
lahodaj May 24, 2024
4b02060
Merge remote-tracking branch 'origin/JDK-8332858' into JDK-8298405
lahodaj May 24, 2024
d85a2b8
Merge branch 'master' into JDK-8298405
lahodaj May 31, 2024
64c984d
Reflecting review comments.
lahodaj Jun 3, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions src/jdk.compiler/share/classes/module-info.java
Original file line number Diff line number Diff line change
@@ -268,8 +268,6 @@
jdk.javadoc,
jdk.jshell,
jdk.internal.md;
exports jdk.internal.shellsupport.doc to
jdk.jshell;

uses javax.annotation.processing.Processor;
uses com.sun.source.util.Plugin;

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion src/jdk.jshell/share/classes/module-info.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2024, 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
@@ -71,6 +71,7 @@
requires jdk.compiler;
requires jdk.internal.ed;
requires jdk.internal.le;
requires jdk.internal.md;
requires jdk.internal.opt;

requires transitive java.compiler;
Original file line number Diff line number Diff line change
@@ -28,7 +28,7 @@
* @library /tools/lib
* @modules jdk.compiler/com.sun.tools.javac.api
* jdk.compiler/com.sun.tools.javac.main
* jdk.compiler/jdk.internal.shellsupport.doc
* jdk.jshell/jdk.internal.shellsupport.doc
* @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask
* @run testng/timeout=900/othervm -Xmx1024m FullJavadocHelperTest
*/
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2015, 2021, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2015, 2024, 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,7 +26,7 @@
* @bug 8131019 8169561 8261450
* @summary Test JavadocFormatter
* @library /tools/lib
* @modules jdk.compiler/jdk.internal.shellsupport.doc
* @modules jdk.jshell/jdk.internal.shellsupport.doc
* @run testng JavadocFormatterTest
*/

158 changes: 151 additions & 7 deletions test/langtools/jdk/internal/shellsupport/doc/JavadocHelperTest.java
Original file line number Diff line number Diff line change
@@ -28,7 +28,7 @@
* @library /tools/lib
* @modules jdk.compiler/com.sun.tools.javac.api
* jdk.compiler/com.sun.tools.javac.main
* jdk.compiler/jdk.internal.shellsupport.doc
* jdk.jshell/jdk.internal.shellsupport.doc
* @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask
* @run testng JavadocHelperTest
* @key randomness
@@ -93,12 +93,6 @@ public void testJavadoc() throws Exception {
" @return value\n");
}

private Element getFirstMethod(JavacTask task, String typeName) {
return ElementFilter.methodsIn(task.getElements().getTypeElement(typeName).getEnclosedElements()).get(0);
}

private Function<JavacTask, Element> getSubTest = t -> getFirstMethod(t, "test.Sub");

public void testInheritNoJavadoc() throws Exception {
doTestJavadoc("",
getSubTest,
@@ -301,6 +295,150 @@ public void testShortComment() throws Exception {
"@return value\n");
}

public void testMarkdown() throws Exception {
doTestJavadoc("""
/// Prefix {@inheritDoc} suffix.
///
/// *Another* __paragraph__.
///
/// Paragraph \ufffc with \ufffc replacement \ufffc character.
///
/// @param p1 prefix {@inheritDoc} suffix
/// @param p2 prefix {@inheritDoc} suffix
/// @param p3 prefix {@inheritDoc} suffix
/// @throws IllegalStateException prefix {@inheritDoc} suffix
/// @throws IllegalArgumentException prefix {@inheritDoc} suffix
/// @throws IllegalAccessException prefix {@inheritDoc} suffix
/// @return prefix {@inheritDoc} suffix
""",
getSubTest,
"""
Prefix javadoc1 suffix.
<p><em>Another</em> <strong>paragraph</strong>.
<p>Paragraph \ufffc with \ufffc replacement \ufffc character.
@param p1 prefix param1 suffix
@param p2 prefix param2 suffix
@param p3 prefix param3 suffix
@throws IllegalStateException prefix exc1 suffix
@throws IllegalArgumentException prefix exc2 suffix
@throws IllegalAccessException prefix exc3 suffix
@return prefix value suffix""");
}

public void testMarkdown2() throws Exception {
doTestJavadoc("""
/// {@inheritDoc}
///
/// *Another* __paragraph__. [java.lang.Object]
///
/// @since snc
""",
getSubTest,
"""
javadoc1
<p><em>Another</em> <strong>paragraph</strong>. {@link java.lang.Object}
@param p1 param1
@param p2 param2
@param p3 param3
@throws java.lang.IllegalStateException exc1
@throws java.lang.IllegalArgumentException exc2
@throws java.lang.IllegalAccessException exc3
@return value
@since snc""");
}

public void testMarkdown3() throws Exception {
doTestJavadoc("""
/// {@inheritDoc}
///
/// *Another* __paragraph__.
""",
getSubTest,
//the formatting could be improved:
"""
javadoc1
<p><em>Another</em> <strong>paragraph</strong>.@param p1 param1
@param p2 param2
@param p3 param3
@throws java.lang.IllegalStateException exc1
@throws java.lang.IllegalArgumentException exc2
@throws java.lang.IllegalAccessException exc3
@return value
""");
}

public void testMarkdown4() throws Exception {
doTestJavadoc("""
/// {@inheritDoc}
///
/// *Another* __paragraph__. [test][java.lang.Object]
///
/// @since snc
""",
getSubTest,
"""
javadoc1
<p><em>Another</em> <strong>paragraph</strong>. {@linkplain java.lang.Object test}
@param p1 param1
@param p2 param2
@param p3 param3
@throws java.lang.IllegalStateException exc1
@throws java.lang.IllegalArgumentException exc2
@throws java.lang.IllegalAccessException exc3
@return value
@since snc""");
}

public void testMarkdown5() throws Exception {
doTestJavadoc("""
///[define classes][java.lang.invoke.MethodHandles.Lookup#defineClass(byte\\[\\])]
///
/// @since snc
""",
getSubTest,
"""
{@linkplain java.lang.invoke.MethodHandles.Lookup#defineClass(byte[]) define classes}
@param p1 param1
@param p2 param2
@param p3 param3
@throws java.lang.IllegalStateException exc1
@throws java.lang.IllegalArgumentException exc2
@throws java.lang.IllegalAccessException exc3
@return value
@since snc""");
}

public void testMarkdown6() throws Exception {
doTestJavadoc("""
///Text1 [define classes][java.lang.invoke.MethodHandles.Lookup#defineClass(byte\\[\\])]
///text2
///
/// @since snc
""",
getSubTest,
"""
Text1 {@linkplain java.lang.invoke.MethodHandles.Lookup#defineClass(byte[]) define classes}
text2
@param p1 param1
@param p2 param2
@param p3 param3
@throws java.lang.IllegalStateException exc1
@throws java.lang.IllegalArgumentException exc2
@throws java.lang.IllegalAccessException exc3
@return value
@since snc""");
}

private void doTestJavadoc(String origJavadoc, Function<JavacTask, Element> getElement, String expectedJavadoc) throws Exception {
doTestJavadoc(origJavadoc,
" /**\n" +
@@ -370,6 +508,12 @@ private void doTestJavadoc(String origJavadoc,
}
}

private Element getFirstMethod(JavacTask task, String typeName) {
return ElementFilter.methodsIn(task.getElements().getTypeElement(typeName).getEnclosedElements()).get(0);
}

private Function<JavacTask, Element> getSubTest = t -> getFirstMethod(t, "test.Sub");

private static final class JFOImpl extends SimpleJavaFileObject {

private final String code;