This is an automated email from the ASF dual-hosted git repository. emilles pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/groovy.git
commit a219aca034911057aa44c2644acac171b540a327 Author: Eric Milles <eric.mil...@thomsonreuters.com> AuthorDate: Sat Nov 9 10:14:50 2019 -0600 minor edits for readability --- .../codehaus/groovy/ast/tools/GenericsUtils.java | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java index 0644ed9..0ff33de 100644 --- a/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java +++ b/src/main/java/org/codehaus/groovy/ast/tools/GenericsUtils.java @@ -370,28 +370,31 @@ public class GenericsUtils { newgTypes = new GenericsType[oldgTypes.length]; for (int i = 0; i < newgTypes.length; i++) { GenericsType oldgType = oldgTypes[i]; - if (oldgType.isPlaceholder()) { - if (genericsSpec.get(oldgType.getName()) != null) { - newgTypes[i] = new GenericsType(genericsSpec.get(oldgType.getName())); - } else { - newgTypes[i] = new GenericsType(ClassHelper.OBJECT_TYPE); - } - } else if (oldgType.isWildcard()) { - ClassNode oldLower = oldgType.getLowerBound(); - ClassNode lower = oldLower != null ? correctToGenericsSpecRecurse(genericsSpec, oldLower, exclusions) : null; + if (oldgType.isWildcard()) { ClassNode[] oldUpper = oldgType.getUpperBounds(); ClassNode[] upper = null; if (oldUpper != null) { + // correct "? extends T" or "? extends T & I" upper = new ClassNode[oldUpper.length]; for (int j = 0; j < oldUpper.length; j++) { upper[j] = correctToGenericsSpecRecurse(genericsSpec, oldUpper[j], exclusions); } } + ClassNode oldLower = oldgType.getLowerBound(); + ClassNode lower = null; + if (oldLower != null) { + // correct "? super T" + lower = correctToGenericsSpecRecurse(genericsSpec, oldLower, exclusions); + } GenericsType fixed = new GenericsType(oldgType.getType(), upper, lower); fixed.setName(oldgType.getName()); fixed.setWildcard(true); newgTypes[i] = fixed; + } else if (oldgType.isPlaceholder()) { + // correct "T" + newgTypes[i] = new GenericsType(genericsSpec.getOrDefault(oldgType.getName(), ClassHelper.OBJECT_TYPE)); } else { + // correct "List<T>", etc. newgTypes[i] = new GenericsType(correctToGenericsSpecRecurse(genericsSpec, correctToGenericsSpec(genericsSpec, oldgType), exclusions)); } }