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); }
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); }
private RelConstr(RelConstr n, bool keepCompilerData) : base(n.Span) { Op = n.Op; CompilerData = keepCompilerData ? n.CompilerData : null; }