diff --git a/ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj b/ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj
index 3c8938bcb..7a1f3e8bc 100644
--- a/ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj
+++ b/ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj
@@ -67,6 +67,7 @@
+
diff --git a/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs b/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs
index 15cd282f6..b306afe72 100644
--- a/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs
+++ b/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs
@@ -320,6 +320,12 @@ namespace ICSharpCode.Decompiler.Tests
RunForLibrary(cscOptions: cscOptions);
}
+ [Test]
+ public void CustomAttributeConflicts([ValueSource(nameof(defaultOptions))] CSharpCompilerOptions cscOptions)
+ {
+ RunForLibrary(cscOptions: cscOptions);
+ }
+
[Test]
public void CustomAttributeSamples([ValueSource(nameof(defaultOptions))] CSharpCompilerOptions cscOptions)
{
diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CustomAttributeConflicts.cs b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CustomAttributeConflicts.cs
new file mode 100644
index 000000000..4a2892ffb
--- /dev/null
+++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CustomAttributeConflicts.cs
@@ -0,0 +1,184 @@
+using CustomAttributeConflicts.NS1;
+using CustomAttributeConflicts.NS2;
+using CustomAttributeConflicts.NSWithConflictingTypes;
+using CustomAttributeConflicts.NSWithConflictingTypes2;
+using System;
+
+namespace CustomAttributeConflicts
+{
+ internal class AttributeWithSameNameAsNormalType
+ {
+ }
+
+ internal class TestClass
+ {
+ [Other]
+ public void Test1()
+ {
+ }
+
+ [CustomAttributeConflicts.NS1.Simple]
+ public void Test2()
+ {
+ }
+
+ [CustomAttributeConflicts.NS2.Simple]
+ public void Test3()
+ {
+ }
+
+ [CustomAttributeConflicts.NS1.AttributeWithSameNameAsNormalType]
+ public void Test4()
+ {
+ }
+
+ [@My]
+ public void Test5()
+ {
+ }
+
+ [@MyAttribute]
+ public void Test6()
+ {
+ }
+
+ [CustomAttributeConflicts.NSWithConflictingTypes2.@MyOther]
+ public void Test7()
+ {
+ }
+
+ [CustomAttributeConflicts.NSWithConflictingTypes2.@MyOtherAttribute]
+ public void Test8()
+ {
+ }
+ }
+}
+// The order of types in namespaces is completely different when compiling with the Roslyn compiler
+#if ROSLYN
+namespace CustomAttributeConflicts.NS1
+{
+ internal class OtherAttribute : Attribute
+ {
+ }
+ internal class SimpleAttribute : Attribute
+ {
+ }
+}
+namespace CustomAttributeConflicts.NS2
+{
+ internal class SimpleAttribute : Attribute
+ {
+ }
+}
+namespace CustomAttributeConflicts.NS1
+{
+ internal class AttributeWithSameNameAsNormalType : Attribute
+ {
+ }
+}
+namespace CustomAttributeConflicts.NSWithConflictingTypes
+{
+ internal class My : Attribute
+ {
+ }
+ internal class MyAttribute : Attribute
+ {
+ }
+}
+namespace CustomAttributeConflicts.NSWithConflictingTypes2
+{
+
+ internal class MyOther : Attribute
+ {
+ }
+ internal class MyOtherAttribute : Attribute
+ {
+ }
+ internal class MyOtherAttributeAttribute : Attribute
+ {
+ }
+}
+namespace CustomAttributeConflicts.NSWithConflictingTypes
+{
+ internal class MyAttributeAttribute : Attribute
+ {
+ }
+ internal class MyOther : Attribute
+ {
+ }
+ internal class MyOtherAttribute : Attribute
+ {
+ }
+ internal class MyOtherAttributeAttribute : Attribute
+ {
+ }
+}
+#else
+namespace CustomAttributeConflicts.NS1
+{
+ internal class OtherAttribute : Attribute
+ {
+ }
+
+ internal class SimpleAttribute : Attribute
+ {
+ }
+}
+
+namespace CustomAttributeConflicts.NS2
+{
+ internal class SimpleAttribute : Attribute
+ {
+ }
+}
+
+namespace CustomAttributeConflicts.NS1
+{
+ internal class AttributeWithSameNameAsNormalType : Attribute
+ {
+ }
+}
+namespace CustomAttributeConflicts.NSWithConflictingTypes
+{
+ internal class My : Attribute
+ {
+ }
+ internal class MyAttribute : Attribute
+ {
+ }
+}
+namespace CustomAttributeConflicts.NSWithConflictingTypes2
+{
+ internal class MyOther : Attribute
+ {
+ }
+ internal class MyOtherAttribute : Attribute
+ {
+ }
+}
+namespace CustomAttributeConflicts.NSWithConflictingTypes
+{
+ internal class MyAttributeAttribute : Attribute
+ {
+ }
+
+ internal class MyOther : Attribute
+ {
+ }
+
+ internal class MyOtherAttribute : Attribute
+ {
+ }
+
+ internal class MyOtherAttributeAttribute : Attribute
+ {
+ }
+}
+
+namespace CustomAttributeConflicts.NSWithConflictingTypes2
+{
+ internal class MyOtherAttributeAttribute : Attribute
+ {
+ }
+}
+#endif
\ No newline at end of file
diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CustomAttributeConflicts.il b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CustomAttributeConflicts.il
new file mode 100644
index 000000000..e3e19eea9
--- /dev/null
+++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CustomAttributeConflicts.il
@@ -0,0 +1,340 @@
+
+
+
+
+// Metadata version: v4.0.30319
+.assembly extern mscorlib
+{
+ .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+ .ver 4:0:0:0
+}
+.assembly CustomAttributeConflicts
+{
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
+ 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
+ .permissionset reqmin
+ = {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}}
+ .hash algorithm 0x00008004
+ .ver 0:0:0:0
+}
+.module CustomAttributeConflicts.dll
+.custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 )
+.imagebase 0x10000000
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003 // WINDOWS_CUI
+.corflags 0x00000001 // ILONLY
+
+
+// =============== CLASS MEMBERS DECLARATION ===================
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.AttributeWithSameNameAsNormalType
+ extends [mscorlib]System.Object
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Object::.ctor()
+ IL_0006: ret
+ } // end of method AttributeWithSameNameAsNormalType::.ctor
+
+} // end of class CustomAttributeConflicts.AttributeWithSameNameAsNormalType
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.TestClass
+ extends [mscorlib]System.Object
+{
+ .method public hidebysig instance void
+ Test1() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NS1.OtherAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 2 (0x2)
+ .maxstack 8
+ IL_0000: nop
+ IL_0001: ret
+ } // end of method TestClass::Test1
+
+ .method public hidebysig instance void
+ Test2() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NS1.SimpleAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 2 (0x2)
+ .maxstack 8
+ IL_0000: nop
+ IL_0001: ret
+ } // end of method TestClass::Test2
+
+ .method public hidebysig instance void
+ Test3() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NS2.SimpleAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 2 (0x2)
+ .maxstack 8
+ IL_0000: nop
+ IL_0001: ret
+ } // end of method TestClass::Test3
+
+ .method public hidebysig instance void
+ Test4() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NS1.AttributeWithSameNameAsNormalType::.ctor() = ( 01 00 00 00 )
+ // Code size 2 (0x2)
+ .maxstack 8
+ IL_0000: nop
+ IL_0001: ret
+ } // end of method TestClass::Test4
+
+ .method public hidebysig instance void
+ Test5() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NSWithConflictingTypes.My::.ctor() = ( 01 00 00 00 )
+ // Code size 2 (0x2)
+ .maxstack 8
+ IL_0000: nop
+ IL_0001: ret
+ } // end of method TestClass::Test5
+
+ .method public hidebysig instance void
+ Test6() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NSWithConflictingTypes.MyAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 2 (0x2)
+ .maxstack 8
+ IL_0000: nop
+ IL_0001: ret
+ } // end of method TestClass::Test6
+
+ .method public hidebysig instance void
+ Test7() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NSWithConflictingTypes2.MyOther::.ctor() = ( 01 00 00 00 )
+ // Code size 2 (0x2)
+ .maxstack 8
+ IL_0000: nop
+ IL_0001: ret
+ } // end of method TestClass::Test7
+
+ .method public hidebysig instance void
+ Test8() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 2 (0x2)
+ .maxstack 8
+ IL_0000: nop
+ IL_0001: ret
+ } // end of method TestClass::Test8
+
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Object::.ctor()
+ IL_0006: ret
+ } // end of method TestClass::.ctor
+
+} // end of class CustomAttributeConflicts.TestClass
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NS1.OtherAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method OtherAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NS1.OtherAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NS1.SimpleAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method SimpleAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NS1.SimpleAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NS2.SimpleAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method SimpleAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NS2.SimpleAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NS1.AttributeWithSameNameAsNormalType
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method AttributeWithSameNameAsNormalType::.ctor
+
+} // end of class CustomAttributeConflicts.NS1.AttributeWithSameNameAsNormalType
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.My
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method My::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.My
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes2.MyOther
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOther::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes2.MyOther
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOtherAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyAttributeAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyAttributeAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyAttributeAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyOther
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOther::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyOther
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyOtherAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOtherAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyOtherAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyOtherAttributeAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOtherAttributeAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyOtherAttributeAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttributeAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOtherAttributeAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttributeAttribute
+
+
+// =============================================================
+
+// *********** DISASSEMBLY COMPLETE ***********************
diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CustomAttributeConflicts.opt.il b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CustomAttributeConflicts.opt.il
new file mode 100644
index 000000000..6c6098f3a
--- /dev/null
+++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CustomAttributeConflicts.opt.il
@@ -0,0 +1,332 @@
+
+
+
+
+// Metadata version: v4.0.30319
+.assembly extern mscorlib
+{
+ .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+ .ver 4:0:0:0
+}
+.assembly CustomAttributeConflicts.opt
+{
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
+ 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
+ .permissionset reqmin
+ = {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}}
+ .hash algorithm 0x00008004
+ .ver 0:0:0:0
+}
+.module CustomAttributeConflicts.opt.dll
+.custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 )
+.imagebase 0x10000000
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003 // WINDOWS_CUI
+.corflags 0x00000001 // ILONLY
+
+
+// =============== CLASS MEMBERS DECLARATION ===================
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.AttributeWithSameNameAsNormalType
+ extends [mscorlib]System.Object
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Object::.ctor()
+ IL_0006: ret
+ } // end of method AttributeWithSameNameAsNormalType::.ctor
+
+} // end of class CustomAttributeConflicts.AttributeWithSameNameAsNormalType
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.TestClass
+ extends [mscorlib]System.Object
+{
+ .method public hidebysig instance void
+ Test1() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NS1.OtherAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 1 (0x1)
+ .maxstack 8
+ IL_0000: ret
+ } // end of method TestClass::Test1
+
+ .method public hidebysig instance void
+ Test2() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NS1.SimpleAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 1 (0x1)
+ .maxstack 8
+ IL_0000: ret
+ } // end of method TestClass::Test2
+
+ .method public hidebysig instance void
+ Test3() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NS2.SimpleAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 1 (0x1)
+ .maxstack 8
+ IL_0000: ret
+ } // end of method TestClass::Test3
+
+ .method public hidebysig instance void
+ Test4() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NS1.AttributeWithSameNameAsNormalType::.ctor() = ( 01 00 00 00 )
+ // Code size 1 (0x1)
+ .maxstack 8
+ IL_0000: ret
+ } // end of method TestClass::Test4
+
+ .method public hidebysig instance void
+ Test5() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NSWithConflictingTypes.My::.ctor() = ( 01 00 00 00 )
+ // Code size 1 (0x1)
+ .maxstack 8
+ IL_0000: ret
+ } // end of method TestClass::Test5
+
+ .method public hidebysig instance void
+ Test6() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NSWithConflictingTypes.MyAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 1 (0x1)
+ .maxstack 8
+ IL_0000: ret
+ } // end of method TestClass::Test6
+
+ .method public hidebysig instance void
+ Test7() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NSWithConflictingTypes2.MyOther::.ctor() = ( 01 00 00 00 )
+ // Code size 1 (0x1)
+ .maxstack 8
+ IL_0000: ret
+ } // end of method TestClass::Test7
+
+ .method public hidebysig instance void
+ Test8() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 1 (0x1)
+ .maxstack 8
+ IL_0000: ret
+ } // end of method TestClass::Test8
+
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Object::.ctor()
+ IL_0006: ret
+ } // end of method TestClass::.ctor
+
+} // end of class CustomAttributeConflicts.TestClass
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NS1.OtherAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method OtherAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NS1.OtherAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NS1.SimpleAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method SimpleAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NS1.SimpleAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NS2.SimpleAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method SimpleAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NS2.SimpleAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NS1.AttributeWithSameNameAsNormalType
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method AttributeWithSameNameAsNormalType::.ctor
+
+} // end of class CustomAttributeConflicts.NS1.AttributeWithSameNameAsNormalType
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.My
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method My::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.My
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes2.MyOther
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOther::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes2.MyOther
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOtherAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyAttributeAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyAttributeAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyAttributeAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyOther
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOther::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyOther
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyOtherAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOtherAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyOtherAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyOtherAttributeAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOtherAttributeAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyOtherAttributeAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttributeAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOtherAttributeAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttributeAttribute
+
+
+// =============================================================
+
+// *********** DISASSEMBLY COMPLETE ***********************
diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CustomAttributeConflicts.opt.roslyn.il b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CustomAttributeConflicts.opt.roslyn.il
new file mode 100644
index 000000000..1a6fb98b7
--- /dev/null
+++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CustomAttributeConflicts.opt.roslyn.il
@@ -0,0 +1,336 @@
+
+
+
+
+// Metadata version: v4.0.30319
+.assembly extern mscorlib
+{
+ .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+ .ver 4:0:0:0
+}
+.assembly CustomAttributeConflicts
+{
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
+ 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
+
+ // --- The following custom attribute is added automatically, do not uncomment -------
+ // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 )
+
+ .permissionset reqmin
+ = {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}}
+ .hash algorithm 0x00008004
+ .ver 0:0:0:0
+}
+.module CustomAttributeConflicts.dll
+.custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 )
+.imagebase 0x10000000
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003 // WINDOWS_CUI
+.corflags 0x00000001 // ILONLY
+
+
+// =============== CLASS MEMBERS DECLARATION ===================
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.AttributeWithSameNameAsNormalType
+ extends [mscorlib]System.Object
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Object::.ctor()
+ IL_0006: ret
+ } // end of method AttributeWithSameNameAsNormalType::.ctor
+
+} // end of class CustomAttributeConflicts.AttributeWithSameNameAsNormalType
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.TestClass
+ extends [mscorlib]System.Object
+{
+ .method public hidebysig instance void
+ Test1() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NS1.OtherAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 1 (0x1)
+ .maxstack 8
+ IL_0000: ret
+ } // end of method TestClass::Test1
+
+ .method public hidebysig instance void
+ Test2() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NS1.SimpleAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 1 (0x1)
+ .maxstack 8
+ IL_0000: ret
+ } // end of method TestClass::Test2
+
+ .method public hidebysig instance void
+ Test3() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NS2.SimpleAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 1 (0x1)
+ .maxstack 8
+ IL_0000: ret
+ } // end of method TestClass::Test3
+
+ .method public hidebysig instance void
+ Test4() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NS1.AttributeWithSameNameAsNormalType::.ctor() = ( 01 00 00 00 )
+ // Code size 1 (0x1)
+ .maxstack 8
+ IL_0000: ret
+ } // end of method TestClass::Test4
+
+ .method public hidebysig instance void
+ Test5() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NSWithConflictingTypes.My::.ctor() = ( 01 00 00 00 )
+ // Code size 1 (0x1)
+ .maxstack 8
+ IL_0000: ret
+ } // end of method TestClass::Test5
+
+ .method public hidebysig instance void
+ Test6() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NSWithConflictingTypes.MyAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 1 (0x1)
+ .maxstack 8
+ IL_0000: ret
+ } // end of method TestClass::Test6
+
+ .method public hidebysig instance void
+ Test7() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NSWithConflictingTypes2.MyOther::.ctor() = ( 01 00 00 00 )
+ // Code size 1 (0x1)
+ .maxstack 8
+ IL_0000: ret
+ } // end of method TestClass::Test7
+
+ .method public hidebysig instance void
+ Test8() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 1 (0x1)
+ .maxstack 8
+ IL_0000: ret
+ } // end of method TestClass::Test8
+
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Object::.ctor()
+ IL_0006: ret
+ } // end of method TestClass::.ctor
+
+} // end of class CustomAttributeConflicts.TestClass
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes2.MyOther
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOther::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes2.MyOther
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOtherAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttributeAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOtherAttributeAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttributeAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.My
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method My::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.My
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyAttributeAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyAttributeAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyAttributeAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyOther
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOther::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyOther
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyOtherAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOtherAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyOtherAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyOtherAttributeAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method MyOtherAttributeAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyOtherAttributeAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NS2.SimpleAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method SimpleAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NS2.SimpleAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NS1.OtherAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method OtherAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NS1.OtherAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NS1.SimpleAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method SimpleAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NS1.SimpleAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NS1.AttributeWithSameNameAsNormalType
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 7 (0x7)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: ret
+ } // end of method AttributeWithSameNameAsNormalType::.ctor
+
+} // end of class CustomAttributeConflicts.NS1.AttributeWithSameNameAsNormalType
+
+
+// =============================================================
+
+// *********** DISASSEMBLY COMPLETE ***********************
diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CustomAttributeConflicts.roslyn.il b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CustomAttributeConflicts.roslyn.il
new file mode 100644
index 000000000..3494427e1
--- /dev/null
+++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/CustomAttributeConflicts.roslyn.il
@@ -0,0 +1,359 @@
+
+
+
+
+// Metadata version: v4.0.30319
+.assembly extern mscorlib
+{
+ .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+ .ver 4:0:0:0
+}
+.assembly CustomAttributeConflicts
+{
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
+ .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
+ 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
+
+ // --- The following custom attribute is added automatically, do not uncomment -------
+ // .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 07 01 00 00 00 00 )
+
+ .permissionset reqmin
+ = {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}}
+ .hash algorithm 0x00008004
+ .ver 0:0:0:0
+}
+.module CustomAttributeConflicts.dll
+.custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 )
+.imagebase 0x10000000
+.file alignment 0x00000200
+.stackreserve 0x00100000
+.subsystem 0x0003 // WINDOWS_CUI
+.corflags 0x00000001 // ILONLY
+
+
+// =============== CLASS MEMBERS DECLARATION ===================
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.AttributeWithSameNameAsNormalType
+ extends [mscorlib]System.Object
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 8 (0x8)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Object::.ctor()
+ IL_0006: nop
+ IL_0007: ret
+ } // end of method AttributeWithSameNameAsNormalType::.ctor
+
+} // end of class CustomAttributeConflicts.AttributeWithSameNameAsNormalType
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.TestClass
+ extends [mscorlib]System.Object
+{
+ .method public hidebysig instance void
+ Test1() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NS1.OtherAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 2 (0x2)
+ .maxstack 8
+ IL_0000: nop
+ IL_0001: ret
+ } // end of method TestClass::Test1
+
+ .method public hidebysig instance void
+ Test2() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NS1.SimpleAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 2 (0x2)
+ .maxstack 8
+ IL_0000: nop
+ IL_0001: ret
+ } // end of method TestClass::Test2
+
+ .method public hidebysig instance void
+ Test3() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NS2.SimpleAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 2 (0x2)
+ .maxstack 8
+ IL_0000: nop
+ IL_0001: ret
+ } // end of method TestClass::Test3
+
+ .method public hidebysig instance void
+ Test4() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NS1.AttributeWithSameNameAsNormalType::.ctor() = ( 01 00 00 00 )
+ // Code size 2 (0x2)
+ .maxstack 8
+ IL_0000: nop
+ IL_0001: ret
+ } // end of method TestClass::Test4
+
+ .method public hidebysig instance void
+ Test5() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NSWithConflictingTypes.My::.ctor() = ( 01 00 00 00 )
+ // Code size 2 (0x2)
+ .maxstack 8
+ IL_0000: nop
+ IL_0001: ret
+ } // end of method TestClass::Test5
+
+ .method public hidebysig instance void
+ Test6() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NSWithConflictingTypes.MyAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 2 (0x2)
+ .maxstack 8
+ IL_0000: nop
+ IL_0001: ret
+ } // end of method TestClass::Test6
+
+ .method public hidebysig instance void
+ Test7() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NSWithConflictingTypes2.MyOther::.ctor() = ( 01 00 00 00 )
+ // Code size 2 (0x2)
+ .maxstack 8
+ IL_0000: nop
+ IL_0001: ret
+ } // end of method TestClass::Test7
+
+ .method public hidebysig instance void
+ Test8() cil managed
+ {
+ .custom instance void CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttribute::.ctor() = ( 01 00 00 00 )
+ // Code size 2 (0x2)
+ .maxstack 8
+ IL_0000: nop
+ IL_0001: ret
+ } // end of method TestClass::Test8
+
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 8 (0x8)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Object::.ctor()
+ IL_0006: nop
+ IL_0007: ret
+ } // end of method TestClass::.ctor
+
+} // end of class CustomAttributeConflicts.TestClass
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes2.MyOther
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 8 (0x8)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: nop
+ IL_0007: ret
+ } // end of method MyOther::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes2.MyOther
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 8 (0x8)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: nop
+ IL_0007: ret
+ } // end of method MyOtherAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttributeAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 8 (0x8)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: nop
+ IL_0007: ret
+ } // end of method MyOtherAttributeAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes2.MyOtherAttributeAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.My
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 8 (0x8)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: nop
+ IL_0007: ret
+ } // end of method My::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.My
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 8 (0x8)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: nop
+ IL_0007: ret
+ } // end of method MyAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyAttributeAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 8 (0x8)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: nop
+ IL_0007: ret
+ } // end of method MyAttributeAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyAttributeAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyOther
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 8 (0x8)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: nop
+ IL_0007: ret
+ } // end of method MyOther::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyOther
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyOtherAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 8 (0x8)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: nop
+ IL_0007: ret
+ } // end of method MyOtherAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyOtherAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NSWithConflictingTypes.MyOtherAttributeAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 8 (0x8)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: nop
+ IL_0007: ret
+ } // end of method MyOtherAttributeAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NSWithConflictingTypes.MyOtherAttributeAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NS2.SimpleAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 8 (0x8)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: nop
+ IL_0007: ret
+ } // end of method SimpleAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NS2.SimpleAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NS1.OtherAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 8 (0x8)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: nop
+ IL_0007: ret
+ } // end of method OtherAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NS1.OtherAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NS1.SimpleAttribute
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 8 (0x8)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: nop
+ IL_0007: ret
+ } // end of method SimpleAttribute::.ctor
+
+} // end of class CustomAttributeConflicts.NS1.SimpleAttribute
+
+.class private auto ansi beforefieldinit CustomAttributeConflicts.NS1.AttributeWithSameNameAsNormalType
+ extends [mscorlib]System.Attribute
+{
+ .method public hidebysig specialname rtspecialname
+ instance void .ctor() cil managed
+ {
+ // Code size 8 (0x8)
+ .maxstack 8
+ IL_0000: ldarg.0
+ IL_0001: call instance void [mscorlib]System.Attribute::.ctor()
+ IL_0006: nop
+ IL_0007: ret
+ } // end of method AttributeWithSameNameAsNormalType::.ctor
+
+} // end of class CustomAttributeConflicts.NS1.AttributeWithSameNameAsNormalType
+
+
+// =============================================================
+
+// *********** DISASSEMBLY COMPLETE ***********************