public override void WriteTo(ITextOutput output, ILAstWritingOptions options) { ILRange.WriteTo(output, options); output.Write("call.indirect "); ReturnType.WriteTo(output); output.Write('('); bool first = true; foreach (var(inst, type) in Arguments.Zip(ParameterTypes, (a, b) => (a, b))) { if (first) { first = false; } else { output.Write(", "); } inst.WriteTo(output, options); output.Write(" : "); type.WriteTo(output); } if (Arguments.Count > 0) { output.Write(", "); } functionPointer.WriteTo(output, options); output.Write(')'); }
public override void WriteTo(ITextOutput output, ILAstWritingOptions options) { WriteILRange(output, options); output.Write("call.indirect "); FunctionPointerType.ReturnType.WriteTo(output); output.Write('('); functionPointer.WriteTo(output, options); int firstArgument = IsInstance ? 1 : 0; if (firstArgument == 1) { output.Write(", "); Arguments[0].WriteTo(output, options); } foreach (var(inst, type) in Arguments.Zip(FunctionPointerType.ParameterTypes, (a, b) => (a, b))) { output.Write(", "); inst.WriteTo(output, options); output.Write(" : "); type.WriteTo(output); } if (Arguments.Count > 0) { output.Write(')'); } }