You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2021/08/07 13:34:57 UTC
[groovy] branch master updated: Support Java17
This is an automated email from the ASF dual-hosted git repository.
sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git
The following commit(s) were added to refs/heads/master by this push:
new 225a49e Support Java17
225a49e is described below
commit 225a49e17892da0c234760cb2e1438ddc8e86f48
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sat Aug 7 21:06:57 2021 +0800
Support Java17
---
.travis.yml | 2 ++
src/main/java/org/codehaus/groovy/ast/ClassNode.java | 5 +++--
.../org/codehaus/groovy/transform/DelegateASTTransformation.java | 6 +++++-
3 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/.travis.yml b/.travis.yml
index f6a28cd..05a8d44 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -25,6 +25,8 @@ install:
matrix:
include:
+ - env: BC='indy' FEATURE='17' TARGET_JAVA_HOME="/home/travis/openjdk$FEATURE" LICENSE='GPL'
+ jdk: openjdk11
- env: BC='indy' FEATURE='16' TARGET_JAVA_HOME="/home/travis/openjdk$FEATURE" LICENSE='GPL'
jdk: openjdk11
- env: BC='indy'
diff --git a/src/main/java/org/codehaus/groovy/ast/ClassNode.java b/src/main/java/org/codehaus/groovy/ast/ClassNode.java
index 4b7091b..e7bf99a 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassNode.java
@@ -30,6 +30,7 @@ import org.codehaus.groovy.ast.stmt.ExpressionStatement;
import org.codehaus.groovy.ast.stmt.Statement;
import org.codehaus.groovy.ast.tools.ParameterUtils;
import org.codehaus.groovy.control.CompilePhase;
+import org.codehaus.groovy.reflection.ReflectionUtils;
import org.codehaus.groovy.transform.ASTTransformation;
import org.codehaus.groovy.transform.GroovyASTTransformation;
import org.codehaus.groovy.vmplugin.VMPluginFactory;
@@ -164,7 +165,7 @@ public class ClassNode extends AnnotatedNode {
private ClassNode superClass;
protected boolean isPrimaryNode;
protected List<InnerClassNode> innerClasses;
- final private List<ClassNode> permittedSubclasses = new ArrayList<>();
+ private final List<ClassNode> permittedSubclasses = new ArrayList<>(4);
private List<AnnotationNode> typeAnnotations = Collections.emptyList();
/**
@@ -1349,7 +1350,7 @@ public class ClassNode extends AnnotatedNode {
}
public boolean isSealed() {
- return !getAnnotations(SEALED_TYPE).isEmpty() || !permittedSubclasses.isEmpty();
+ return !getAnnotations(SEALED_TYPE).isEmpty() || !permittedSubclasses.isEmpty() || (null != clazz && ReflectionUtils.isSealed(clazz));
}
public boolean isResolved() {
diff --git a/src/main/java/org/codehaus/groovy/transform/DelegateASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/DelegateASTTransformation.java
index f6e79e5..1895760 100644
--- a/src/main/java/org/codehaus/groovy/transform/DelegateASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/DelegateASTTransformation.java
@@ -47,6 +47,7 @@ import java.util.List;
import java.util.ListIterator;
import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
import static java.util.stream.Collectors.toSet;
import static org.apache.groovy.ast.tools.ClassNodeUtils.addGeneratedMethod;
@@ -197,7 +198,10 @@ public class DelegateASTTransformation extends AbstractASTTransformation {
if (skipInterfaces) return;
- final Set<ClassNode> allInterfaces = getInterfacesAndSuperInterfaces(delegate.type);
+ final Set<ClassNode> allInterfaces =
+ getInterfacesAndSuperInterfaces(delegate.type).stream()
+ .filter(c -> !c.redirect().isSealed())
+ .collect(Collectors.toSet());
final Set<ClassNode> ownerIfaces = delegate.owner.getAllInterfaces();
Map<String,ClassNode> genericsSpec = createGenericsSpec(delegate.owner);
genericsSpec = createGenericsSpec(delegate.type, genericsSpec);