/// <summary> /// Substitutes arguments according to specified substitutions. /// </summary> /// <param name="substitutions">The substitutions.</param> /// <returns>CallEditInfo.</returns> internal CallEditInfo Substitute(Dictionary <Instance, VariableName> substitutions) { var args = new List <object>(CallArguments.Length); foreach (var arg in CallArguments) { args.Add(subsitute(arg, substitutions)); } var call = new CallEditInfo( subsitute(ThisObj, substitutions), CallName, IsExtensionCall, args.ToArray() ); call.ReturnName = ReturnName; return(call); }
/// <summary> /// Prepends the call before given block. /// </summary> /// <param name="block">The block.</param> /// <param name="call">The prepended call.</param> public void PrependCall(ExecutedBlock block, CallEditInfo call) { var prependTransform = block.Info.BlockTransformProvider.PrependCall(call); Apply(prependTransform); }
/// <summary> /// Add described call after current instruction block. /// </summary> /// <param name="call">Definition of created call.</param> /// <returns>Call creation transformation.</returns> public abstract Transformation AppendCall(CallEditInfo call);
public override Transformation AppendCall(CallEditInfo call) { return(new EmptyTransformation()); }