You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2018/03/28 14:55:42 UTC
groovy git commit: fix a binary compatibility regression since 2.4
Repository: groovy
Updated Branches:
refs/heads/GROOVY_2_5_X cd113c959 -> 50526057c
fix a binary compatibility regression since 2.4
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/50526057
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/50526057
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/50526057
Branch: refs/heads/GROOVY_2_5_X
Commit: 50526057c17932a286e5b78233221602a9aee41b
Parents: cd113c9
Author: Paul King <pa...@asert.com.au>
Authored: Thu Mar 29 00:55:06 2018 +1000
Committer: Paul King <pa...@asert.com.au>
Committed: Thu Mar 29 00:55:35 2018 +1000
----------------------------------------------------------------------
.../groovy/transform/builder/InitializerStrategy.java | 3 ++-
.../apache/groovy/ast/tools/AnnotatedNodeUtils.java | 13 ++++++++++---
.../org/apache/groovy/ast/tools/ClassNodeUtils.java | 3 ++-
.../groovy/transform/AbstractASTTransformation.java | 6 +++---
.../transform/NamedVariantASTTransformation.java | 8 ++++----
.../transform/TupleConstructorASTTransformation.java | 3 ++-
.../transform/stc/StaticTypeCheckingVisitor.java | 14 ++++++++------
subprojects/groovy-groovydoc/build.gradle | 1 +
8 files changed, 32 insertions(+), 19 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/50526057/src/main/groovy/groovy/transform/builder/InitializerStrategy.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/groovy/transform/builder/InitializerStrategy.java b/src/main/groovy/groovy/transform/builder/InitializerStrategy.java
index 8262115..6cd72bd 100644
--- a/src/main/groovy/groovy/transform/builder/InitializerStrategy.java
+++ b/src/main/groovy/groovy/transform/builder/InitializerStrategy.java
@@ -20,6 +20,7 @@ package groovy.transform.builder;
import groovy.transform.TupleConstructor;
import groovy.transform.Undefined;
+import org.apache.groovy.ast.tools.AnnotatedNodeUtils;
import org.codehaus.groovy.ast.AnnotatedNode;
import org.codehaus.groovy.ast.AnnotationNode;
import org.codehaus.groovy.ast.ClassHelper;
@@ -161,7 +162,7 @@ public class InitializerStrategy extends BuilderASTTransformation.AbstractBuilde
addFields(buildee, filteredFields, builder);
buildCommon(buildee, anno, filteredFields, builder);
- boolean needsConstructor = !transform.hasAnnotation(buildee, TUPLECONS_TYPE) || force;
+ boolean needsConstructor = !AnnotatedNodeUtils.hasAnnotation(buildee, TUPLECONS_TYPE) || force;
createBuildeeConstructors(transform, buildee, builder, filteredFields, needsConstructor, useSetters);
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/50526057/src/main/java/org/apache/groovy/ast/tools/AnnotatedNodeUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/groovy/ast/tools/AnnotatedNodeUtils.java b/src/main/java/org/apache/groovy/ast/tools/AnnotatedNodeUtils.java
index e378f99..fd60278 100644
--- a/src/main/java/org/apache/groovy/ast/tools/AnnotatedNodeUtils.java
+++ b/src/main/java/org/apache/groovy/ast/tools/AnnotatedNodeUtils.java
@@ -24,6 +24,8 @@ import org.codehaus.groovy.ast.AnnotationNode;
import org.codehaus.groovy.ast.ClassHelper;
import org.codehaus.groovy.ast.ClassNode;
+import java.util.List;
+
/**
* Utility class for working with AnnotatedNodes
*/
@@ -33,10 +35,15 @@ public class AnnotatedNodeUtils {
private AnnotatedNodeUtils() {
}
- public static void markAsGenerated(ClassNode cNode, AnnotatedNode aNode) {
- boolean shouldAnnotate = cNode.getModule() != null && cNode.getModule().getContext() != null;
+ public static void markAsGenerated(ClassNode containingClass, AnnotatedNode nodeToMark) {
+ boolean shouldAnnotate = containingClass.getModule() != null && containingClass.getModule().getContext() != null;
if (shouldAnnotate) {
- aNode.addAnnotation(new AnnotationNode(GENERATED_TYPE));
+ nodeToMark.addAnnotation(new AnnotationNode(GENERATED_TYPE));
}
}
+
+ public static boolean hasAnnotation(AnnotatedNode node, ClassNode annotation) {
+ List annots = node.getAnnotations(annotation);
+ return (annots != null && !annots.isEmpty());
+ }
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/50526057/src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java b/src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java
index f78e99d..51cab66 100644
--- a/src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java
+++ b/src/main/java/org/apache/groovy/ast/tools/ClassNodeUtils.java
@@ -37,6 +37,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import static org.apache.groovy.ast.tools.AnnotatedNodeUtils.hasAnnotation;
import static org.codehaus.groovy.ast.ClassHelper.boolean_TYPE;
/**
@@ -297,7 +298,7 @@ public class ClassNodeUtils {
List<ConstructorNode> declaredConstructors = cNode.getDeclaredConstructors();
for (ConstructorNode constructorNode : declaredConstructors) {
// allow constructors added by other transforms if flagged as Generated
- if (AbstractASTTransformation.hasAnnotation(constructorNode, GENERATED_TYPE)) {
+ if (hasAnnotation(constructorNode, GENERATED_TYPE)) {
continue;
}
if (xform != null) {
http://git-wip-us.apache.org/repos/asf/groovy/blob/50526057/src/main/java/org/codehaus/groovy/transform/AbstractASTTransformation.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/transform/AbstractASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/AbstractASTTransformation.java
index 947c7f1..fad53be 100644
--- a/src/main/java/org/codehaus/groovy/transform/AbstractASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/AbstractASTTransformation.java
@@ -18,6 +18,7 @@
*/
package org.codehaus.groovy.transform;
+import org.apache.groovy.ast.tools.AnnotatedNodeUtils;
import org.apache.groovy.ast.tools.MethodNodeUtils;
import org.codehaus.groovy.GroovyBugError;
import org.codehaus.groovy.ast.ASTNode;
@@ -259,9 +260,8 @@ public abstract class AbstractASTTransformation implements Opcodes, ASTTransform
return true;
}
- public static boolean hasAnnotation(AnnotatedNode node, ClassNode annotation) {
- List annots = node.getAnnotations(annotation);
- return (annots != null && !annots.isEmpty());
+ public boolean hasAnnotation(ClassNode node, ClassNode annotation) {
+ return AnnotatedNodeUtils.hasAnnotation(node, annotation);
}
public static List<String> tokenize(String rawExcludes) {
http://git-wip-us.apache.org/repos/asf/groovy/blob/50526057/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java
index 3a7e3ab..54008af 100644
--- a/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java
@@ -21,6 +21,7 @@ package org.codehaus.groovy.transform;
import groovy.transform.NamedDelegate;
import groovy.transform.NamedParam;
import groovy.transform.NamedVariant;
+import org.apache.groovy.ast.tools.AnnotatedNodeUtils;
import org.codehaus.groovy.ast.ASTNode;
import org.codehaus.groovy.ast.AnnotationNode;
import org.codehaus.groovy.ast.ClassHelper;
@@ -44,7 +45,6 @@ import org.codehaus.groovy.control.SourceUnit;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import java.util.Set;
import static org.apache.groovy.ast.tools.ClassNodeUtils.isInnerClass;
@@ -100,7 +100,7 @@ public class NamedVariantASTTransformation extends AbstractASTTransformation {
// first pass, just check for absence of annotations of interest
boolean annoFound = false;
for (Parameter fromParam : fromParams) {
- if (hasAnnotation(fromParam, NAMED_PARAM_TYPE) || hasAnnotation(fromParam, NAMED_DELEGATE_TYPE)) {
+ if (AnnotatedNodeUtils.hasAnnotation(fromParam, NAMED_PARAM_TYPE) || AnnotatedNodeUtils.hasAnnotation(fromParam, NAMED_DELEGATE_TYPE)) {
annoFound = true;
}
}
@@ -110,7 +110,7 @@ public class NamedVariantASTTransformation extends AbstractASTTransformation {
processDelegateParam(mNode, mapParam, args, propNames, fromParams[0]);
} else {
for (Parameter fromParam : fromParams) {
- if (hasAnnotation(fromParam, NAMED_PARAM_TYPE)) {
+ if (AnnotatedNodeUtils.hasAnnotation(fromParam, NAMED_PARAM_TYPE)) {
AnnotationNode namedParam = fromParam.getAnnotations(NAMED_PARAM_TYPE).get(0);
boolean required = memberHasValue(namedParam, "required", true);
if (getMemberValue(namedParam, "name") == null) {
@@ -134,7 +134,7 @@ public class NamedVariantASTTransformation extends AbstractASTTransformation {
args.addExpression(propX(varX(mapParam), name));
mapParam.addAnnotation(namedParam);
fromParam.getAnnotations().remove(namedParam);
- } else if (hasAnnotation(fromParam, NAMED_DELEGATE_TYPE)) {
+ } else if (AnnotatedNodeUtils.hasAnnotation(fromParam, NAMED_DELEGATE_TYPE)) {
if (!processDelegateParam(mNode, mapParam, args, propNames, fromParam)) return;
} else {
args.addExpression(varX(fromParam));
http://git-wip-us.apache.org/repos/asf/groovy/blob/50526057/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
index 5f7f4f2..c14075f 100644
--- a/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/TupleConstructorASTTransformation.java
@@ -23,6 +23,7 @@ import groovy.transform.CompilationUnitAware;
import groovy.transform.MapConstructor;
import groovy.transform.TupleConstructor;
import groovy.transform.options.PropertyHandler;
+import org.apache.groovy.ast.tools.AnnotatedNodeUtils;
import org.codehaus.groovy.ast.ASTNode;
import org.codehaus.groovy.ast.AnnotatedNode;
import org.codehaus.groovy.ast.AnnotationNode;
@@ -253,7 +254,7 @@ public class TupleConstructorASTTransformation extends AbstractASTTransformation
Collections.sort(params, includeComparator);
}
- boolean hasMapCons = hasAnnotation(cNode, MapConstructorASTTransformation.MY_TYPE);
+ boolean hasMapCons = AnnotatedNodeUtils.hasAnnotation(cNode, MapConstructorASTTransformation.MY_TYPE);
int modifiers = getVisibility(anno, cNode, ConstructorNode.class, ACC_PUBLIC);
ConstructorNode consNode = new ConstructorNode(modifiers, params.toArray(new Parameter[params.size()]), ClassNode.EMPTY_ARRAY, body);
markAsGenerated(cNode, consNode);
http://git-wip-us.apache.org/repos/asf/groovy/blob/50526057/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
index d200fc5..b3a5add 100644
--- a/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
+++ b/src/main/java/org/codehaus/groovy/transform/stc/StaticTypeCheckingVisitor.java
@@ -4369,13 +4369,15 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
final Parameter[] parameters = closureExpression.getParameters();
String name = parameter.getName();
- if (parameters.length == 0) {
- return "it".equals(name) && closureParamTypes.length != 0 ? closureParamTypes[0] : null;
- }
+ if (parameters != null) {
+ if (parameters.length == 0) {
+ return "it".equals(name) && closureParamTypes.length != 0 ? closureParamTypes[0] : null;
+ }
- for (int index = 0; index < parameters.length; index++) {
- if (name.equals(parameters[index].getName())) {
- return closureParamTypes.length > index ? closureParamTypes[index] : null;
+ for (int index = 0; index < parameters.length; index++) {
+ if (name.equals(parameters[index].getName())) {
+ return closureParamTypes.length > index ? closureParamTypes[index] : null;
+ }
}
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/50526057/subprojects/groovy-groovydoc/build.gradle
----------------------------------------------------------------------
diff --git a/subprojects/groovy-groovydoc/build.gradle b/subprojects/groovy-groovydoc/build.gradle
index 9338cfb..67a7030 100644
--- a/subprojects/groovy-groovydoc/build.gradle
+++ b/subprojects/groovy-groovydoc/build.gradle
@@ -20,6 +20,7 @@ dependencies {
compile rootProject
testCompile rootProject.sourceSets.test.runtimeClasspath
compile project(':groovy-templates')
+ runtime project(':groovy-dateutil')
testCompile project(':groovy-test')
testCompile project(':groovy-ant')
testCompile "org.apache.ant:ant-testutil:$antVersion"