/// <summary> /// Visits the specified out argument. /// </summary> /// <param name="outArgument">The out argument.</param> /// <returns></returns> protected virtual IExpression DeepCopy(OutArgument outArgument) { outArgument.Expression = (ITargetExpression)Substitute(outArgument.Expression); outArgument.Type = this.Substitute(outArgument.Type); return outArgument; }
/// <summary> /// Visits the specified out argument. /// </summary> /// <param name="outArgument">The out argument.</param> public override void Visit(IOutArgument outArgument) { OutArgument mutableOutArgument = new OutArgument(outArgument); this.resultExpression = this.myCodeCopier.DeepCopy(mutableOutArgument); }
/// <summary> /// Rewrites the children of the given out argument expression. /// </summary> public virtual void RewriteChildren(OutArgument outArgument) { this.RewriteChildren((Expression)outArgument); outArgument.Expression = (ITargetExpression)this.Rewrite((TargetExpression)outArgument.Expression); }
/// <summary> /// Visits the specified out argument. /// </summary> /// <param name="outArgument">The out argument.</param> /// <returns></returns> public virtual IExpression Visit(OutArgument outArgument) { outArgument.Expression = Visit(outArgument.Expression); outArgument.Type = this.Visit(outArgument.Type); return outArgument; }
/// <summary> /// Visits the specified out argument. /// </summary> /// <param name="outArgument">The out argument.</param> public override void Visit(IOutArgument outArgument) { OutArgument mutableOutArgument = outArgument as OutArgument; if (alwaysMakeACopy || mutableOutArgument == null) mutableOutArgument = new OutArgument(outArgument); this.resultExpression = this.myCodeMutator.Visit(mutableOutArgument); }