package st.gravel.support.compiler.ast; /* This file is automatically generated from typed smalltalk source. Do not edit by hand. (C) AG5.com */ import java.math.BigInteger; import st.gravel.support.jvm.NonLocalReturn; import st.gravel.support.compiler.ast.MethodNode; import st.gravel.support.compiler.ast.MethodNode.MethodNode_Factory; import st.gravel.support.compiler.ast.Expression; import st.gravel.support.compiler.ast.SequenceNode; import st.gravel.support.compiler.ast.ReturnNode; import st.gravel.support.compiler.ast.PragmaNode; import st.gravel.support.compiler.ast.TypeNode; import st.gravel.support.compiler.ast.NodeVisitor; import st.gravel.support.compiler.ast.VariableDeclarationNode; import st.gravel.support.compiler.ast.Node; import st.gravel.support.compiler.ast.Reference; import st.gravel.support.compiler.ast.StringLiteralNode; import st.gravel.support.compiler.ast.SymbolLiteralNode; import st.gravel.support.compiler.ast.KeywordMessageNode; import st.gravel.support.compiler.ast.NilLiteralNode; import st.gravel.support.compiler.ast.SourcePrinter; import st.gravel.support.compiler.ast.SourcePosition; public class UnaryMethodNode extends MethodNode implements Cloneable { public static UnaryMethodNode_Factory factory = new UnaryMethodNode_Factory(); public static class UnaryMethodNode_Factory extends MethodNode_Factory { public UnaryMethodNode basicNew() { UnaryMethodNode newInstance = new UnaryMethodNode(); newInstance.initialize(); return newInstance; } public UnaryMethodNode returnExpression_(final Expression _expression) { return ((UnaryMethodNode) this.selector_body_returnType_pragmas_protocol_("value", SequenceNode.factory.statement_(ReturnNode.factory.value_(_expression)), null, new PragmaNode[] {}, "evaluating")); } public UnaryMethodNode selector_body_(final String _aString, final SequenceNode _aSequenceNode) { return ((UnaryMethodNode) this.selector_body_returnType_pragmas_protocol_nlrMarker_(_aString, _aSequenceNode, null, new PragmaNode[] {}, null, null)); } @Override public UnaryMethodNode selector_body_returnType_pragmas_protocol_(final String _aString, final SequenceNode _aSequenceNode, final TypeNode _anUndefinedObject, final PragmaNode[] _anArray, final String _protocol) { return ((UnaryMethodNode) this.selector_body_returnType_pragmas_protocol_nlrMarker_(_aString, _aSequenceNode, _anUndefinedObject, _anArray, _protocol, null)); } @Override public UnaryMethodNode selector_body_returnType_pragmas_protocol_nlrMarker_(final String _aString, final SequenceNode _aSequenceNode, final TypeNode _returnType, final PragmaNode[] _anArray, final String _protocol, final String _nlrMarker) { return ((UnaryMethodNode) this.basicNew().initializeSelector_body_returnType_pragmas_protocol_nlrMarker_(_aString, _aSequenceNode, _returnType, _anArray, _protocol, _nlrMarker)); } } static public UnaryMethodNode _returnExpression_(Object receiver, final Expression _expression) { return factory.returnExpression_(_expression); } static public UnaryMethodNode _selector_body_(Object receiver, final String _aString, final SequenceNode _aSequenceNode) { return factory.selector_body_(_aString, _aSequenceNode); } static public UnaryMethodNode _selector_body_returnType_pragmas_protocol_(Object receiver, final String _aString, final SequenceNode _aSequenceNode, final TypeNode _anUndefinedObject, final PragmaNode[] _anArray, final String _protocol) { return factory.selector_body_returnType_pragmas_protocol_(_aString, _aSequenceNode, _anUndefinedObject, _anArray, _protocol); } static public UnaryMethodNode _selector_body_returnType_pragmas_protocol_nlrMarker_(Object receiver, final String _aString, final SequenceNode _aSequenceNode, final TypeNode _returnType, final PragmaNode[] _anArray, final String _protocol, final String _nlrMarker) { return factory.selector_body_returnType_pragmas_protocol_nlrMarker_(_aString, _aSequenceNode, _returnType, _anArray, _protocol, _nlrMarker); } @Override public <X> X accept_(final NodeVisitor<X> _visitor) { return _visitor.visitUnaryMethodNode_(this); } @Override public UnaryMethodNode allNodesDo_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock) { this.nodesDo_(new st.gravel.support.jvm.Block1<Object, Node>() { @Override public Object value_(final Node _each) { return _each.withAllNodesDo_(_aBlock); } }); return this; } @Override public UnaryMethodNode allNodesDo_pruneWhere_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock, final st.gravel.support.jvm.Block1<Boolean, Node> _pruneBlock) { this.nodesDo_(new st.gravel.support.jvm.Block1<Object, Node>() { @Override public Object value_(final Node _each) { if (!_pruneBlock.value_(_each)) { return _each.withAllNodesDo_pruneWhere_(_aBlock, _pruneBlock); } return UnaryMethodNode.this; } }); return this; } @Override public VariableDeclarationNode[] arguments() { return new VariableDeclarationNode[] {}; } public UnaryMethodNode argumentsDo_(final st.gravel.support.jvm.Block1<Object, VariableDeclarationNode> _aBlock) { return this; } public UnaryMethodNode copy() { try { UnaryMethodNode _temp1 = (UnaryMethodNode) this.clone(); _temp1.postCopy(); return _temp1; } catch (CloneNotSupportedException e) { throw new RuntimeException(e); } } public UnaryMethodNode_Factory factory() { return factory; } @Override public boolean hasCompleteArgumentSignature() { return true; } @Override public UnaryMethodNode initializeSelector_body_returnType_pragmas_protocol_nlrMarker_(final String _aString, final SequenceNode _aSequenceNode, final TypeNode _anUndefinedObject, final PragmaNode[] _anArray, final String _protocolString, final String _anObject) { _selector = _aString; _body = _aSequenceNode; _returnType = _anUndefinedObject; _pragmas = _anArray; _protocol = _protocolString; _nlrMarker = _anObject; this.initialize(); return this; } @Override public UnaryMethodNode localVarNamesDo_(final st.gravel.support.jvm.Block1<Object, String> _aBlock) { return this; } @Override public UnaryMethodNode nodesDo_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock) { _aBlock.value_(_body); return this; } @Override public int numArgs() { return 0; } @Override public UnaryMethodNode ofTrait_(final Reference _aReference) { return this.withPropertyAt_put_(st.gravel.core.Symbol.value("trait"), StringLiteralNode.factory.value_(_aReference.toString())); } @Override public int precedence() { return 1; } @Override public UnaryMethodNode prettySourceOn_(final StringBuilder _aStream) { SourcePrinter.factory.on_(_aStream).visit_(this); return this; } @Override public UnaryMethodNode printOn_(final StringBuilder _aStream) { final String _title; _title = this.factory().toString(); _aStream.append(st.gravel.support.jvm.CharacterExtensions.isVowel(_title.charAt(0)) ? "an " : "a "); _aStream.append(_title); _aStream.append('['); this.sourceOn_(_aStream); _aStream.append(']'); return this; } @Override public UnaryMethodNode pvtSetBody_(final SequenceNode _aSequenceNode) { _body = _aSequenceNode; return this; } @Override public UnaryMethodNode pvtSetNlrMarker_(final String _anObject) { _nlrMarker = _anObject; return this; } @Override public UnaryMethodNode pvtSetPragmas_(final PragmaNode[] _anArray) { _pragmas = _anArray; return this; } @Override public UnaryMethodNode pvtSetProtocol_(final String _aString) { _protocol = _aString; return this; } @Override public UnaryMethodNode pvtSetSourcePosition_(final SourcePosition _aSourcePosition) { _sourcePosition = _aSourcePosition; return this; } @Override public UnaryMethodNode returnTypeAndBodySourceOn_(final StringBuilder _aStream) { if (_returnType != null) { _aStream.append(' '); _aStream.append("{^"); _returnType.sourceOn_(_aStream); _aStream.append('}'); } for (final PragmaNode _each : _pragmas) { _aStream.append('\n'); _aStream.append(' '); _each.sourceOn_(_aStream); } _body.methodSourceOn_(_aStream); return this; } @Override public UnaryMethodNode sourceOn_(final StringBuilder _aStream) { _aStream.append(_selector); this.returnTypeAndBodySourceOn_(_aStream); return this; } @Override public UnaryMethodNode typeDefsDo_(final st.gravel.support.jvm.Block1<Object, TypeNode> _aBlock) { if (_returnType != null) { _returnType.typeDefsDo_(_aBlock); } return this; } @Override public UnaryMethodNode updatePragmas_(final st.gravel.support.jvm.Block1<PragmaNode, PragmaNode> _aBlock) { return this.withPragmas_(st.gravel.support.jvm.ArrayExtensions.collect_(_pragmas, _aBlock)); } @Override public UnaryMethodNode withAllNodesDo_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock) { _aBlock.value_(this); this.allNodesDo_(_aBlock); return this; } @Override public UnaryMethodNode withAllNodesDo_pruneWhere_(final st.gravel.support.jvm.Block1<Object, Node> _aBlock, final st.gravel.support.jvm.Block1<Boolean, Node> _pruneBlock) { _aBlock.value_(this); this.allNodesDo_pruneWhere_(_aBlock, _pruneBlock); return this; } @Override public UnaryMethodNode withBody_(final SequenceNode _aSequenceNode) { return this.copy().pvtSetBody_(_aSequenceNode); } @Override public UnaryMethodNode withNlrMarker_(final String _anObject) { return this.copy().pvtSetNlrMarker_(_anObject); } @Override public UnaryMethodNode withPragmas_(final PragmaNode[] _anArray) { return this.copy().pvtSetPragmas_(_anArray); } @Override public UnaryMethodNode withPropertyAt_put_(final st.gravel.core.Symbol _aKey, final Expression _aValue) { if (st.gravel.support.jvm.ArrayExtensions.anySatisfy_(_pragmas, new st.gravel.support.jvm.Predicate1<PragmaNode>() { @Override public boolean value_(final PragmaNode _each) { return _each.isPropertyPragmaAt_(_aKey); } })) { return UnaryMethodNode.this.updatePragmas_(((st.gravel.support.jvm.Block1<PragmaNode, PragmaNode>) (new st.gravel.support.jvm.Block1<PragmaNode, PragmaNode>() { @Override public PragmaNode value_(final PragmaNode _each) { if (_each.isPropertyPragmaAt_(_aKey)) { return _each.withArguments_(st.gravel.support.jvm.ArrayFactory.with_with_(SymbolLiteralNode.factory.value_(_aKey), _aValue)); } else { return _each; } } }))); } else { return UnaryMethodNode.this.withPragmas_(st.gravel.support.jvm.ArrayExtensions.copyWith_(_pragmas, PragmaNode.factory.expression_(KeywordMessageNode.factory.receiver_selector_arguments_(NilLiteralNode.factory.basicNew(), "propertyAt:put:", st.gravel.support.jvm.ArrayFactory.with_with_(SymbolLiteralNode.factory.value_(_aKey), _aValue))))); } } @Override public UnaryMethodNode withProtocol_(final String _aString) { return this.copy().pvtSetProtocol_(_aString); } @Override public UnaryMethodNode withSourcePosition_(final SourcePosition _aSourcePosition) { if (_sourcePosition == _aSourcePosition) { return UnaryMethodNode.this; } return this.copy().pvtSetSourcePosition_(_aSourcePosition); } }