Make EmptyStatement.INSTANCE immutable (cherry picked from commit 014273f)
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/066237a3 Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/066237a3 Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/066237a3 Branch: refs/heads/GROOVY_2_5_X Commit: 066237a3de849dc39e0d7f9381879f0e27a77e65 Parents: 22204ca Author: sunlan <[email protected]> Authored: Sat Jun 24 16:27:27 2017 +0800 Committer: sunlan <[email protected]> Committed: Sat Jun 24 16:43:48 2017 +0800 ---------------------------------------------------------------------- .../groovy/ast/stmt/EmptyStatement.java | 70 +++++++++++++++++++- 1 file changed, 69 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/groovy/blob/066237a3/src/main/org/codehaus/groovy/ast/stmt/EmptyStatement.java ---------------------------------------------------------------------- diff --git a/src/main/org/codehaus/groovy/ast/stmt/EmptyStatement.java b/src/main/org/codehaus/groovy/ast/stmt/EmptyStatement.java index 3b9800d..740cb55 100644 --- a/src/main/org/codehaus/groovy/ast/stmt/EmptyStatement.java +++ b/src/main/org/codehaus/groovy/ast/stmt/EmptyStatement.java @@ -18,7 +18,11 @@ */ package org.codehaus.groovy.ast.stmt; +import org.codehaus.groovy.ast.ASTNode; import org.codehaus.groovy.ast.GroovyCodeVisitor; +import org.codehaus.groovy.ast.NodeMetaDataHandler; + +import java.util.Map; /** * Represents an empty statement @@ -27,7 +31,71 @@ import org.codehaus.groovy.ast.GroovyCodeVisitor; */ public class EmptyStatement extends Statement { - public static final EmptyStatement INSTANCE = new EmptyStatement(); + public static final EmptyStatement INSTANCE = new EmptyStatement() { + @Override + public void setStatementLabel(String label) { + throw createUnsupportedOperationException(); + } + + @Override + public void addStatementLabel(String label) { + throw createUnsupportedOperationException(); + } + + @Override + public void setLineNumber(int lineNumber) { + throw createUnsupportedOperationException(); + } + + @Override + public void setColumnNumber(int columnNumber) { + throw createUnsupportedOperationException(); + } + + @Override + public void setLastLineNumber(int lastLineNumber) { + throw createUnsupportedOperationException(); + } + + @Override + public void setLastColumnNumber(int lastColumnNumber) { + throw createUnsupportedOperationException(); + } + + @Override + public void setSourcePosition(ASTNode node) { + throw createUnsupportedOperationException(); + } + + @Override + public void copyNodeMetaData(NodeMetaDataHandler other) { + throw createUnsupportedOperationException(); + } + + @Override + public void setNodeMetaData(Object key, Object value) { + throw createUnsupportedOperationException(); + } + + @Override + public Object putNodeMetaData(Object key, Object value) { + throw createUnsupportedOperationException(); + } + + @Override + public void removeNodeMetaData(Object key) { + throw createUnsupportedOperationException(); + } + + @Override + public void setMetaDataMap(Map<?, ?> metaDataMap) { + throw createUnsupportedOperationException(); + } + + private UnsupportedOperationException createUnsupportedOperationException() { + return new UnsupportedOperationException("EmptyStatement.INSTANCE is immutable"); + } + }; public void visit(GroovyCodeVisitor visitor) { }
