What version of OpenRewrite are you using?
I am using
- OpenRewrite libraries via a custom Java runner (not rewrite Gradle/Maven plugin)
- Failing run:
org.openrewrite.recipe:rewrite-spring:6.28.2
- this resolves
org.openrewrite:rewrite-bom:8.77.2
- includes
rewrite-gradle:8.77.2 and rewrite-groovy:8.77.2
- Retest run:
org.openrewrite.recipe:rewrite-spring:6.30.1
- this resolves
org.openrewrite:rewrite-bom:8.80.1
- includes
rewrite-gradle:8.80.1 and rewrite-groovy:8.80.1
- Project wrapper is Gradle 8.7 (gradle-wrapper.properties), but Gradle tasks are not invoked in this repro; only parsing of build.gradle is performed by OpenRewrite libraries.
- Java: 17
I also retested with:
org.openrewrite.recipe:rewrite-spring:6.30.1 (same runner + same recipe class)
The failure still reproduces (different out-of-range index value).
How are you running OpenRewrite?
I am running OpenRewrite through a custom CLI container around OpenRewrite parser/recipe execution (not via rewrite Gradle plugin task directly).
What is the smallest, simplest way to reproduce the problem?
A reduced build.gradle-style Groovy snippet that reproduces the parser crash:
class SwaggerInfo {
final String swaggerPath, packagePath
def configOptions = [:]
def globalProperties = [:]
SwaggerInfo(String swaggerPath, String packagePath, Map configOptions, Map globalProperties) {
this.swaggerPath = swaggerPath
this.packagePath = packagePath
this.configOptions = configOptions
this.globalProperties = globalProperties
}
}
def swaggerList = [
new SwaggerInfo("a/a.json", "a", null, [apis: "A", models: "M1,M2"]),
new SwaggerInfo("b/b.json", "b", null, null),
]
Observed minimization behavior:
- Keeping typed constructor params + class fields => parser crashes.
- Making constructor params untyped => parser succeeds.
- Keeping typed constructor params but removing class fields => parser succeeds.
What did you expect to see?
Successful parsing of the Gradle Groovy script (no GroovyParsingException).
What did you see instead?
GroovyParsingException with StringIndexOutOfBoundsException in GroovyParserVisitor during constructor-call/argument-list handling.
Production failure (rewrite-spring:6.28.2) reported:
- String index out of range: 5003 (source file length was 5003 bytes)
Retest (rewrite-spring:6.30.1) reported:
What is the full stack trace of any errors you encountered?
Production (rewrite-spring:6.28.2):
java.lang.RuntimeException: org.openrewrite.groovy.GroovyParsingException: Failed to parse build-client-swagger.gradle, cursor position likely inaccurate.
at io.iw2rmb.ploy.orwcli.RewriteCliMain.lambda$run$0(RewriteCliMain.java:173)
at org.openrewrite.groovy.GroovyParser.lambda$parseInputs$3(GroovyParser.java:160)
...
Caused by: org.openrewrite.groovy.GroovyParsingException: Failed to parse build-client-swagger.gradle, cursor position likely inaccurate.
at org.openrewrite.groovy.GroovyParserVisitor.visit(GroovyParserVisitor.java:217)
at org.openrewrite.groovy.GroovyParser.lambda$parseInputs$3(GroovyParser.java:149)
... 30 more
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 5003
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
at java.base/java.lang.String.charAt(String.java:1517)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.visitArgumentlistExpression(GroovyParserVisitor.java:946)
at org.codehaus.groovy.ast.expr.ArgumentListExpression.visit(ArgumentListExpression.java:73)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.doVisit(GroovyParserVisitor.java:822)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.lambda$visitConstructorCallExpression$9(GroovyParserVisitor.java:1691)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.insideParentheses(GroovyParserVisitor.java:863)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.visitConstructorCallExpression(GroovyParserVisitor.java:1667)
at org.codehaus.groovy.ast.expr.ConstructorCallExpression.visit(ConstructorCallExpression.java:44)
...
Retest (rewrite-spring:6.30.1):
java.lang.RuntimeException: org.openrewrite.groovy.GroovyParsingException: Failed to parse build-client-swagger.gradle, cursor position likely inaccurate.
at io.iw2rmb.ploy.orwcli.RewriteCliMain.lambda$run$0(RewriteCliMain.java:173)
at org.openrewrite.groovy.GroovyParser.lambda$parseInputs$3(GroovyParser.java:160)
...
Caused by: org.openrewrite.groovy.GroovyParsingException: Failed to parse build-client-swagger.gradle, cursor position likely inaccurate.
at org.openrewrite.groovy.GroovyParserVisitor.visit(GroovyParserVisitor.java:217)
at org.openrewrite.groovy.GroovyParser.lambda$parseInputs$3(GroovyParser.java:149)
... 29 more
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 4438
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
at java.base/java.lang.String.charAt(String.java:1517)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.visitRightPadded(GroovyParserVisitor.java:835)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.lambda$visitMapExpression$14(GroovyParserVisitor.java:2026)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.insideParentheses(GroovyParserVisitor.java:863)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.visitMapExpression(GroovyParserVisitor.java:2017)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.visitArgumentlistExpression(GroovyParserVisitor.java:995)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.lambda$visitConstructorCallExpression$9(GroovyParserVisitor.java:1691)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.visitConstructorCallExpression(GroovyParserVisitor.java:1667)
...
Are you interested in contributing a fix to OpenRewrite?
I can help validate snapshots / candidate fixes quickly and provide additional minimized reproducer variants, but I am not planning to
implement the parser fix myself right now.
What version of OpenRewrite are you using?
I am using
org.openrewrite.recipe:rewrite-spring:6.28.2org.openrewrite:rewrite-bom:8.77.2rewrite-gradle:8.77.2andrewrite-groovy:8.77.2org.openrewrite.recipe:rewrite-spring:6.30.1org.openrewrite:rewrite-bom:8.80.1rewrite-gradle:8.80.1andrewrite-groovy:8.80.1I also retested with:
org.openrewrite.recipe:rewrite-spring:6.30.1(same runner + same recipe class)The failure still reproduces (different out-of-range index value).
How are you running OpenRewrite?
I am running OpenRewrite through a custom CLI container around OpenRewrite parser/recipe execution (not via rewrite Gradle plugin task directly).
What is the smallest, simplest way to reproduce the problem?
A reduced build.gradle-style Groovy snippet that reproduces the parser crash:
class SwaggerInfo {
final String swaggerPath, packagePath
def configOptions = [:]
def globalProperties = [:]
}
def swaggerList = [
new SwaggerInfo("a/a.json", "a", null, [apis: "A", models: "M1,M2"]),
new SwaggerInfo("b/b.json", "b", null, null),
]
Observed minimization behavior:
What did you expect to see?
Successful parsing of the Gradle Groovy script (no GroovyParsingException).
What did you see instead?
GroovyParsingException with StringIndexOutOfBoundsException in GroovyParserVisitor during constructor-call/argument-list handling.
Production failure (rewrite-spring:6.28.2) reported:
Retest (rewrite-spring:6.30.1) reported:
String index out of range: 4438
This appears different from GroovyParser should allow the usage of generic types in statically-typed fields of a Gradle build script without a classpath reference #4915 (which is about NoClassDefFoundError: org.gradle.api.internal.ConventionTask).
What is the full stack trace of any errors you encountered?
Production (rewrite-spring:6.28.2):
java.lang.RuntimeException: org.openrewrite.groovy.GroovyParsingException: Failed to parse build-client-swagger.gradle, cursor position likely inaccurate.
at io.iw2rmb.ploy.orwcli.RewriteCliMain.lambda$run$0(RewriteCliMain.java:173)
at org.openrewrite.groovy.GroovyParser.lambda$parseInputs$3(GroovyParser.java:160)
...
Caused by: org.openrewrite.groovy.GroovyParsingException: Failed to parse build-client-swagger.gradle, cursor position likely inaccurate.
at org.openrewrite.groovy.GroovyParserVisitor.visit(GroovyParserVisitor.java:217)
at org.openrewrite.groovy.GroovyParser.lambda$parseInputs$3(GroovyParser.java:149)
... 30 more
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 5003
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
at java.base/java.lang.String.charAt(String.java:1517)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.visitArgumentlistExpression(GroovyParserVisitor.java:946)
at org.codehaus.groovy.ast.expr.ArgumentListExpression.visit(ArgumentListExpression.java:73)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.doVisit(GroovyParserVisitor.java:822)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.lambda$visitConstructorCallExpression$9(GroovyParserVisitor.java:1691)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.insideParentheses(GroovyParserVisitor.java:863)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.visitConstructorCallExpression(GroovyParserVisitor.java:1667)
at org.codehaus.groovy.ast.expr.ConstructorCallExpression.visit(ConstructorCallExpression.java:44)
...
Retest (rewrite-spring:6.30.1):
java.lang.RuntimeException: org.openrewrite.groovy.GroovyParsingException: Failed to parse build-client-swagger.gradle, cursor position likely inaccurate.
at io.iw2rmb.ploy.orwcli.RewriteCliMain.lambda$run$0(RewriteCliMain.java:173)
at org.openrewrite.groovy.GroovyParser.lambda$parseInputs$3(GroovyParser.java:160)
...
Caused by: org.openrewrite.groovy.GroovyParsingException: Failed to parse build-client-swagger.gradle, cursor position likely inaccurate.
at org.openrewrite.groovy.GroovyParserVisitor.visit(GroovyParserVisitor.java:217)
at org.openrewrite.groovy.GroovyParser.lambda$parseInputs$3(GroovyParser.java:149)
... 29 more
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 4438
at java.base/java.lang.StringLatin1.charAt(StringLatin1.java:48)
at java.base/java.lang.String.charAt(String.java:1517)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.visitRightPadded(GroovyParserVisitor.java:835)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.lambda$visitMapExpression$14(GroovyParserVisitor.java:2026)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.insideParentheses(GroovyParserVisitor.java:863)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.visitMapExpression(GroovyParserVisitor.java:2017)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.visitArgumentlistExpression(GroovyParserVisitor.java:995)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.lambda$visitConstructorCallExpression$9(GroovyParserVisitor.java:1691)
at org.openrewrite.groovy.GroovyParserVisitor$RewriteGroovyVisitor.visitConstructorCallExpression(GroovyParserVisitor.java:1667)
...
Are you interested in contributing a fix to OpenRewrite?
I can help validate snapshots / candidate fixes quickly and provide additional minimized reproducer variants, but I am not planning to
implement the parser fix myself right now.