internal static IEnumerable <IExtractionProduct> GetParameterExtractionProducts(IEnumerable <Type> parameterTypes, IParameterizable parameterizable, ICustomModifierReceiver receiver, Context cx, int firstChildIndex) { var i = firstChildIndex; foreach (var p in parameterTypes) { var t = p; if (t is ModifiedType mt) { t = mt.Unmodified; yield return(Tuples.cil_custom_modifiers(receiver, mt.Modifier, mt.IsRequired)); } if (t is ByRefType brt) { t = brt.ElementType; var parameter = cx.Populate(new Parameter(cx, parameterizable, i++, t)); yield return(parameter); yield return(Tuples.cil_type_annotation(parameter, TypeAnnotation.Ref)); } else { yield return(cx.Populate(new Parameter(cx, parameterizable, i++, t))); } } }
internal static Tuple cil_custom_modifiers(ICustomModifierReceiver receiver, Type modifier, bool isRequired) => new Tuple("cil_custom_modifiers", receiver, modifier, isRequired ? 1 : 0);