private static void GetAssemblyDescriptionAttributes(AssemblySymbol assembly, ArrayBuilder<CSharpAttributeData> list) { foreach (var attrData in assembly.GetAttributes()) { if (attrData.IsTargetAttribute(assembly, AttributeDescription.AssemblyDescriptionAttribute)) { list.Add(attrData); } } }
private static void TestDuplicateAssemblyAttributesNotEmitted(AssemblySymbol assembly, int expectedSrcAttrCount, int expectedDuplicateAttrCount, string attrTypeName) { // SOURCE ATTRIBUTES var allSrcAttrs = assembly.GetAttributes(); var srcAttrs = allSrcAttrs.Where((a) => string.Equals(a.AttributeClass.Name, attrTypeName, StringComparison.Ordinal)).AsImmutable(); Assert.Equal(expectedSrcAttrCount, srcAttrs.Length); // EMITTED ATTRIBUTES // We should get only unique netmodule/assembly attributes here, duplicate ones should not be emitted. int expectedEmittedAttrsCount = expectedSrcAttrCount - expectedDuplicateAttrCount; var allEmittedAttrs = assembly.GetCustomAttributesToEmit(emittingAssemblyAttributesInNetModule: false); var emittedAttrs = allEmittedAttrs.Where((a) => string.Equals(a.AttributeClass.Name, attrTypeName, StringComparison.Ordinal)).AsImmutable(); Assert.Equal(expectedEmittedAttrsCount, emittedAttrs.Length); var uniqueAttributes = new HashSet<CSharpAttributeData>(comparer: CommonAttributeDataComparer.Instance); foreach (var attr in emittedAttrs) { Assert.True(uniqueAttributes.Add(attr)); } }
private static IEnumerable<CSharpAttributeData> GetAssemblyDescriptionAttributes(AssemblySymbol assembly) { return assembly.GetAttributes().Where(data => data.IsTargetAttribute(assembly, AttributeDescription.AssemblyDescriptionAttribute)); }