[Mono-bugs] [Bug 32416][Nor] Changed - issue with declaration inside a for loop

bugzilla-daemon@rocky.ximian.com bugzilla-daemon@rocky.ximian.com
18 Nov 2002 15:49:40 -0000


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 lupus@ximian.com.

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

--- shadow/32416	Wed Oct 16 19:36:41 2002
+++ shadow/32416.tmp.29165	Mon Nov 18 10:49:40 2002
@@ -1,23 +1,23 @@
 Bug#: 32416
-Product: Mono/Class Libraries
+Product: Mono/MCS
 Version: unspecified
-OS: 
+OS: unknown
 OS Details: 
 Status: NEW   
 Resolution: 
-Severity: 
+Severity: Unknown
 Priority: Normal
-Component: CORLIB
+Component: Misc
 AssignedTo: mono-bugs@ximian.com                            
 ReportedBy: mathias.hasselmann@gmx.de               
 QAContact: mono-bugs@ximian.com
 TargetMilestone: ---
 URL: 
 Cc: 
-Summary: NullReferenceException in for-statement
+Summary: issue with declaration inside a for loop
 
 The for-statement can cause a NullReferenceException if the variable used
 in the abort condition is declared in the initialization portion of the for
 statement.
 
 
@@ -43,6 +43,42 @@
 Additional Information:
 
 If line is declared before the for-statement everything works:
 
 string line;
 for(; null != (line = System.Console.ReadLine()); )
+
+------- Additional Comments From lupus@ximian.com  2002-11-18 10:49 -------
+This is a bug in mcs: it miscompiles the test.
+Note compiling the test with the mono runtime results in the broken
+outpout program. Compiling under the ms runtime results in an
+exception in mcs:
+Unhandled Exception: System.ArgumentException: Must be an array type.
+   at System.RuntimeType.GetArrayRank()
+   at Mono.CSharp.ArrayCreation.LookupType(EmitContext ec) in
+d:\mcs\mcs\expression.cs:line 4934
+   at Mono.CSharp.ArrayCreation.DoResolve(EmitContext ec) in
+d:\mcs\mcs\expression.cs:line 4943
+   at Mono.CSharp.Expression.Resolve(EmitContext ec, ResolveFlags
+flags) in d:\mcs\mcs\ecore.cs:line 310
+   at Mono.CSharp.Assign.DoResolve(EmitContext ec) in
+d:\mcs\mcs\assign.cs:line 165
+   at Mono.CSharp.Expression.Resolve(EmitContext ec, ResolveFlags
+flags) in d:\mcs\mcs\ecore.cs:line 310
+   at Mono.CSharp.StatementExpression.Resolve(EmitContext ec) in
+d:\mcs\mcs\statement.cs:line 572
+   at Mono.CSharp.Block.Resolve(EmitContext ec) in
+d:\mcs\mcs\statement.cs:line 3080
+   at Mono.CSharp.Block.Resolve(EmitContext ec) in
+d:\mcs\mcs\statement.cs:line 3080
+   at Mono.CSharp.EmitContext.EmitTopBlock(Block block,
+InternalParameters ip, Location loc) in d:\mcs\mcs\codegen.cs:line 511
+   at Mono.CSharp.MethodData.Emit(TypeContainer parent, Block block,
+Object kind) in d:\mcs\mcs\class.cs:line 3118
+   at Mono.CSharp.TypeContainer.Emit() in d:\mcs\mcs\class.cs:line 1424
+   at Mono.CSharp.RootContext.EmitCode() in
+d:\mcs\mcs\rootcontext.cs:line 762
+   at Mono.CSharp.Driver.MainDriver(String[] args) in
+d:\mcs\mcs\driver.cs:line 1257
+   at Mono.CSharp.Driver.Main(String[] args) in
+d:\mcs\mcs\driver.cs:line 242
+(null)