RFR: JDK-8267126: javadoc should show "line and caret" for diagnostics. [v2]
Pavel Rappo
prappo at openjdk.java.net
Tue May 18 14:49:44 UTC 2021
On Mon, 17 May 2021 20:40:18 GMT, Jonathan Gibbons <jjg at openjdk.org> wrote:
>> Please review a change to overhaul the javadoc support for diagnostics to better leverage the support available in javac. This includes the ability for all javadoc diagnostics to show a "source line and caret" to indicate the position of a reported issue. As a side-effect, it normalizes the formatting of javadoc messages, to be consistent with javac messages.
>>
>> The primary changes are in the javadoc `Messager` class, and are primarily focussed "downward" on the internal use of the javac `Log.report` method, which is the nexus for reporting methods. There is additional cleanup that could be done in `Messager` in the API it provides to clients, but (for the most part) that is not done in this work.
>>
>> Additional changes are done to facilitate writing a test for this work, and reflect the current shortcomings of the existing `Doclet` API. Most notably:
>> * changes in `Utils` to allow a user-defined taglet to override a built-in taglet
>> * changes in `TagletManager` and `Workarounds` to allow a user-defined taglet to access internal API, to workaround API that would be useful to provide on `StandardDoclet`
>>
>> There are a few minor specific cleanup changes in code style and/or improved comments.
>>
>> There is one primary new test, `TestDiagsLineCaret.java` which exercises different kinds of diagnostics at different positions in a file, to verify that the source line and a caret are produced as appropriate.
>>
>> There are additional test changes triggered by the slight change in the format of error messages. Most notably, prefixes like `error -` and `warning -` become `error:` and `warning:`.
>
> Jonathan Gibbons has updated the pull request incrementally with one additional commit since the last revision:
>
> minor cleanup
This is not a review, but preliminary comments to help me get started with the review.
src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/TagletManager.java line 264:
> 262: "jdk.javadoc.internal.doclets.formats.html");
> 263: pkgs.forEach(p -> thisModule.addOpens(p, tagletLoaderUnnamedModule));
> 264: }
What's that and the corresponding WorkArounds.accessInternalAPI about?
src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/Messager.java line 474:
> 472: */
> 473: private DiagnosticPosition getDiagnosticPosition(DocTreePath path) {
> 474: ToolEnvironment toolEnv = getToolEnv();
toolEnv is unused.
src/jdk.javadoc/share/classes/jdk/javadoc/internal/tool/ToolEnvironment.java line 147:
> 145: enter = JavadocEnter.instance(context);
> 146: names = Names.instance(context);
> 147: externalizableSym = syms.enterClass(syms.java_base, names.fromString("java.io.Externalizable"));
What was externalizableSym about and why have you deleted it?
test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java line 377:
> 375:
> 376: // make sure the doclet indeed emits the warning
> 377: checkOutput(Output.OUT, true, "C.java:31: warning: invalid usage of tag <");
This is interesting: while the line coordinate of an error has changed in this test, those of [TestSearch.java L676-L679](https://github.com/openjdk/jdk/pull/4074/files#diff-79c641910bccd3bfabdf3912fd24f4858edcd17bdd325555930fd85fba580593L676-L679) from this same PR have not. Mind you, I haven't investigated it yet.
test/langtools/jdk/javadoc/doclet/testJavaFX/TestJavaFX.java line 422:
> 420: "--javafx",
> 421: "--disable-javafx-strict-checks",
> 422: "--no-platform-links",
It just happens so that yesterday I [asked](https://github.com/openjdk/jdk/pull/4051#pullrequestreview-660862882) Hannes about proliferation of `--no-platform-links` in tests and now we have 3 more of those in this PR alone.
-------------
PR: https://git.openjdk.java.net/jdk/pull/4074
More information about the javadoc-dev
mailing list