Exemple #1
0
        internal override Node ShallowClone(Node replace, int pos)
        {
            var cnode  = new RelConstr(this, true);
            int occurs = 0;

            cnode.Arg1 = CloneField <Node>(Arg1, replace, pos, ref occurs);

            if (Arg2 != null)
            {
                cnode.Arg2 = CloneField <Node>(Arg2, replace, pos, ref occurs);
            }
            else
            {
                cnode.Arg2 = null;
            }
            return(cnode);
        }
Exemple #2
0
        internal override Node DeepClone(IEnumerable <Node> clonedChildren, bool keepCompilerData)
        {
            var cnode = new RelConstr(this, keepCompilerData);

            cnode.cachedHashCode = this.cachedHashCode;
            using (var cenum = clonedChildren.GetEnumerator())
            {
                cnode.Arg1 = TakeClone <Node>(cenum);

                if (Arg2 != null)
                {
                    cnode.Arg2 = TakeClone <Node>(cenum);
                }
                else
                {
                    cnode.Arg2 = null;
                }
            }

            return(cnode);
        }
Exemple #3
0
 private RelConstr(RelConstr n, bool keepCompilerData)
     : base(n.Span)
 {
     Op           = n.Op;
     CompilerData = keepCompilerData ? n.CompilerData : null;
 }