Repository: groovy Updated Branches: refs/heads/master f4d5970f5 -> 7e6ff2833
Make EmptyExpression.INSTANCE immutable Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/7e6ff283 Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/7e6ff283 Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/7e6ff283 Branch: refs/heads/master Commit: 7e6ff28337c2d30e6e5bdeec4460a8ccbdb52792 Parents: f4d5970 Author: sunlan <[email protected]> Authored: Sat Jun 24 16:01:08 2017 +0800 Committer: sunlan <[email protected]> Committed: Sat Jun 24 16:01:08 2017 +0800 ---------------------------------------------------------------------- .../groovy/ast/expr/EmptyExpression.java | 40 +++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/7e6ff283/src/main/org/codehaus/groovy/ast/expr/EmptyExpression.java ---------------------------------------------------------------------- diff --git a/src/main/org/codehaus/groovy/ast/expr/EmptyExpression.java b/src/main/org/codehaus/groovy/ast/expr/EmptyExpression.java index 4de4193..6c3daf1 100644 --- a/src/main/org/codehaus/groovy/ast/expr/EmptyExpression.java +++ b/src/main/org/codehaus/groovy/ast/expr/EmptyExpression.java @@ -18,8 +18,12 @@ */ package org.codehaus.groovy.ast.expr; +import org.codehaus.groovy.ast.AnnotationNode; +import org.codehaus.groovy.ast.ClassNode; import org.codehaus.groovy.ast.GroovyCodeVisitor; +import java.util.List; + /** * This class is a place holder for an empty expression. * Empty expression are used in closures lists like (;). During @@ -30,7 +34,41 @@ import org.codehaus.groovy.ast.GroovyCodeVisitor; * @see org.codehaus.groovy.ast.stmt.EmptyStatement */ public class EmptyExpression extends Expression { - public static final EmptyExpression INSTANCE = new EmptyExpression(); + public static final EmptyExpression INSTANCE = new EmptyExpression() { + @Override + public void setType(ClassNode t) { + throw createUnsupportedOperationException(); + } + + @Override + public void addAnnotation(AnnotationNode value) { + throw createUnsupportedOperationException(); + } + + @Override + public void addAnnotations(List<AnnotationNode> annotations) { + throw createUnsupportedOperationException(); + } + + @Override + public void setSynthetic(boolean synthetic) { + throw createUnsupportedOperationException(); + } + + @Override + public void setDeclaringClass(ClassNode declaringClass) { + throw createUnsupportedOperationException(); + } + + @Override + public void setHasNoRealSourcePosition(boolean value) { + throw createUnsupportedOperationException(); + } + + private UnsupportedOperationException createUnsupportedOperationException() { + return new UnsupportedOperationException("EmptyExpression.INSTANCE is immutable"); + } + }; public Expression transformExpression(ExpressionTransformer transformer) { return this;
