[ 
https://issues.apache.org/jira/browse/GROOVY-11202?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Per Nyfelt updated GROOVY-11202:
--------------------------------
    Description: 
When running Gradle 8.4 -> GroovyDoc 4.0.15 which uses javaparser-core 3.25.5 i 
get the following error:

[ant:groovydoc] Attempting to ignore error parsing Java source file: 
se/alipsa/groovy/matrix/util/DataType.java
[ant:groovydoc] Consider reporting the error to the Groovy project: 
https://issues.apache.org/jira/browse/GROOVY
[ant:groovydoc] ... or directly to the JavaParser project: 
[https://github.com/javaparser/javaparser/issues]
[ant:groovydoc] Error: (line 55,col 9) Use of patterns with instanceof is not 
supported.

The offending code is:

public static String sqlType(Object value, int... varcharSize) {
if (value instanceof BigDecimal bd) {
return "DECIMAL(" + bd.precision() + "," + bd.scale() + ")";
}
return value == null ? null : sqlType(value.getClass(), varcharSize);
}

 

Patterns with instanceof is supported by javaparser:

{{@Test
void testParseInstanceofPattern() {}}

   {{String code =
            """}}
{{    }}{{class A {}}

         {{public static String sqlType(Object value,        int... 
varcharSize) {}}

              {{if (value instanceof BigDecimal bd) {            return 
"DECIMAL(" + bd.precision() +              ","  + bd.scale() + ")";}}
{{      }}}

{{      return value == null ? null : }}
{{       }}{{sqlType(value.getClass(), varcharSize); }}

         {{} }}

{{  }""";}}

{{  ParserConfiguration config = }}
{{    new ParserConfiguration(); }}
{{ config}}
{{    }}{{.setLanguageLevel(LanguageLevel.JAVA_17);   JavaParser parser = new 
JavaParser(config);   CompilationUnit cu = JavaParserAdapter }}
{{   .of(parser).parse(code);}}

  {{System.out.println(cu.toString());}}

{{}}}

{{}}

{{This might mean that the groovy gradle plugin is not setting the language 
level based on the tool chain e.g in my build.gradle i have:}}

java {
  toolchain {
    languageVersion = JavaLanguageVersion.of(17)
  }
}{{{}{}}}

> Support use of patterns with instanceof in groovydoc
> ----------------------------------------------------
>
>                 Key: GROOVY-11202
>                 URL: https://issues.apache.org/jira/browse/GROOVY-11202
>             Project: Groovy
>          Issue Type: Bug
>            Reporter: Per Nyfelt
>            Priority: Major
>
> When running Gradle 8.4 -> GroovyDoc 4.0.15 which uses javaparser-core 3.25.5 
> i get the following error:
> [ant:groovydoc] Attempting to ignore error parsing Java source file: 
> se/alipsa/groovy/matrix/util/DataType.java
> [ant:groovydoc] Consider reporting the error to the Groovy project: 
> https://issues.apache.org/jira/browse/GROOVY
> [ant:groovydoc] ... or directly to the JavaParser project: 
> [https://github.com/javaparser/javaparser/issues]
> [ant:groovydoc] Error: (line 55,col 9) Use of patterns with instanceof is not 
> supported.
> The offending code is:
> public static String sqlType(Object value, int... varcharSize) {
> if (value instanceof BigDecimal bd) {
> return "DECIMAL(" + bd.precision() + "," + bd.scale() + ")";
> }
> return value == null ? null : sqlType(value.getClass(), varcharSize);
> }
>  
> Patterns with instanceof is supported by javaparser:
> {{@Test
> void testParseInstanceofPattern() {}}
>    {{String code =
>             """}}
> {{    }}{{class A {}}
>          {{public static String sqlType(Object value,        int... 
> varcharSize) {}}
>               {{if (value instanceof BigDecimal bd) {            return 
> "DECIMAL(" + bd.precision() +              ","  + bd.scale() + ")";}}
> {{      }}}
> {{      return value == null ? null : }}
> {{       }}{{sqlType(value.getClass(), varcharSize); }}
>          {{} }}
> {{  }""";}}
> {{  ParserConfiguration config = }}
> {{    new ParserConfiguration(); }}
> {{ config}}
> {{    }}{{.setLanguageLevel(LanguageLevel.JAVA_17);   JavaParser parser = new 
> JavaParser(config);   CompilationUnit cu = JavaParserAdapter }}
> {{   .of(parser).parse(code);}}
>   {{System.out.println(cu.toString());}}
> {{}}}
> {{}}
> {{This might mean that the groovy gradle plugin is not setting the language 
> level based on the tool chain e.g in my build.gradle i have:}}
> java {
>   toolchain {
>     languageVersion = JavaLanguageVersion.of(17)
>   }
> }{{{}{}}}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to