internal override IEnumerable <AttributeData> GetCustomAttributesToEmit(CommonModuleCompilationState compilationState) { // [param] if (IsParams) { yield return(DeclaringCompilation.CreateParamsAttribute()); } // [Nullable(1)] - does not return null if (HasNotNull && Type.IsReferenceType) { yield return(DeclaringCompilation.CreateNullableAttribute(NullableContextUtils.NotAnnotatedAttributeValue)); } // [DefaultValue] if (DefaultValueField != null) { yield return(DeclaringCompilation.CreateDefaultValueAttribute(ContainingType, DefaultValueField)); } // foreach (var attr in GetAttributes()) { yield return(attr); } }
internal override IEnumerable <AttributeData> GetCustomAttributesToEmit(CommonModuleCompilationState compilationState) { if (IsParams) { yield return(new SynthesizedAttributeData( (MethodSymbol)DeclaringCompilation.GetWellKnownTypeMember(WellKnownMember.System_ParamArrayAttribute__ctor), ImmutableArray <TypedConstant> .Empty, ImmutableArray <KeyValuePair <string, TypedConstant> > .Empty)); } yield break; }
internal override IEnumerable <AttributeData> GetCustomAttributesToEmit(CommonModuleCompilationState compilationState) { foreach (AttributeData attribute in GetAttributes()) { yield return(attribute); } // Yield hidden attributes last, order might be important. foreach (AttributeData attribute in _lazyHiddenAttributes) { yield return(attribute); } }
internal override IEnumerable <AttributeData> GetCustomAttributesToEmit(CommonModuleCompilationState compilationState) { var attrs = base.GetCustomAttributesToEmit(compilationState); if (_lazyAttributesToEmit.IsDefault) { _lazyAttributesToEmit = CreateAttributesToEmit().ToImmutableArray(); } attrs = attrs.Concat(_lazyAttributesToEmit); // return(attrs); }
internal override IEnumerable <AttributeData> GetCustomAttributesToEmit(CommonModuleCompilationState compilationState) { // [param] if (IsParams) { yield return(new SynthesizedAttributeData( (MethodSymbol)DeclaringCompilation.GetWellKnownTypeMember(WellKnownMember.System_ParamArrayAttribute__ctor), ImmutableArray <TypedConstant> .Empty, ImmutableArray <KeyValuePair <string, TypedConstant> > .Empty)); } // [NotNull] if (IsNotNull && Type.IsReferenceType) { yield return(new SynthesizedAttributeData( DeclaringCompilation.CoreMethods.Ctors.NotNullAttribute, ImmutableArray <TypedConstant> .Empty, ImmutableArray <KeyValuePair <string, TypedConstant> > .Empty)); } // [DefaultValue] if (this.Initializer is BoundArrayEx arr) { var typeParameter = new KeyValuePair <string, TypedConstant>("Type", new TypedConstant(DeclaringCompilation.CoreTypes.DefaultValueType.Symbol, TypedConstantKind.Enum, 1 /*PhpArray*/)); var namedparameters = ImmutableArray.Create(typeParameter); if (arr.Items.Length != 0) { try { var byteSymbol = DeclaringCompilation.GetSpecialType(SpecialType.System_Byte); var serializedValue = Encoding.UTF8.GetBytes(arr.PhpSerializeOrThrow()); var p = new KeyValuePair <string, TypedConstant>( "SerializedValue", new TypedConstant(DeclaringCompilation.CreateArrayTypeSymbol(byteSymbol), serializedValue.Select(DeclaringCompilation.CreateTypedConstant).AsImmutable())); namedparameters = namedparameters.Add(p); } catch (Exception ex) { throw new InvalidOperationException($"Cannot construct serialized parameter default value. Routine '{Routine.Name}' in {Routine.ContainingFile.RelativeFilePath}, {ex.Message}.", ex); } } yield return(new SynthesizedAttributeData( DeclaringCompilation.CoreMethods.Ctors.DefaultValueAttribute, ImmutableArray <TypedConstant> .Empty, namedparameters)); } // yield break; }
internal override IEnumerable <AttributeData> GetCustomAttributesToEmit(CommonModuleCompilationState compilationState) { foreach (AttributeData attribute in GetAttributes()) { yield return(attribute); } //// Yield hidden attributes last, order might be important. //if (FilterOutDecimalConstantAttribute()) //{ // var containingPEModuleSymbol = _containingType.ContainingPEModule; // yield return new PEAttributeData(containingPEModuleSymbol, // containingPEModuleSymbol.Module.FindLastTargetAttribute(_handle, AttributeDescription.DecimalConstantAttribute).Handle); //} }
internal override IEnumerable <AttributeData> GetCustomAttributesToEmit(CommonModuleCompilationState compilationState) { // params if (IsParams) { yield return(DeclaringCompilation.CreateParamsAttribute()); } // TODO: preserve [NotNull] // [DefaultValue] if (DefaultValueField != null) { yield return(DeclaringCompilation.CreateDefaultValueAttribute(ContainingType, DefaultValueField)); } // yield break; }
internal override IEnumerable <AttributeData> GetCustomAttributesToEmit(CommonModuleCompilationState compilationState) { // params if (IsParams) { yield return(DeclaringCompilation.CreateParamsAttribute()); } // TODO: preserve [NotNull] // [DefaultValue] if (this.Initializer is BoundArrayEx arr) { yield return(DeclaringCompilation.CreateDefaultValueAttribute(_container, arr)); } // yield break; }
protected PEModuleBuilder( PhpCompilation compilation, SourceModuleSymbol sourceModule, Cci.ModulePropertiesForSerialization serializationProperties, IEnumerable<ResourceDescription> manifestResources, OutputKind outputKind, EmitOptions emitOptions) { Debug.Assert(sourceModule != null); Debug.Assert(serializationProperties != null); _compilation = compilation; _sourceModule = sourceModule; _serializationProperties = serializationProperties; this.ManifestResources = manifestResources; _outputKind = outputKind; _emitOptions = emitOptions; this.CompilationState = new CommonModuleCompilationState(); _debugDocuments = new ConcurrentDictionary<string, Cci.DebugSourceDocument>(compilation.IsCaseSensitive ? StringComparer.Ordinal : StringComparer.OrdinalIgnoreCase); _synthesized = new SynthesizedManager(this); AssemblyOrModuleSymbolToModuleRefMap.Add(sourceModule, this); }
internal override IEnumerable <AttributeData> GetCustomAttributesToEmit(CommonModuleCompilationState compilationState) { // [param] if (IsParams) { yield return(DeclaringCompilation.CreateParamsAttribute()); } // [NotNull] if (IsNotNull && Type.IsReferenceType) { yield return(DeclaringCompilation.CreateNotNullAttribute()); } // [DefaultValue] if (this.Initializer is BoundArrayEx arr) { yield return(DeclaringCompilation.CreateDefaultValueAttribute(Routine, arr)); } // yield break; }
internal override IEnumerable <AttributeData> GetCustomAttributesToEmit(CommonModuleCompilationState compilationState) { // [param] if (IsParams) { yield return(DeclaringCompilation.CreateParamsAttribute()); } // [NotNull] if (IsNotNull && Type.IsReferenceType) { yield return(DeclaringCompilation.CreateNotNullAttribute()); } // [DefaultValue] if (DefaultValueField != null) { yield return(DeclaringCompilation.CreateDefaultValueAttribute(ContainingType, DefaultValueField)); } // yield break; }
internal virtual IEnumerable <AttributeData> GetCustomAttributesToEmit(CommonModuleCompilationState compilationState) { return(this.GetAttributes()); }
internal override IEnumerable<AttributeData> GetCustomAttributesToEmit(CommonModuleCompilationState compilationState) { foreach (AttributeData attribute in GetAttributes()) { yield return attribute; } //// Yield hidden attributes last, order might be important. //if (FilterOutDecimalConstantAttribute()) //{ // var containingPEModuleSymbol = _containingType.ContainingPEModule; // yield return new PEAttributeData(containingPEModuleSymbol, // containingPEModuleSymbol.Module.FindLastTargetAttribute(_handle, AttributeDescription.DecimalConstantAttribute).Handle); //} }
internal virtual IEnumerable<AttributeData> GetCustomAttributesToEmit(CommonModuleCompilationState compilationState) { return this.GetAttributes(); }
internal override IEnumerable<AttributeData> GetCustomAttributesToEmit(CommonModuleCompilationState compilationState) { return GetAttributes(); }
internal override IEnumerable <AttributeData> GetCustomAttributesToEmit(CommonModuleCompilationState compilationState) { return(GetAttributes()); }
//public override ImmutableArray<AttributeData> GetAttributes() //{ // if (_lazyCustomAttributes.IsDefault) // { // Debug.Assert(!_handle.IsNil); // var containingPEModuleSymbol = (PEModuleSymbol)this.ContainingModule; // // Filter out ParamArrayAttributes if necessary and cache // // the attribute handle for GetCustomAttributesToEmit // bool filterOutParamArrayAttribute = (!_lazyIsParams.HasValue() || _lazyIsParams.Value()); // ConstantValue defaultValue = this.ExplicitDefaultConstantValue; // AttributeDescription filterOutConstantAttributeDescription = default(AttributeDescription); // if ((object)defaultValue != null) // { // if (defaultValue.Discriminator == ConstantValueTypeDiscriminator.DateTime) // { // filterOutConstantAttributeDescription = AttributeDescription.DateTimeConstantAttribute; // } // else if (defaultValue.Discriminator == ConstantValueTypeDiscriminator.Decimal) // { // filterOutConstantAttributeDescription = AttributeDescription.DecimalConstantAttribute; // } // } // if (filterOutParamArrayAttribute || filterOutConstantAttributeDescription.Signatures != null) // { // CustomAttributeHandle paramArrayAttribute; // CustomAttributeHandle constantAttribute; // ImmutableArray<AttributeData> attributes = // containingPEModuleSymbol.GetCustomAttributesForToken( // _handle, // out paramArrayAttribute, // filterOutParamArrayAttribute ? AttributeDescription.ParamArrayAttribute : default(AttributeDescription), // out constantAttribute, // filterOutConstantAttributeDescription); // if (!paramArrayAttribute.IsNil || !constantAttribute.IsNil) // { // var builder = ArrayBuilder<AttributeData>.GetInstance(); // if (!paramArrayAttribute.IsNil) // { // builder.Add(new PEAttributeData(containingPEModuleSymbol, paramArrayAttribute)); // } // if (!constantAttribute.IsNil) // { // builder.Add(new PEAttributeData(containingPEModuleSymbol, constantAttribute)); // } // ImmutableInterlocked.InterlockedInitialize(ref _lazyHiddenAttributes, builder.ToImmutableAndFree()); // } // else // { // ImmutableInterlocked.InterlockedInitialize(ref _lazyHiddenAttributes, ImmutableArray<CSharpAttributeData>.Empty); // } // if (!_lazyIsParams.HasValue()) // { // Debug.Assert(filterOutParamArrayAttribute); // _lazyIsParams = (!paramArrayAttribute.IsNil).ToThreeState(); // } // ImmutableInterlocked.InterlockedInitialize( // ref _lazyCustomAttributes, // attributes); // } // else // { // ImmutableInterlocked.InterlockedInitialize(ref _lazyHiddenAttributes, ImmutableArray<CSharpAttributeData>.Empty); // containingPEModuleSymbol.LoadCustomAttributes(_handle, ref _lazyCustomAttributes); // } // } // Debug.Assert(!_lazyHiddenAttributes.IsDefault); // return _lazyCustomAttributes; //} internal override IEnumerable<AttributeData> GetCustomAttributesToEmit(CommonModuleCompilationState compilationState) { foreach (AttributeData attribute in GetAttributes()) { yield return attribute; } // Yield hidden attributes last, order might be important. foreach (AttributeData attribute in _lazyHiddenAttributes) { yield return attribute; } }