Package st.gravel.support.compiler.ast

Source Code of st.gravel.support.compiler.ast.NodeCopier

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.NodeVisitor;
import st.gravel.support.compiler.ast.Node;
import st.gravel.support.compiler.ast.NodeVisitor.NodeVisitor_Factory;
import st.gravel.support.compiler.ast.MethodNode;
import st.gravel.support.compiler.ast.ArrayAccessNode;
import st.gravel.support.compiler.ast.Expression;
import st.gravel.support.compiler.ast.ArrayAtNode;
import st.gravel.support.compiler.ast.ArrayAtPutNode;
import st.gravel.support.compiler.ast.ArrayLiteralNode;
import st.gravel.support.compiler.ast.LiteralNode;
import st.gravel.support.compiler.ast.ArraySizeNode;
import st.gravel.support.compiler.ast.AssignmentNode;
import st.gravel.support.compiler.ast.VariableNode;
import st.gravel.support.compiler.ast.BinaryMessageNode;
import st.gravel.support.compiler.ast.Statement;
import st.gravel.support.compiler.ast.BinaryMethodNode;
import st.gravel.support.compiler.ast.VariableDeclarationNode;
import st.gravel.support.compiler.ast.SequenceNode;
import st.gravel.support.compiler.ast.TypeNode;
import st.gravel.support.compiler.ast.PragmaNode;
import st.gravel.support.compiler.ast.BlockNode;
import st.gravel.support.compiler.ast.BlockTypeNode;
import st.gravel.support.compiler.ast.BooleanAndNode;
import st.gravel.support.compiler.ast.BooleanLiteralNode;
import st.gravel.support.compiler.ast.BooleanOrNode;
import st.gravel.support.compiler.ast.BottomTypeNode;
import st.gravel.support.compiler.ast.BoundVariableDeclarationNode;
import st.gravel.support.compiler.ast.ByteArrayLiteralNode;
import st.gravel.support.compiler.ast.CascadeNode;
import st.gravel.support.compiler.ast.MessageNode;
import st.gravel.support.compiler.ast.CharacterLiteralNode;
import st.gravel.support.compiler.ast.ClassDescriptionNode;
import st.gravel.support.compiler.ast.ClassNode;
import st.gravel.support.compiler.ast.TraitUsageNode;
import st.gravel.support.compiler.ast.ClassTypeNode;
import st.gravel.support.compiler.ast.CreateHolderNode;
import st.gravel.support.compiler.ast.DoubleLiteralNode;
import st.gravel.support.compiler.ast.FieldReadNode;
import st.gravel.support.compiler.ast.FieldWriteNode;
import st.gravel.support.compiler.ast.FixedPointLiteralNode;
import st.gravel.support.compiler.ast.FloatLiteralNode;
import st.gravel.support.compiler.ast.GenericTypeVariableNode;
import st.gravel.support.compiler.ast.GlobalReadNode;
import st.gravel.support.compiler.ast.GlobalWriteNode;
import st.gravel.support.compiler.ast.HolderDeclarationNode;
import st.gravel.support.compiler.ast.IdentityComparisonNode;
import st.gravel.support.compiler.ast.IfTrueIfFalseNode;
import st.gravel.support.compiler.ast.InlineExpressionCollection;
import st.gravel.support.compiler.ast.InstanceCreationNode;
import st.gravel.support.compiler.ast.InstanceTypeNode;
import st.gravel.support.compiler.ast.IntegerLiteralNode;
import st.gravel.support.compiler.ast.IntermediateNode;
import st.gravel.support.compiler.ast.IntermediateStatement;
import st.gravel.support.compiler.ast.IsNilNode;
import st.gravel.support.compiler.ast.KeywordMessageNode;
import st.gravel.support.compiler.ast.KeywordMethodNode;
import st.gravel.support.compiler.ast.LocalReadNode;
import st.gravel.support.compiler.ast.LocalWriteNode;
import st.gravel.support.compiler.ast.NamespacedTypeVariableNode;
import st.gravel.support.compiler.ast.NamespacedVariableNode;
import st.gravel.support.compiler.ast.NamespaceNode;
import st.gravel.support.compiler.ast.SharedDeclarationNode;
import st.gravel.support.compiler.ast.NilLiteralNode;
import st.gravel.support.compiler.ast.NonLocalReturnNode;
import st.gravel.support.compiler.ast.PackageNode;
import st.gravel.support.compiler.ast.ReadHolderNode;
import st.gravel.support.compiler.ast.ReferenceLiteralNode;
import st.gravel.support.compiler.ast.ReturnNode;
import st.gravel.support.compiler.ast.SelfNode;
import st.gravel.support.compiler.ast.SelfTypeNode;
import st.gravel.support.compiler.ast.StateAccessNode;
import st.gravel.support.compiler.ast.StringLiteralNode;
import st.gravel.support.compiler.ast.SuperNode;
import st.gravel.support.compiler.ast.SymbolLiteralNode;
import st.gravel.support.compiler.ast.ToDoNode;
import st.gravel.support.compiler.ast.TypeCast;
import st.gravel.support.compiler.ast.TypeDefNode;
import st.gravel.support.compiler.ast.TypeOrNode;
import st.gravel.support.compiler.ast.TypeVariableNode;
import st.gravel.support.compiler.ast.UnaryMessageNode;
import st.gravel.support.compiler.ast.UnaryMethodNode;
import st.gravel.support.compiler.ast.WhileFalseNode;
import st.gravel.support.compiler.ast.WhileNode;
import st.gravel.support.compiler.ast.WhileTrueNode;
import st.gravel.support.compiler.ast.WriteHolderNode;

public class NodeCopier extends NodeVisitor<Node> implements Cloneable {

  public static NodeCopier_Factory factory = new NodeCopier_Factory();

  public static class NodeCopier_Factory extends NodeVisitor_Factory<Node> {

    public NodeCopier basicNew() {
      NodeCopier newInstance = new NodeCopier();
      newInstance.initialize();
      return newInstance;
    }
  }

  public NodeCopier copy() {
    try {
      NodeCopier _temp1 = (NodeCopier) this.clone();
      _temp1.postCopy();
      return _temp1;
    } catch (CloneNotSupportedException e) {
      throw new RuntimeException(e);
    }
  }

  public NodeCopier_Factory factory() {
    return factory;
  }

  public String produceNlrMarkerDefinition_for_(final String _aString, final MethodNode _aMethodNode) {
    return _aString;
  }

  @Override
  public ArrayAccessNode visitArrayAccessNode_(final ArrayAccessNode _anObject) {
    return ArrayAccessNode.factory.receiver_(((Expression) this.visit_(_anObject.receiver())));
  }

  @Override
  public ArrayAtNode visitArrayAtNode_(final ArrayAtNode _anObject) {
    return ArrayAtNode.factory.receiver_index_(((Expression) this.visit_(_anObject.receiver())), ((Expression) this.visit_(_anObject.index())));
  }

  @Override
  public ArrayAtPutNode visitArrayAtPutNode_(final ArrayAtPutNode _anObject) {
    return ArrayAtPutNode.factory.receiver_index_value_(((Expression) this.visit_(_anObject.receiver())), ((Expression) this.visit_(_anObject.index())), ((Expression) this.visit_(_anObject.value())));
  }

  @Override
  public ArrayLiteralNode visitArrayLiteralNode_(final ArrayLiteralNode _anObject) {
    return ArrayLiteralNode.factory.elements_(st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.elements(), ((st.gravel.support.jvm.Block1<LiteralNode, LiteralNode>) (new st.gravel.support.jvm.Block1<LiteralNode, LiteralNode>() {

      @Override
      public LiteralNode value_(final LiteralNode _each) {
        return (LiteralNode) NodeCopier.this.visit_(_each);
      }
    }))));
  }

  @Override
  public ArraySizeNode visitArraySizeNode_(final ArraySizeNode _anObject) {
    return ArraySizeNode.factory.receiver_(((Expression) this.visit_(_anObject.receiver())));
  }

  @Override
  public Expression visitAssignmentNode_(final AssignmentNode _anObject) {
    return AssignmentNode.factory.variable_value_(((VariableNode) this.visit_(_anObject.variable())), ((Expression) this.visit_(_anObject.value())));
  }

  @Override
  public Statement visitBinaryMessageNode_(final BinaryMessageNode _anObject) {
    return BinaryMessageNode.factory.receiver_selector_argument_(((Expression) this.visit_(_anObject.receiver())), _anObject.selector(), ((Expression) this.visit_(_anObject.argument())));
  }

  @Override
  public MethodNode visitBinaryMethodNode_(final BinaryMethodNode _anObject) {
    final String _nlrMarker;
    _nlrMarker = this.produceNlrMarkerDefinition_for_(_anObject.nlrMarker(), _anObject);
    return BinaryMethodNode.factory.selector_argument_body_returnType_pragmas_protocol_nlrMarker_(_anObject.selector(), ((VariableDeclarationNode) this.visit_(_anObject.argument())), ((SequenceNode) this.visit_(_anObject.body())), ((TypeNode) this.visit_(_anObject.returnType())), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.pragmas(), ((st.gravel.support.jvm.Block1<PragmaNode, PragmaNode>) (new st.gravel.support.jvm.Block1<PragmaNode, PragmaNode>() {

      @Override
      public PragmaNode value_(final PragmaNode _each) {
        return (PragmaNode) NodeCopier.this.visit_(_each);
      }
    }))), _anObject.protocol(), _nlrMarker);
  }

  @Override
  public BlockNode visitBlockNode_(final BlockNode _anObject) {
    return BlockNode.factory.arguments_body_returnType_(st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.arguments(), ((st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>) (new st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>() {

      @Override
      public VariableDeclarationNode value_(final VariableDeclarationNode _each) {
        return (VariableDeclarationNode) NodeCopier.this.visit_(_each);
      }
    }))), ((SequenceNode) this.visit_(_anObject.body())), ((TypeNode) this.visit_(_anObject.returnType())));
  }

  @Override
  public BlockTypeNode visitBlockTypeNode_(final BlockTypeNode _anObject) {
    return BlockTypeNode.factory.arguments_returnType_(st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.arguments(), ((st.gravel.support.jvm.Block1<TypeNode, TypeNode>) (new st.gravel.support.jvm.Block1<TypeNode, TypeNode>() {

      @Override
      public TypeNode value_(final TypeNode _each) {
        return (TypeNode) NodeCopier.this.visit_(_each);
      }
    }))), ((TypeNode) this.visit_(_anObject.returnType())));
  }

  @Override
  public BooleanAndNode visitBooleanAndNode_(final BooleanAndNode _anObject) {
    return BooleanAndNode.factory.left_right_(((Expression) this.visit_(_anObject.left())), ((SequenceNode) this.visit_(_anObject.right())));
  }

  @Override
  public BooleanLiteralNode visitBooleanLiteralNode_(final BooleanLiteralNode _anObject) {
    return BooleanLiteralNode.factory.value_(_anObject.value());
  }

  @Override
  public BooleanOrNode visitBooleanOrNode_(final BooleanOrNode _anObject) {
    return BooleanOrNode.factory.left_right_(((Expression) this.visit_(_anObject.left())), ((SequenceNode) this.visit_(_anObject.right())));
  }

  @Override
  public BottomTypeNode visitBottomTypeNode_(final BottomTypeNode _anObject) {
    return BottomTypeNode.factory.basicNew();
  }

  @Override
  public BoundVariableDeclarationNode visitBoundVariableDeclarationNode_(final BoundVariableDeclarationNode _anObject) {
    return BoundVariableDeclarationNode.factory.name_type_ownerType_(_anObject.name(), ((TypeNode) this.visit_(_anObject.type())), _anObject.ownerType());
  }

  @Override
  public ByteArrayLiteralNode visitByteArrayLiteralNode_(final ByteArrayLiteralNode _anObject) {
    return ByteArrayLiteralNode.factory.value_(_anObject.value());
  }

  @Override
  public Expression visitCascadeNode_(final CascadeNode _anObject) {
    return CascadeNode.factory.messages_(st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.messages(), ((st.gravel.support.jvm.Block1<MessageNode, MessageNode>) (new st.gravel.support.jvm.Block1<MessageNode, MessageNode>() {

      @Override
      public MessageNode value_(final MessageNode _each) {
        return (MessageNode) NodeCopier.this.visit_(_each);
      }
    }))));
  }

  @Override
  public CharacterLiteralNode visitCharacterLiteralNode_(final CharacterLiteralNode _anObject) {
    return CharacterLiteralNode.factory.value_(_anObject.value());
  }

  @Override
  public ClassDescriptionNode visitClassDescriptionNode_(final ClassDescriptionNode _anObject) {
    return ClassDescriptionNode.factory.methods_instVars_(st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.methods(), ((st.gravel.support.jvm.Block1<MethodNode, MethodNode>) (new st.gravel.support.jvm.Block1<MethodNode, MethodNode>() {

      @Override
      public MethodNode value_(final MethodNode _each) {
        return (MethodNode) NodeCopier.this.visit_(_each);
      }
    }))), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.instVars(), ((st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>) (new st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>() {

      @Override
      public VariableDeclarationNode value_(final VariableDeclarationNode _each) {
        return (VariableDeclarationNode) NodeCopier.this.visit_(_each);
      }
    }))));
  }

  @Override
  public ClassNode visitClassNode_(final ClassNode _anObject) {
    return ClassNode.factory.name_superclassPath_properties_instVars_classInstVars_sharedVariables_methods_classMethods_namespace_isExtension_isTrait_traitUsage_classTraitUsage_(_anObject.name(), _anObject.superclassPath(), _anObject.properties(), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.instVars(), ((st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>) (new st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>() {

      @Override
      public VariableDeclarationNode value_(final VariableDeclarationNode _each) {
        return (VariableDeclarationNode) NodeCopier.this.visit_(_each);
      }
    }))), _anObject.metaclassNode().instVars(), _anObject.metaclassNode().sharedVariables(), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.methods(), ((st.gravel.support.jvm.Block1<MethodNode, MethodNode>) (new st.gravel.support.jvm.Block1<MethodNode, MethodNode>() {

      @Override
      public MethodNode value_(final MethodNode _each) {
        return (MethodNode) NodeCopier.this.visit_(_each);
      }
    }))), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.classMethods(), ((st.gravel.support.jvm.Block1<MethodNode, MethodNode>) (new st.gravel.support.jvm.Block1<MethodNode, MethodNode>() {

      @Override
      public MethodNode value_(final MethodNode _each) {
        return (MethodNode) NodeCopier.this.visit_(_each);
      }
    }))), _anObject.namespace(), _anObject.isExtension(), _anObject.isTrait(), ((TraitUsageNode) this.visit_(_anObject.traitUsage())), ((TraitUsageNode) this.visit_(_anObject.classTraitUsage())));
  }

  @Override
  public ClassTypeNode visitClassTypeNode_(final ClassTypeNode _anObject) {
    return ClassTypeNode.factory.node_(((TypeNode) this.visit_(_anObject.node())));
  }

  @Override
  public CreateHolderNode visitCreateHolderNode_(final CreateHolderNode _anObject) {
    return CreateHolderNode.factory.basicNew();
  }

  @Override
  public DoubleLiteralNode visitDoubleLiteralNode_(final DoubleLiteralNode _anObject) {
    return DoubleLiteralNode.factory.valueString_(_anObject.valueString());
  }

  @Override
  public Expression visitExpression_(final Expression _anObject) {
    return Expression.factory.basicNew();
  }

  @Override
  public Expression visitFieldReadNode_(final FieldReadNode _anObject) {
    return FieldReadNode.factory.owner_field_type_(((Expression) this.visit_(_anObject.owner())), _anObject.field(), ((TypeNode) this.visit_(_anObject.type())));
  }

  @Override
  public FieldWriteNode visitFieldWriteNode_(final FieldWriteNode _anObject) {
    return FieldWriteNode.factory.owner_field_type_value_(((Expression) this.visit_(_anObject.owner())), _anObject.field(), ((TypeNode) this.visit_(_anObject.type())), ((Expression) this.visit_(_anObject.value())));
  }

  @Override
  public FixedPointLiteralNode visitFixedPointLiteralNode_(final FixedPointLiteralNode _anObject) {
    return FixedPointLiteralNode.factory.numerator_denominator_scale_(_anObject.numerator(), _anObject.denominator(), _anObject.scale());
  }

  @Override
  public FloatLiteralNode visitFloatLiteralNode_(final FloatLiteralNode _anObject) {
    return FloatLiteralNode.factory.valueString_(_anObject.valueString());
  }

  @Override
  public GenericTypeVariableNode visitGenericTypeVariableNode_(final GenericTypeVariableNode _anObject) {
    return GenericTypeVariableNode.factory.root_arguments_(((TypeNode) this.visit_(_anObject.root())), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.arguments(), ((st.gravel.support.jvm.Block1<TypeNode, TypeNode>) (new st.gravel.support.jvm.Block1<TypeNode, TypeNode>() {

      @Override
      public TypeNode value_(final TypeNode _each) {
        return (TypeNode) NodeCopier.this.visit_(_each);
      }
    }))));
  }

  @Override
  public Expression visitGlobalReadNode_(final GlobalReadNode _anObject) {
    return GlobalReadNode.factory.namespace_name_(_anObject.namespace(), _anObject.name());
  }

  @Override
  public GlobalWriteNode visitGlobalWriteNode_(final GlobalWriteNode _anObject) {
    return GlobalWriteNode.factory.namespace_name_value_(_anObject.namespace(), _anObject.name(), ((Expression) this.visit_(_anObject.value())));
  }

  @Override
  public HolderDeclarationNode visitHolderDeclarationNode_(final HolderDeclarationNode _anObject) {
    return HolderDeclarationNode.factory.name_type_(_anObject.name(), ((TypeNode) this.visit_(_anObject.type())));
  }

  @Override
  public IdentityComparisonNode visitIdentityComparisonNode_(final IdentityComparisonNode _anObject) {
    return IdentityComparisonNode.factory.left_right_(((Expression) this.visit_(_anObject.left())), ((Expression) this.visit_(_anObject.right())));
  }

  @Override
  public IfTrueIfFalseNode visitIfTrueIfFalseNode_(final IfTrueIfFalseNode _anObject) {
    return IfTrueIfFalseNode.factory.test_trueSequence_falseSequence_returnType_(((Expression) this.visit_(_anObject.test())), ((SequenceNode) this.visit_(_anObject.trueSequence())), ((SequenceNode) this.visit_(_anObject.falseSequence())), ((TypeNode) this.visit_(_anObject.returnType())));
  }

  @Override
  public InlineExpressionCollection visitInlineExpressionCollection_(final InlineExpressionCollection _anObject) {
    return InlineExpressionCollection.factory.expressions_(st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.expressions(), ((st.gravel.support.jvm.Block1<Expression, Expression>) (new st.gravel.support.jvm.Block1<Expression, Expression>() {

      @Override
      public Expression value_(final Expression _each) {
        return (Expression) NodeCopier.this.visit_(_each);
      }
    }))));
  }

  @Override
  public InstanceCreationNode visitInstanceCreationNode_(final InstanceCreationNode _anObject) {
    return InstanceCreationNode.factory.reference_(_anObject.reference());
  }

  @Override
  public InstanceTypeNode visitInstanceTypeNode_(final InstanceTypeNode _anObject) {
    return InstanceTypeNode.factory.basicNew();
  }

  @Override
  public IntegerLiteralNode visitIntegerLiteralNode_(final IntegerLiteralNode _anObject) {
    return IntegerLiteralNode.factory.integer_(_anObject.integer());
  }

  @Override
  public IntermediateNode visitIntermediateNode_(final IntermediateNode _anObject) {
    return IntermediateNode.factory.basicNew();
  }

  @Override
  public IntermediateStatement visitIntermediateStatement_(final IntermediateStatement _anObject) {
    return IntermediateStatement.factory.basicNew();
  }

  @Override
  public IsNilNode visitIsNilNode_(final IsNilNode _anObject) {
    return IsNilNode.factory.receiver_(((Expression) this.visit_(_anObject.receiver())));
  }

  @Override
  public Statement visitKeywordMessageNode_(final KeywordMessageNode _anObject) {
    return KeywordMessageNode.factory.receiver_selector_arguments_(((Expression) this.visit_(_anObject.receiver())), _anObject.selector(), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.arguments(), ((st.gravel.support.jvm.Block1<Expression, Expression>) (new st.gravel.support.jvm.Block1<Expression, Expression>() {

      @Override
      public Expression value_(final Expression _each) {
        return (Expression) NodeCopier.this.visit_(_each);
      }
    }))));
  }

  @Override
  public MethodNode visitKeywordMethodNode_(final KeywordMethodNode _anObject) {
    final String _nlrMarker;
    _nlrMarker = this.produceNlrMarkerDefinition_for_(_anObject.nlrMarker(), _anObject);
    return KeywordMethodNode.factory.selector_arguments_body_returnType_pragmas_protocol_nlrMarker_(_anObject.selector(), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.arguments(), ((st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>) (new st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>() {

      @Override
      public VariableDeclarationNode value_(final VariableDeclarationNode _each) {
        return (VariableDeclarationNode) NodeCopier.this.visit_(_each);
      }
    }))), ((SequenceNode) this.visit_(_anObject.body())), ((TypeNode) this.visit_(_anObject.returnType())), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.pragmas(), ((st.gravel.support.jvm.Block1<PragmaNode, PragmaNode>) (new st.gravel.support.jvm.Block1<PragmaNode, PragmaNode>() {

      @Override
      public PragmaNode value_(final PragmaNode _each) {
        return (PragmaNode) NodeCopier.this.visit_(_each);
      }
    }))), _anObject.protocol(), _nlrMarker);
  }

  @Override
  public LiteralNode visitLiteralNode_(final LiteralNode _anObject) {
    return LiteralNode.factory.basicNew();
  }

  @Override
  public Expression visitLocalReadNode_(final LocalReadNode _anObject) {
    return LocalReadNode.factory.name_(_anObject.name());
  }

  @Override
  public LocalWriteNode visitLocalWriteNode_(final LocalWriteNode _anObject) {
    return LocalWriteNode.factory.name_value_(_anObject.name(), ((Expression) this.visit_(_anObject.value())));
  }

  @Override
  public Expression visitMessageNode_(final MessageNode _anObject) {
    return MessageNode.factory.receiver_selector_(((Expression) this.visit_(_anObject.receiver())), _anObject.selector());
  }

  @Override
  public MethodNode visitMethodNode_(final MethodNode _anObject) {
    final String _nlrMarker;
    _nlrMarker = this.produceNlrMarkerDefinition_for_(_anObject.nlrMarker(), _anObject);
    return MethodNode.factory.selector_body_returnType_pragmas_protocol_nlrMarker_(_anObject.selector(), ((SequenceNode) this.visit_(_anObject.body())), ((TypeNode) this.visit_(_anObject.returnType())), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.pragmas(), ((st.gravel.support.jvm.Block1<PragmaNode, Node>) (new st.gravel.support.jvm.Block1<PragmaNode, Node>() {

      @Override
      public PragmaNode value_(final Node _each) {
        return (PragmaNode) NodeCopier.this.visit_(_each);
      }
    }))), _anObject.protocol(), _nlrMarker);
  }

  @Override
  public NamespacedTypeVariableNode visitNamespacedTypeVariableNode_(final NamespacedTypeVariableNode _anObject) {
    return NamespacedTypeVariableNode.factory.path_(_anObject.path());
  }

  @Override
  public NamespacedVariableNode visitNamespacedVariableNode_(final NamespacedVariableNode _anObject) {
    return NamespacedVariableNode.factory.path_(_anObject.path());
  }

  @Override
  public NamespaceNode visitNamespaceNode_(final NamespaceNode _aNamespaceNode) {
    return NamespaceNode.factory.reference_publicImports_privateImports_sharedVariables_(_aNamespaceNode.reference(), _aNamespaceNode.publicImports(), _aNamespaceNode.privateImports(), st.gravel.support.jvm.ArrayExtensions.collect_(_aNamespaceNode.sharedVariables(), ((st.gravel.support.jvm.Block1<SharedDeclarationNode, SharedDeclarationNode>) (new st.gravel.support.jvm.Block1<SharedDeclarationNode, SharedDeclarationNode>() {

      @Override
      public SharedDeclarationNode value_(final SharedDeclarationNode _each) {
        return (SharedDeclarationNode) NodeCopier.this.visit_(_each);
      }
    }))));
  }

  @Override
  public NilLiteralNode visitNilLiteralNode_(final NilLiteralNode _anObject) {
    return NilLiteralNode.factory.basicNew();
  }

  @Override
  public Node visitNode_(final Node _anObject) {
    return Node.factory.basicNew();
  }

  @Override
  public Statement visitNonLocalReturnNode_(final NonLocalReturnNode _anObject) {
    return NonLocalReturnNode.factory.marker_value_(_anObject.marker(), ((Expression) this.visit_(_anObject.value())));
  }

  @Override
  public PackageNode visitPackageNode_(final PackageNode _anObject) {
    return PackageNode.factory.name_classes_namespaces_(_anObject.name(), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.classes(), ((st.gravel.support.jvm.Block1<ClassNode, ClassNode>) (new st.gravel.support.jvm.Block1<ClassNode, ClassNode>() {

      @Override
      public ClassNode value_(final ClassNode _each) {
        return (ClassNode) NodeCopier.this.visit_(_each);
      }
    }))), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.namespaces(), ((st.gravel.support.jvm.Block1<NamespaceNode, NamespaceNode>) (new st.gravel.support.jvm.Block1<NamespaceNode, NamespaceNode>() {

      @Override
      public NamespaceNode value_(final NamespaceNode _each) {
        return (NamespaceNode) NodeCopier.this.visit_(_each);
      }
    }))));
  }

  @Override
  public PragmaNode visitPragmaNode_(final PragmaNode _anObject) {
    return PragmaNode.factory.expression_(((MessageNode) this.visit_(_anObject.expression())));
  }

  @Override
  public ReadHolderNode visitReadHolderNode_(final ReadHolderNode _anObject) {
    return ReadHolderNode.factory.varName_(_anObject.varName());
  }

  @Override
  public ReferenceLiteralNode visitReferenceLiteralNode_(final ReferenceLiteralNode _anObject) {
    return ReferenceLiteralNode.factory.path_(_anObject.path());
  }

  @Override
  public Statement visitReturnNode_(final ReturnNode _anObject) {
    return ReturnNode.factory.value_(((Expression) this.visit_(_anObject.value())));
  }

  @Override
  public Expression visitSelfNode_(final SelfNode _anObject) {
    return _anObject;
  }

  @Override
  public SelfTypeNode visitSelfTypeNode_(final SelfTypeNode _anObject) {
    return SelfTypeNode.factory.basicNew();
  }

  @Override
  public SequenceNode visitSequenceNode_(final SequenceNode _anObject) {
    return SequenceNode.factory.temporaries_statements_(st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.temporaries(), ((st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>) (new st.gravel.support.jvm.Block1<VariableDeclarationNode, VariableDeclarationNode>() {

      @Override
      public VariableDeclarationNode value_(final VariableDeclarationNode _each) {
        return (VariableDeclarationNode) NodeCopier.this.visit_(_each);
      }
    }))), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.statements(), ((st.gravel.support.jvm.Block1<Statement, Statement>) (new st.gravel.support.jvm.Block1<Statement, Statement>() {

      @Override
      public Statement value_(final Statement _each) {
        return (Statement) NodeCopier.this.visit_(_each);
      }
    }))));
  }

  @Override
  public SharedDeclarationNode visitSharedDeclarationNode_(final SharedDeclarationNode _anObject) {
    return SharedDeclarationNode.factory.name_initializer_(_anObject.name(), ((Expression) this.visit_(_anObject.initializer())));
  }

  @Override
  public StateAccessNode visitStateAccessNode_(final StateAccessNode _anObject) {
    return StateAccessNode.factory.basicNew();
  }

  @Override
  public Statement visitStatement_(final Statement _anObject) {
    return Statement.factory.basicNew();
  }

  @Override
  public StringLiteralNode visitStringLiteralNode_(final StringLiteralNode _anObject) {
    return StringLiteralNode.factory.value_(_anObject.value());
  }

  @Override
  public SuperNode visitSuperNode_(final SuperNode _anObject) {
    return SuperNode.factory.reference_(_anObject.reference());
  }

  @Override
  public SymbolLiteralNode visitSymbolLiteralNode_(final SymbolLiteralNode _anObject) {
    return SymbolLiteralNode.factory.value_(_anObject.value());
  }

  @Override
  public ToDoNode visitToDoNode_(final ToDoNode _anObject) {
    return ToDoNode.factory.start_stop_step_counterName_doSequence_(((Expression) this.visit_(_anObject.start())), ((Expression) this.visit_(_anObject.stop())), ((Expression) this.visit_(_anObject.step())), _anObject.counterName(), ((SequenceNode) this.visit_(_anObject.doSequence())));
  }

  @Override
  public TypeCast visitTypeCast_(final TypeCast _aTypeCast) {
    return TypeCast.factory.type_expression_(((TypeNode) this.visit_(_aTypeCast.type())), ((Expression) this.visit_(_aTypeCast.expression())));
  }

  @Override
  public TypeDefNode visitTypeDefNode_(final TypeDefNode _anObject) {
    return TypeDefNode.factory.node_(((TypeNode) this.visit_(_anObject.node())));
  }

  @Override
  public TypeNode visitTypeNode_(final TypeNode _anObject) {
    return TypeNode.factory.basicNew();
  }

  @Override
  public TypeNode visitTypeOrNode_(final TypeOrNode _anObject) {
    return TypeOrNode.factory.left_right_(((TypeNode) this.visit_(_anObject.left())), ((TypeNode) this.visit_(_anObject.right())));
  }

  @Override
  public TypeVariableNode visitTypeVariableNode_(final TypeVariableNode _anObject) {
    return TypeVariableNode.factory.name_(_anObject.name());
  }

  @Override
  public Statement visitUnaryMessageNode_(final UnaryMessageNode _anObject) {
    return UnaryMessageNode.factory.receiver_selector_(((Expression) this.visit_(_anObject.receiver())), _anObject.selector());
  }

  @Override
  public MethodNode visitUnaryMethodNode_(final UnaryMethodNode _anObject) {
    final String _nlrMarker;
    _nlrMarker = this.produceNlrMarkerDefinition_for_(_anObject.nlrMarker(), _anObject);
    return UnaryMethodNode.factory.selector_body_returnType_pragmas_protocol_nlrMarker_(_anObject.selector(), ((SequenceNode) this.visit_(_anObject.body())), ((TypeNode) this.visit_(_anObject.returnType())), st.gravel.support.jvm.ArrayExtensions.collect_(_anObject.pragmas(), ((st.gravel.support.jvm.Block1<PragmaNode, PragmaNode>) (new st.gravel.support.jvm.Block1<PragmaNode, PragmaNode>() {

      @Override
      public PragmaNode value_(final PragmaNode _each) {
        return (PragmaNode) NodeCopier.this.visit_(_each);
      }
    }))), _anObject.protocol(), _nlrMarker);
  }

  @Override
  public VariableDeclarationNode visitVariableDeclarationNode_(final VariableDeclarationNode _anObject) {
    return VariableDeclarationNode.factory.name_type_(_anObject.name(), ((TypeNode) this.visit_(_anObject.type())));
  }

  @Override
  public Expression visitVariableNode_(final VariableNode _anObject) {
    return VariableNode.factory.name_(_anObject.name());
  }

  @Override
  public WhileFalseNode visitWhileFalseNode_(final WhileFalseNode _anObject) {
    return WhileFalseNode.factory.testSequence_doSequence_(((SequenceNode) this.visit_(_anObject.testSequence())), ((SequenceNode) this.visit_(_anObject.doSequence())));
  }

  @Override
  public WhileNode visitWhileNode_(final WhileNode _anObject) {
    return WhileNode.factory.testSequence_doSequence_(((SequenceNode) this.visit_(_anObject.testSequence())), ((SequenceNode) this.visit_(_anObject.doSequence())));
  }

  @Override
  public WhileTrueNode visitWhileTrueNode_(final WhileTrueNode _anObject) {
    return WhileTrueNode.factory.testSequence_doSequence_(((SequenceNode) this.visit_(_anObject.testSequence())), ((SequenceNode) this.visit_(_anObject.doSequence())));
  }

  @Override
  public WriteHolderNode visitWriteHolderNode_(final WriteHolderNode _anObject) {
    return WriteHolderNode.factory.varName_value_(_anObject.varName(), ((Expression) this.visit_(_anObject.value())));
  }

  @Override
  public Node visit_(final Node _anObject) {
    final Node _newNode;
    if (_anObject == null) {
      return null;
    }
    _newNode = ((Node) _anObject.accept_(this));
    if (_newNode == null) {
      return null;
    }
    return _newNode.withSourcePosition_(_anObject.sourcePosition());
  }
}
TOP

Related Classes of st.gravel.support.compiler.ast.NodeCopier

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.