예제 #1
0
        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)));
                }
            }
        }
예제 #2
0
 internal static Tuple cil_custom_modifiers(ICustomModifierReceiver receiver, Type modifier, bool isRequired) =>
 new Tuple("cil_custom_modifiers", receiver, modifier, isRequired ? 1 : 0);