예제 #1
0
        private MetadataCreateArray CreateMetadataArray(TypedConstant argument, EmitContext context)
        {
            Debug.Assert(!argument.Values.IsDefault);
            var values    = argument.Values;
            var arrayType = ((PEModuleBuilder)context.Module).Translate(
                (ArrayTypeSymbol)argument.TypeInternal
                );

            if (values.Length == 0)
            {
                return(new MetadataCreateArray(
                           arrayType,
                           arrayType.GetElementType(context),
                           ImmutableArray <Cci.IMetadataExpression> .Empty
                           ));
            }

            var metadataExprs = new Cci.IMetadataExpression[values.Length];

            for (int i = 0; i < values.Length; i++)
            {
                metadataExprs[i] = CreateMetadataExpression(values[i], context);
            }

            return(new MetadataCreateArray(
                       arrayType,
                       arrayType.GetElementType(context),
                       metadataExprs.AsImmutableOrNull()
                       ));
        }
예제 #2
0
 public HexPropertyMetadataNamedArgument(
     Cci.ITypeReference type,
     Cci.IMetadataExpression value
     )
 {
     _type  = type;
     _value = value;
 }
예제 #3
0
 public HexPropertyMetadataNamedArgument(Cci.ITypeReference type, Cci.IMetadataExpression value)
 {
     this.type = type;
     this.value = value;
 }
예제 #4
0
        private MetadataCreateArray CreateMetadataArray(TypedConstant argument, EmitContext context)
        {
            Debug.Assert(!argument.Values.IsDefault);
            var values = argument.Values;
            var arrayType = Emit.PEModuleBuilder.Translate((ArrayTypeSymbol)argument.Type);

            if (values.Length == 0)
            {
                return new MetadataCreateArray(arrayType,
                                               arrayType.GetElementType(context),
                                               ImmutableArray<Cci.IMetadataExpression>.Empty);
            }

            var metadataExprs = new Cci.IMetadataExpression[values.Length];
            for (int i = 0; i < values.Length; i++)
            {
                metadataExprs[i] = CreateMetadataExpression(values[i], context);
            }

            return new MetadataCreateArray(arrayType,
                                           arrayType.GetElementType(context),
                                           metadataExprs.AsImmutableOrNull());
        }