RFR: JDK-8241780 Allow \n@ inside inline tags.
Liam Miller-Cushon
cushon at google.com
Wed Apr 22 23:28:34 UTC 2020
This looks great to me.
I tried the patch out on a few examples and it behaved exactly as expected
/ described. I know some javadoc users who will be happy to see this.
Thanks!
On Wed, Apr 22, 2020 at 10:28 AM Jonathan Gibbons <
jonathan.gibbons at oracle.com> wrote:
> Please review a change that will permit the use of a previously illegal
> construction, to allow <newline> <spaces> `@` inside inline tags. This
> will allow "<pre>{@code..." constructions that contain annotations, such
> as the following:
>
> /**
> * This is a method.
> * <pre>{@code
> * @Override
> * void m() { }
> * }</pre>
> */
>
> Previously, the text was first parsed into the main body and subsequent
> block tags, and only then were those analyzed for inline tags. That
> meant that the example just given was invalid, for having an incomplete
> inline tag between `<pre>` and an apparent block tag named `@Override`.
> With the change, `@` at the beginning of a line inside an inline tag
> will not be treated as the beginning of a block tag, and so the comment
> will parse as might be expected.
>
> The change to the code is as simple as deleting the code that detected
> block tags inside inline tags.
>
> There are some minor compatibility effects.
>
> 1. Some comments that were previously invalid may become valid. This is
> the desired effect.
>
> 2. Some comments that previously invalid may now be parsed differently.
> In particular, in the case of a genuinely missing '}', the parse will
> now swallow up any block tags that might follow. For example, consider
> the following:
>
> /**
> * This is a method.
> * @param p1 this has an unbalanced {@code description
> * @param p2 this is the second parameter
> */
> void m(int p1, int p2) { }
>
> As a result of the change, the description for parameter p2 will be
> swallowed up as part of the invalid description for p1. This will only
> be visible in error messages and clients of the API that analyze
> erroneous comments.
>
> The tests are updated to accommodate the change. A specific test for the
> `<pre>{@code...}</pre>` construction is added. The biggest change is to
> the test code that "predicts" the output of the AST pretty printer,
> which is now updated to better handle the new behavior of `{@code}` and
> `{@literal}` tags.
>
> -- Jon
>
> JBS: https://bugs.openjdk.java.net/browse/JDK-8241780
> Webrev: http://cr.openjdk.java.net/~jjg/8241780/webrev.00/index.html
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/compiler-dev/attachments/20200422/82da249e/attachment.htm>
More information about the compiler-dev
mailing list