On Mon, 15 Nov 2021 20:34:20 GMT, Pavel Rappo <pra...@openjdk.org> wrote:

> The initial integration (JDK-8266666) of JEP 413 did not support properties 
> files. This commit rights that wrong.

I think you can simplify the code by reducing `CoarseParser` down to a 
language-specific regular expression with "standard" named groups for the 
payload and markup.

I'd also recommend not using an `enum` for `Language` to leave open the 
possibility of easily/dynamically adding support for additional languages.

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/SnippetTaglet.java
 line 67:

> 65: public class SnippetTaglet extends BaseTaglet {
> 66: 
> 67:     public enum Language {

The idea of a `Language` object is good, but using an `enum` precludes easy 
extensibility.

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/snippet/Parser.java
 line 87:

> 85:         int payloadEnd();
> 86:         int markupStart();
> 87:     }

I'm surprised/disappointed that this may be necessary, although I accept there 
is a notable difference between "whole-line comments" and "end-of-line 
comments".  Is it possible to reduce `CoarseParser` down to a language-specific 
regular expression with named groups for the payload and markup, such that the 
regular expression could be  a property of the `Language` object?

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/snippet/Parser.java
 line 93:

> 91: 
> 92:         @Override
> 93:         public boolean parse(String line) {return 
> m.reset(line).matches();}

Given that matchers are lightweight objects, what is the benefit of using a 
pre-allocated matcher and `reset` as compared to a temporary `Matcher` object?  
Is it just style, or is there something more?

src/jdk.javadoc/share/classes/jdk/javadoc/internal/doclets/toolkit/taglets/snippet/Parser.java
 line 99:

> 97: 
> 98:         @Override
> 99:         public int markupStart() {return m.start(3);}

Suggest using named groups

test/langtools/jdk/javadoc/doclet/testSnippetTag/TestLangProperties.java line 
44:

> 42:  * @build javadoc.tester.* toolbox.ToolBox toolbox.ModuleBuilder 
> builder.ClassBuilder
> 43:  * @run main TestLangProperties
> 44:  */

move before imports

test/langtools/jdk/javadoc/doclet/testSnippetTag/TestLangProperties.java line 
47:

> 45: public class TestLangProperties extends SnippetTester {
> 46: 
> 47:     private final ToolBox tb = new ToolBox();

Suggest moving to SnippetTester (suggested in dependent PR)

test/langtools/jdk/javadoc/doclet/testSnippetTag/TestLangProperties.java line 
49:

> 47:     private final ToolBox tb = new ToolBox();
> 48: 
> 49:     private TestLangProperties() {}

Just curious: why force this?

-------------

PR: https://git.openjdk.java.net/jdk/pull/6397

Reply via email to