[Mono-bugs] [Bug 75284][Nor] New - Type arguments of custom attributes in System assembly have wrong type names in IL

bugzilla-daemon at bugzilla.ximian.com bugzilla-daemon at bugzilla.ximian.com
Thu Jun 16 13:56:48 EDT 2005


Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.

Changed by gert.driesen at pandora.be.

http://bugzilla.ximian.com/show_bug.cgi?id=75284

--- shadow/75284	2005-06-16 13:56:48.000000000 -0400
+++ shadow/75284.tmp.741	2005-06-16 13:56:48.000000000 -0400
@@ -0,0 +1,98 @@
+Bug#: 75284
+Product: Mono: Runtime
+Version: 1.1
+OS: 
+OS Details: 
+Status: NEW   
+Resolution: 
+Severity: 
+Priority: Normal
+Component: misc
+AssignedTo: mono-bugs at ximian.com                            
+ReportedBy: gert.driesen at pandora.be               
+QAContact: mono-bugs at ximian.com
+TargetMilestone: ---
+URL: 
+Cc: 
+Summary: Type arguments of custom attributes in System assembly have wrong type names in IL
+
+Apparently, some Type arguments of custom attributes in, for example, the 
+System assembly have a bad type name.
+
+For example, look at the IL that's emitted for the 
+System.ComponentModel.TypeConverterAttribute of the 
+System.ComponentModel.IComponent interface in the System assembly.
+
+The ctor of the TypeConverterAttribute takes a Type, and in the source 
+its defined like this :
+
+[TypeConverter (typeof (System.ComponentModel.ComponentConverter))]
+
+However, in the emitted assembly the type name looks like this :
+
+System.ComponentModel.ComponentConverter, System, Version=0.0.0.0, 
+Culture=neutral, PublicKeyToken=null
+
+Ofcourse both the version number and the publickeytoken are not correct.
+
+Also MS does not emit an AssemblyQualifiedName if the type is in the same 
+assembly.
+
+Note: On Windows I can no longer build Mono, and I think it might be 
+because of this issue. 
+
+If I'm not mistaken, the 1.0 profile assemblies are built using csc on 
+Windows. This means that the Type argument is emitted with its full name 
+and not its assembly qualified name. 
+
+Then when the 2.0 profile is bootstrapped its first uses the System 
+assembly built using csc and fails when verifying CLS compliance as csc 
+did not emit assembly qualified type names (for Type arguments of custom 
+attributes) and apparently mcs relies on these being fully qualified.
+
+** (../../class/lib/default/mcs.exe:3456): WARNING **: Cannot load 
+type 'System.
+ComponentModel.Design.IDesigner'
+
+Unhandled Exception: System.NullReferenceException: Object reference not 
+set to an instance of an object
+in <0x00010> System.ComponentModel.DesignerAttribute:.ctor (System.String 
+designerTypeName, System.Type designerBaseType)
+in <0x00000> <unknown method>
+in (wrapper managed-to-native) 
+System.MonoCustomAttrs:GetCustomAttributesInternal 
+(System.Reflection.ICustomAttributeProvider,bool)
+in <0x0000d> System.MonoCustomAttrs:GetCustomAttributesBase 
+(ICustomAttributeProvider obj)
+in <0x0001a> System.MonoCustomAttrs:GetCustomAttributes 
+(ICustomAttributeProvider obj, System.Type attributeType, Boolean inherit)
+in <0x0001a> System.MonoType:GetCustomAttributes (System.Type 
+attributeType, Boolean inherit)
+in <0x0003d> Mono.CSharp.AttributeTester:AnalyzeTypeCompliance 
+(System.Type type)
+in <0x000e0> Mono.CSharp.AttributeTester:IsClsCompliant (System.Type type)
+in <0x000b0> Mono.CSharp.AttributeTester:VerifyTopLevelNameClsCompliance 
+()
+in <0x00b91> Mono.CSharp.Driver:MainDriver (System.String[] args)
+in <0x0000f> Mono.CSharp.Driver:Main (System.String[] args)
+make[8]: *** [../../class/lib/net_2_0_bootstrap/System.Xml.dll] Error 1
+make[8]: Leaving directory 
+`/cygdrive/d/projects/mono/head/mcs/class/System.XML'
+
+make[7]: *** [do-all] Error 2
+make[7]: Leaving directory 
+`/cygdrive/d/projects/mono/head/mcs/class/System.XML'
+
+make[6]: *** [all-recursive] Error 1
+make[6]: Leaving directory `/cygdrive/d/projects/mono/head/mcs/class'
+make[5]: *** [all-recursive] Error 1
+make[5]: Leaving directory `/cygdrive/d/projects/mono/head/mcs'
+make[4]: *** [profile-do--net_2_0_bootstrap--all] Error 2
+make[4]: Leaving directory `/cygdrive/d/projects/mono/head/mcs'
+make[3]: *** [profiles-do--all] Error 2
+make[3]: Leaving directory `/cygdrive/d/projects/mono/head/mcs'
+make[2]: *** [all-local] Error 2
+make[2]: Leaving directory `/cygdrive/d/projects/mono/head/mono/runtime'
+make[1]: *** [all-recursive] Error 1
+make[1]: Leaving directory `/cygdrive/d/projects/mono/head/mono'
+make: *** [all] Error 2


More information about the mono-bugs mailing list