예제 #1
0
        ImmutableArray <Cci.ITypeReference> Cci.IGenericTypeInstanceReference.GetGenericArguments(EmitContext context)
        {
            PEModuleBuilder moduleBeingBuilt = (PEModuleBuilder)context.Module;
            var             builder          = ArrayBuilder <Microsoft.Cci.ITypeReference> .GetInstance();

            Debug.Assert(((Cci.ITypeReference) this).AsGenericTypeInstanceReference != null);

            var modifiers = default(ImmutableArray <ImmutableArray <CustomModifier> >);

            //if (this.HasTypeArgumentsCustomModifiers)
            //{
            //    modifiers = this.TypeArgumentsCustomModifiers;
            //}

            var arguments = this.TypeArguments; // .TypeArgumentsNoUseSiteDiagnostics;

            for (int i = 0; i < arguments.Length; i++)
            {
                var arg = moduleBeingBuilt.Translate(arguments[i], syntaxNodeOpt: context.SyntaxNodeOpt, diagnostics: context.Diagnostics);

                if (!modifiers.IsDefault && !modifiers[i].IsDefaultOrEmpty)
                {
                    arg = new Cci.ModifiedTypeReference(arg, modifiers[i].As <Cci.ICustomModifier>());
                }

                builder.Add(arg);
            }

            return(builder.ToImmutableAndFree());
        }
예제 #2
0
        ImmutableArray<Cci.ITypeReference> Cci.IGenericTypeInstanceReference.GetGenericArguments(EmitContext context)
        {
            PEModuleBuilder moduleBeingBuilt = (PEModuleBuilder)context.Module;
            var builder = ArrayBuilder<Microsoft.Cci.ITypeReference>.GetInstance();
            Debug.Assert(((Cci.ITypeReference)this).AsGenericTypeInstanceReference != null);

            var modifiers = default(ImmutableArray<ImmutableArray<CustomModifier>>);

            //if (this.HasTypeArgumentsCustomModifiers)
            //{
            //    modifiers = this.TypeArgumentsCustomModifiers;
            //}

            var arguments = this.TypeArguments; // .TypeArgumentsNoUseSiteDiagnostics;

            for (int i = 0; i < arguments.Length; i++)
            {
                var arg = moduleBeingBuilt.Translate(arguments[i], syntaxNodeOpt: context.SyntaxNodeOpt, diagnostics: context.Diagnostics);

                if (!modifiers.IsDefault && !modifiers[i].IsDefaultOrEmpty)
                {
                    arg = new Cci.ModifiedTypeReference(arg, modifiers[i].As<Cci.ICustomModifier>());
                }

                builder.Add(arg);
            }

            return builder.ToImmutableAndFree();
        }