From dcc0ec6d3d12565704fd9b3be7bfd60bb1abec98 Mon Sep 17 00:00:00 2001 From: Knut Wannheden Date: Sat, 23 Nov 2024 21:43:12 +0100 Subject: [PATCH] Fix parsing of nested generics in Groovy (#4707) * Fix parsing of nested generics in Groovy Fixes: #4702 * Polish --- .../groovy/GroovyParserVisitor.java | 2 +- .../openrewrite/groovy/tree/BinaryTest.java | 22 +++++++++---------- .../groovy/tree/VariableDeclarationsTest.java | 7 ++++++ 3 files changed, 19 insertions(+), 12 deletions(-) diff --git a/rewrite-groovy/src/main/java/org/openrewrite/groovy/GroovyParserVisitor.java b/rewrite-groovy/src/main/java/org/openrewrite/groovy/GroovyParserVisitor.java index c62310c1871..6e0607621ae 100644 --- a/rewrite-groovy/src/main/java/org/openrewrite/groovy/GroovyParserVisitor.java +++ b/rewrite-groovy/src/main/java/org/openrewrite/groovy/GroovyParserVisitor.java @@ -2585,7 +2585,7 @@ private Expression visitTypeParameterization(GenericsType genericsType) { return new J.Empty(randomId(), prefix, Markers.EMPTY); } cursor = saveCursor; - return typeTree(null) + return typeTree(genericsType.getType()) .withType(typeMapping.type(genericsType)); } diff --git a/rewrite-groovy/src/test/java/org/openrewrite/groovy/tree/BinaryTest.java b/rewrite-groovy/src/test/java/org/openrewrite/groovy/tree/BinaryTest.java index fc739904edf..2d2675bfe72 100644 --- a/rewrite-groovy/src/test/java/org/openrewrite/groovy/tree/BinaryTest.java +++ b/rewrite-groovy/src/test/java/org/openrewrite/groovy/tree/BinaryTest.java @@ -207,18 +207,18 @@ void stringMultipliedInParentheses() { void extraParensAroundInfixOperator() { rewriteRun( groovy( - """ - def foo(Map map) { - ((map.containsKey("foo")) - && ((map.get("foo")).equals("bar"))) - } - def timestamp(int hours, int minutes, int seconds) { - (hours) * 60 * 60 + (minutes * 60) + seconds - } - def differenceInDays(int time) { - return (int) ((time)/(1000*60*60*24)) - } """ + def foo(Map map) { + ((map.containsKey("foo")) + && ((map.get("foo")).equals("bar"))) + } + def timestamp(int hours, int minutes, int seconds) { + (hours) * 60 * 60 + (minutes * 60) + seconds + } + def differenceInDays(int time) { + return (int) ((time)/(1000*60*60*24)) + } + """ ) ); } diff --git a/rewrite-groovy/src/test/java/org/openrewrite/groovy/tree/VariableDeclarationsTest.java b/rewrite-groovy/src/test/java/org/openrewrite/groovy/tree/VariableDeclarationsTest.java index 5e16609e9b5..3915c6c39f8 100644 --- a/rewrite-groovy/src/test/java/org/openrewrite/groovy/tree/VariableDeclarationsTest.java +++ b/rewrite-groovy/src/test/java/org/openrewrite/groovy/tree/VariableDeclarationsTest.java @@ -49,6 +49,13 @@ void finalKeyword() { ); } + @Test + void nestedGenerics() { + rewriteRun( + groovy("final map = new HashMap>()") + ); + } + @Test void singleVariableDeclaration() { rewriteRun(