Skip to content

Commit a999d61

Browse files
committed
GROOVY-11770: StackOverflowError processing generics for kubernetes-client library
1 parent 3f57258 commit a999d61

1 file changed

Lines changed: 6 additions & 1 deletion

File tree

src/main/java/org/codehaus/groovy/ast/tools/WideningCategories.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -269,11 +269,16 @@ private static ClassNode parameterizeLowestUpperBound(final ClassNode lub, final
269269
ClassNode t1 = upperBound(agt[i]);
270270
ClassNode t2 = upperBound(bgt[i]);
271271
ClassNode basicType;
272+
// TODO GROOVY-11770: we should add more cases where we can determine the correct LUB
272273
if (areEqualWithGenerics(t1, isPrimitiveType(a)?getWrapper(a):a) && areEqualWithGenerics(t2, isPrimitiveType(b)?getWrapper(b):b)) {
273274
// "String implements Comparable<String>" and "StringBuffer implements Comparable<StringBuffer>"
274275
basicType = fallback; // do not loop
275276
} else {
276-
basicType = lowestUpperBound(t1, t2);
277+
try {
278+
basicType = lowestUpperBound(t1, t2);
279+
} catch (StackOverflowError ignore) {
280+
basicType = fallback; // best we can do for now
281+
}
277282
}
278283
if (agt[i].isWildcard() || bgt[i].isWildcard() || !t1.equals(t2)) {
279284
lubGTs[i] = GenericsUtils.buildWildcardType(basicType);

0 commit comments

Comments
 (0)