private void CreateEmbeddedAttributeIfNeeded( ref SynthesizedEmbeddedAttributeSymbol symbol, DiagnosticBag diagnostics, AttributeDescription description) { if (symbol is null) { AddDiagnosticsForExistingAttribute(description, diagnostics); symbol = new SynthesizedEmbeddedAttributeSymbol(description, _sourceAssembly.DeclaringCompilation, diagnostics); } }
private void CreateEmbeddedAttributeIfNeeded(ref SynthesizedEmbeddedAttributeSymbol symbol, DiagnosticBag diagnostics, AttributeDescription description) { if ((object)symbol == null) { var attributeMetadataName = MetadataTypeName.FromFullName(description.FullName); var userDefinedAttribute = _sourceAssembly.SourceModule.LookupTopLevelMetadataType(ref attributeMetadataName); Debug.Assert((object)userDefinedAttribute.ContainingModule == _sourceAssembly.SourceModule); if (!(userDefinedAttribute is MissingMetadataTypeSymbol)) { diagnostics.Add(ErrorCode.ERR_TypeReserved, userDefinedAttribute.Locations[0], description.FullName); } symbol = new SynthesizedEmbeddedAttributeSymbol(description, _sourceAssembly.DeclaringCompilation, diagnostics); } }
private void CreateEmbeddedAttributeIfNeeded( ref SynthesizedEmbeddedAttributeSymbol symbol, DiagnosticBag diagnostics, AttributeDescription description, Func <CSharpCompilation, NamedTypeSymbol, DiagnosticBag, ImmutableArray <MethodSymbol> > getAdditionalConstructors = null) { if ((object)symbol == null) { EnsureEmbeddedAttributeExists(); var attributeMetadataName = MetadataTypeName.FromFullName(description.FullName); var userDefinedAttribute = _sourceAssembly.SourceModule.LookupTopLevelMetadataType(ref attributeMetadataName); Debug.Assert((object)userDefinedAttribute.ContainingModule == _sourceAssembly.SourceModule); if (!(userDefinedAttribute is MissingMetadataTypeSymbol)) { diagnostics.Add(ErrorCode.ERR_TypeReserved, userDefinedAttribute.Locations[0], description.FullName); } symbol = new SynthesizedEmbeddedAttributeSymbol(description, _sourceAssembly.DeclaringCompilation, getAdditionalConstructors, diagnostics); } }