Beispiel #1
0
        private static NIType AddGenericMutabilityTypeParameter(NIFunctionBuilder functionBuilder, string name)
        {
            var genericTypeParameters = functionBuilder.MakeGenericParameters(name);
            var parameterBuilder      = genericTypeParameters.ElementAt(0);

            SetMutabilityTypeAttribute((NIAttributedBaseBuilder)parameterBuilder);
            return(parameterBuilder.CreateType());
        }
Beispiel #2
0
        public static NIType AddGenericLifetimeTypeParameter(NIFunctionBuilder functionBuilder, string name)
        {
            var genericTypeParameters = functionBuilder.MakeGenericParameters(name);
            var parameterBuilder      = genericTypeParameters.ElementAt(0);

            DataTypes.SetLifetimeTypeAttribute((NIAttributedBaseBuilder)parameterBuilder);
            return(parameterBuilder.CreateType());
        }
Beispiel #3
0
        public static NIType AddGenericDataTypeParameter(NIFunctionBuilder functionBuilder, string name, params NITypeBuilder[] constraints)
        {
            var           genericTypeParameters = functionBuilder.MakeGenericParameters(name);
            NITypeBuilder typeBuilder           = genericTypeParameters.ElementAt(0);

            // HACK, but there seems to be no other public way to add constraints to an NITypeBuilder
            List <NITypeBuilder> builderConstraints = (List <NITypeBuilder>)((NIGenericTypeBuilder)typeBuilder).Constraints;

            builderConstraints.AddRange(constraints);

            return(typeBuilder.CreateType());
        }