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 2021/08/09 06:51:00 UTC

[groovy] 02/02: GROOVY-10148: Groovy should support sealed classes (additional edge cases)

This is an automated email from the ASF dual-hosted git repository.

paulk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 53c568145b646fb0463e2b0979dce91d8c5cd1dc
Author: Paul King <pa...@asert.com.au>
AuthorDate: Mon Aug 9 16:50:53 2021 +1000

    GROOVY-10148: Groovy should support sealed classes (additional edge cases)
---
 .../org/codehaus/groovy/transform/NonSealedASTTransformation.java | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/src/main/java/org/codehaus/groovy/transform/NonSealedASTTransformation.java b/src/main/java/org/codehaus/groovy/transform/NonSealedASTTransformation.java
index 07aefe9..f633232 100644
--- a/src/main/java/org/codehaus/groovy/transform/NonSealedASTTransformation.java
+++ b/src/main/java/org/codehaus/groovy/transform/NonSealedASTTransformation.java
@@ -43,6 +43,14 @@ public class NonSealedASTTransformation extends AbstractASTTransformation {
 
         if (parent instanceof ClassNode) {
             ClassNode cNode = (ClassNode) parent;
+            if (cNode.isEnum()) {
+                addError("@" + NON_SEALED_CLASS.getSimpleName() + " not allowed for enum", cNode);
+                return;
+            }
+            if (cNode.isAnnotationDefinition()) {
+                addError("@" + NON_SEALED_CLASS.getSimpleName() + " not allowed for annotation definition", cNode);
+                return;
+            }
             cNode.putNodeMetaData(NON_SEALED_CLASS, Boolean.TRUE);
         }
     }