You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2022/02/16 17:10:05 UTC
[groovy] branch GROOVY-10484 updated (8e4d7d8 -> bd85a55)
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a change to branch GROOVY-10484
in repository https://gitbox.apache.org/repos/asf/groovy.git.
discard 8e4d7d8 GROOVY-9158, GROOVY-10176, GROOVY-10484: NamedParam checking enhancement
add 45e9440 GROOVY-10485: Bump jarjar to 1.8.1 (build dependency)
add ac5599f GROOVY-10486: Bump gradle versions plugin to 0.42.0 (build dependency)
add a2fbcd3 GROOVY-10487: Bump gson (test dependency) to 2.9.0
add a4e1724 GROOVY-10488: Bump json-unit (test dependency) version to 2.31.0
add 58e4dd5 GROOVY-10489: Bump checkstyle to 9.3 (build dependency)
add 0001ae6 GROOVY-10490: Bump xstream to 1.4.19
add 1c01e79 update verification metadata info
add 42410f0 update verification metadata info
add 02ebb32 GROOVY-10290: Dynamic Groovy code in Gradle doesn't compile because of $getLookup() method is not static
add 20d7052 GROOVY-10491: Bump jqwik to 1.6.4 (test dependency)
add cfc4a73 GROOVY-10492: Bump picocli to 4.6.3
add a0265a6 GROOVY-10493: Bump slf4j to 1.7.36 (test dependency)
add 59b5aaf add extra @PlatformLog doco
add 4243407 Trivial refactoring: inline variable
add 9e06219 GROOVY-9158, GROOVY-10176: `@NamedVariant`: refacor and add test cases
new bd85a55 GROOVY-10484: `@NamedVariant`: bind `@NamedParam` into `@NamedParams`
This update added new revisions after undoing existing revisions.
That is to say, some revisions that were in the old version of the
branch are not in the new version. This situation occurs
when a user --force pushes a change and generates a repository
containing something like this:
* -- * -- B -- O -- O -- O (8e4d7d8)
\
N -- N -- N refs/heads/GROOVY-10484 (bd85a55)
You should already have received notification emails for all of the O
revisions, and so the following emails describe only the N revisions
from the common base, B.
Any revisions marked "omit" are not gone; other references still
refer to them. Any revisions marked "discard" are gone forever.
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
build.gradle | 2 +-
gradle/verification-metadata.xml | 45 ++++----------
.../groovy/tools/javac/JavaStubGenerator.java | 2 +-
.../transform/NamedVariantASTTransformation.java | 50 ++++++++--------
src/spec/doc/core-metaprogramming.adoc | 69 ++++++++++++++++++----
.../{Groovy6302.groovy => Groovy10290.groovy} | 29 ++++-----
.../transform/NamedVariantTransformTest.groovy | 36 +++++++++++
subprojects/groovy-json/build.gradle | 4 +-
subprojects/groovy-test-junit5/build.gradle | 2 +-
.../src/main/java/groovy/xml/XmlNodePrinter.java | 3 +-
versions.properties | 10 ++--
11 files changed, 155 insertions(+), 97 deletions(-)
copy src/test/org/codehaus/groovy/tools/stubgenerator/{Groovy6302.groovy => Groovy10290.groovy} (59%)
[groovy] 01/01: GROOVY-10484: `@NamedVariant`: bind `@NamedParam` into `@NamedParams`
Posted by em...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
emilles pushed a commit to branch GROOVY-10484
in repository https://gitbox.apache.org/repos/asf/groovy.git
commit bd85a55cd85c09aeb8c4f82298bfabe621809722
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Wed Feb 16 11:09:50 2022 -0600
GROOVY-10484: `@NamedVariant`: bind `@NamedParam` into `@NamedParams`
---
.../transform/NamedVariantASTTransformation.java | 14 ++++++++++++++
.../transform/NamedVariantTransformTest.groovy | 21 ++++++++++++++++++++-
2 files changed, 34 insertions(+), 1 deletion(-)
diff --git a/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java
index 2d65dc5..adcad84 100644
--- a/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/NamedVariantASTTransformation.java
@@ -20,6 +20,7 @@ package org.codehaus.groovy.transform;
import groovy.transform.NamedDelegate;
import groovy.transform.NamedParam;
+import groovy.transform.NamedParams;
import groovy.transform.NamedVariant;
import org.apache.groovy.ast.tools.AnnotatedNodeUtils;
import org.codehaus.groovy.ast.ASTNode;
@@ -29,6 +30,7 @@ import org.codehaus.groovy.ast.ConstructorNode;
import org.codehaus.groovy.ast.MethodNode;
import org.codehaus.groovy.ast.Parameter;
import org.codehaus.groovy.ast.PropertyNode;
+import org.codehaus.groovy.ast.expr.AnnotationConstantExpression;
import org.codehaus.groovy.ast.expr.ArgumentListExpression;
import org.codehaus.groovy.ast.expr.Expression;
import org.codehaus.groovy.ast.expr.MapEntryExpression;
@@ -46,6 +48,7 @@ import java.util.List;
import java.util.Optional;
import java.util.Set;
+import static java.util.stream.Collectors.toList;
import static org.apache.groovy.ast.tools.ClassNodeUtils.addGeneratedConstructor;
import static org.apache.groovy.ast.tools.ClassNodeUtils.addGeneratedMethod;
import static org.apache.groovy.ast.tools.ClassNodeUtils.isInnerClass;
@@ -69,6 +72,7 @@ import static org.codehaus.groovy.ast.tools.GeneralUtils.elvisX;
import static org.codehaus.groovy.ast.tools.GeneralUtils.entryX;
import static org.codehaus.groovy.ast.tools.GeneralUtils.getAllProperties;
import static org.codehaus.groovy.ast.tools.GeneralUtils.list2args;
+import static org.codehaus.groovy.ast.tools.GeneralUtils.listX;
import static org.codehaus.groovy.ast.tools.GeneralUtils.mapX;
import static org.codehaus.groovy.ast.tools.GeneralUtils.param;
import static org.codehaus.groovy.ast.tools.GeneralUtils.plusX;
@@ -136,9 +140,19 @@ public class NamedVariantASTTransformation extends AbstractASTTransformation {
}
}
}
+ collateNamedParamAnnotations(mapParam); // GROOVY-10484
createMapVariant(this, mNode, anno, mapParam, genParams, cNode, inner, args, propNames);
}
+ private static void collateNamedParamAnnotations(final Parameter mapParam) {
+ AnnotationNode namedParams = new AnnotationNode(make(NamedParams.class));
+ List<AnnotationNode> mapParamAnnotations = mapParam.getAnnotations();
+ namedParams.addMember("value", listX(mapParamAnnotations.stream()
+ .map(AnnotationConstantExpression::new).collect(toList())));
+ mapParamAnnotations.clear();
+ mapParamAnnotations.add(namedParams);
+ }
+
static boolean processImplicitNamedParam(final ErrorCollecting xform, final MethodNode mNode, final Parameter mapParam, final BlockStatement inner, final ArgumentListExpression args, final List<String> propNames, final Parameter fromParam, final boolean coerce) {
String name = fromParam.getName();
ClassNode type = fromParam.getType();
diff --git a/src/test/org/codehaus/groovy/transform/NamedVariantTransformTest.groovy b/src/test/org/codehaus/groovy/transform/NamedVariantTransformTest.groovy
index 2ec9135..558699b 100644
--- a/src/test/org/codehaus/groovy/transform/NamedVariantTransformTest.groovy
+++ b/src/test/org/codehaus/groovy/transform/NamedVariantTransformTest.groovy
@@ -254,7 +254,7 @@ final class NamedVariantTransformTest {
'''
}
- @Test
+ @Test // GROOVY-10484
void testNamedParamRequiredVersusOptional() {
def err = shouldFail '''
import groovy.transform.*
@@ -271,6 +271,25 @@ final class NamedVariantTransformTest {
m(alpha: 123)
'''
assert err =~ /Missing required named argument 'color'/
+
+ err = shouldFail '''
+ import groovy.transform.*
+
+ class Color {
+ int r, g, b
+ }
+
+ @NamedVariant
+ String m(Color color, int alpha = 0) {
+ return [color, alpha].join(' ')
+ }
+
+ @TypeChecked
+ void test() {
+ m(alpha: 123)
+ }
+ '''
+ assert err =~ /required named param 'color' not found/
}
@Test // GROOVY-9183