[Mono-bugs] [Bug 73457][Nor] New - Mono not using the basetype for getting value of VALUETYPE(enum) from the constant table

bugzilla-daemon@bugzilla.ximian.com bugzilla-daemon@bugzilla.ximian.com
Tue, 8 Mar 2005 00:37:19 -0500 (EST)


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 radical@gmail.com.

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

--- shadow/73457	2005-03-08 00:37:19.000000000 -0500
+++ shadow/73457.tmp.19630	2005-03-08 00:37:19.000000000 -0500
@@ -0,0 +1,94 @@
+Bug#: 73457
+Product: Mono: Runtime
+Version: unspecified
+OS: 
+OS Details: 
+Status: NEW   
+Resolution: 
+Severity: 
+Priority: Normal
+Component: misc
+AssignedTo: mono-bugs@ximian.com                            
+ReportedBy: radical@gmail.com               
+QAContact: mono-bugs@ximian.com
+TargetMilestone: ---
+URL: 
+Cc: 
+Summary: Mono not using the basetype for getting value of VALUETYPE(enum) from the constant table
+
+Please fill in this template when reporting a bug, unless you know what you
+are doing.
+Description of Problem:
+
+If a default value is specified for a "[opt] valuetype" method parameter
+and assembled, mono gives a warning : 
+
+** (/home/ankit/mono-s/misc-s//lib/mono/1.0/mbas.exe:14136): WARNING **:
+type 0x11 should not be in constant table
+
+type 0x11 corresponds to MONO_TYPE_VALUETYPE.
+
+For eg. 
+    .method public hidebysig static void ^M
+            foo([opt] valuetype Ankit.Test.menum a) cil managed
+    {
+       .param[1] = int32 (0x4)
+
+Basically, mono is taking the type as VALUETYPE in
+mono_get_object_from_blob instead of taking its basetype.
+
+I'm attaching two files: t3.il and a.vb.
+
+$ ilasm.exe /dll t3.il
+$ vbc.exe -r:t3.dll a.vb
+
+The generated a.exe runs fine on ms.net, but gives the warning on mono.
+Compiling a.vb with mbas and the /r:t3.dll also gives the same warning.
+
+Actual Results:
+
+mbas -r:./t3.dll a.vb 
+MonoBASIC Compiler  0.95.0.0 - (c)2002, 2003, 2004, 2005 Rafael Teixeira
+--------
+THIS IS AN ALPHA SOFTWARE.
+--------
+
+** (/home/ankit/mono-s/misc-s//lib/mono/1.0/mbas.exe:14136): WARNING **:
+type 0x11 should not be in constant table
+error BC-0001: Internal Error : cannot handle the data typereceived from
+ParameterInfo class
+Exception: System.NullReferenceException: Object reference not set to an
+instance of an object
+in <0x0032f> Mono.MonoBASIC.Invocation:ConstructArgumentList
+(Mono.MonoBASIC.EmitContext ec, System.Collections.ArrayList Arguments,
+System.Reflection.MethodBase method)
+in <0x0052c> Mono.MonoBASIC.Invocation:OverloadResolve
+(Mono.MonoBASIC.EmitContext ec, Mono.MonoBASIC.MethodGroupExpr me,
+System.Collections.ArrayList Arguments, Location loc)
+in <0x0049b> Mono.MonoBASIC.Invocation:DoResolve
+(Mono.MonoBASIC.EmitContext ec)
+in <0x0016d> Mono.MonoBASIC.Expression:Resolve (Mono.MonoBASIC.EmitContext
+ec, ResolveFlags flags)
+in <0x00012> Mono.MonoBASIC.Expression:Resolve (Mono.MonoBASIC.EmitContext ec)
+in <0x0001d> Mono.MonoBASIC.StatementExpression:Resolve
+(Mono.MonoBASIC.EmitContext ec)
+in <0x00167> Mono.MonoBASIC.Block:Resolve (Mono.MonoBASIC.EmitContext ec)
+in <0x000cc> Mono.MonoBASIC.EmitContext:EmitTopBlock (Mono.MonoBASIC.Block
+block, System.String bname, Mono.MonoBASIC.InternalParameters ip, Location loc)
+in <0x0044d> Mono.MonoBASIC.MethodData:Emit (Mono.MonoBASIC.TypeContainer
+parent, Mono.MonoBASIC.Block block, System.Object kind)
+in <0x00031> Mono.MonoBASIC.Method:Emit (Mono.MonoBASIC.TypeContainer parent)
+in <0x00253> Mono.MonoBASIC.TypeContainer:Emit ()
+in <0x0030d> Mono.MonoBASIC.RootContext:EmitCode ()
+in <0x0003f> Mono.Languages.Driver:GenerateAssembly ()
+in <0x0004b> Mono.Languages.Driver:CompileAll ()
+Compilation failed: 1 Error(s), 0 warnings
+
+Expected Results:
+
+How often does this happen? 
+Everytime
+
+Additional Information:
+
+Proposed patch is also attached.