dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dotgnu-pnet-commits] [SCM] DotGNU Portable.NET Compiler tests (cscc) br


From: Klaus Treichel
Subject: [dotgnu-pnet-commits] [SCM] DotGNU Portable.NET Compiler tests (cscc) branch, master, updated. f8deb05f78213a367aabf48f8e11c6c911815b37
Date: Tue, 11 Aug 2009 16:59:12 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "DotGNU Portable.NET Compiler tests (cscc)".

The branch, master has been updated
       via  f8deb05f78213a367aabf48f8e11c6c911815b37 (commit)
      from  887ff658672b3768e2207a8e434a690ca493ca4c (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit/cscctest.git/commit/?id=f8deb05f78213a367aabf48f8e11c6c911815b37

commit f8deb05f78213a367aabf48f8e11c6c911815b37
Author: Klaus Treichel <address@hidden>
Date:   Tue Aug 11 18:57:59 2009 +0200

    Add tests vor the C# 3.x local var type.
    Add tests for declaring multiple local variables in one declaration 
statement.

diff --git a/ChangeLog b/ChangeLog
index 20acca7..bd72166 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,40 @@
+2009-08-11  Klaus Treichel  <address@hidden>
+
+       * csharp/stmt/using3.il, csharp/stmt/using3.jl: Sync with latest
+       compiler changes.
+
+       * csharp/stmt/locals4.cs, csharp/stmt/locals4.il, 
csharp/stmt/locals4.jl:
+       Add test for multiple local variable declarations in one statement.
+
+       * csharp/stmt/using_statement1.cs, csharp/stmt/using_statement1.il,
+       csharp/stmt/using_statement1.jl: Make the declaration of Dispose() 
public
+       because it id nor recognizes as an interface method implementation
+       otherwise.
+
+       * csharp/stmt/using_statement2.cs, csharp/stmt/using_statement2.il,
+       csharp/stmt/using_statement2.jl: Add test for decraring multiple
+       resources in one using statenment.
+
+       * csharp/stmt/var_foreach1.cs, csharp/stmt/var_foreach1.il,
+       csharp/stmt/var_foreach1.jl, csharp/stmt/var_foreach3.cs,
+       csharp/stmt/var_foreach3.il, csharp/stmt/var_foreach3.jl,
+       csharp/stmt/var_foreach4.cs, csharp/stmt/var_foreach4.il,
+       csharp/stmt/var_foreach4.jl, csharp/stmt/var_foreach5.cs,
+       csharp/stmt/var_foreach5.il, csharp/stmt/var_foreach5.jl: Add tests for
+       the foreach statement with the C# 3.x local var type.
+
+       * csharp/stmt/var_locals1.cs, csharp/stmt/var_locals1.il,
+       csharp/stmt/var_locals1.jl: Add tests for local variable declarations
+       using the C# 3.x local var type.
+
+       * csharp/stmt/var_using1.cs, csharp/stmt/var_using1.il,
+       csharp/stmt/var_using1.jl: Add tests for the using statement using the
+       C# 3.x local var type.
+
+       * csharp/stmt/Makefile.am: Add locals4.cs, var_foreach1.cs,
+       var_foreach3.cs, var_foreach4.cs, var_foreach5.cs, var_locals1.cs and
+       var_using1.cs to the tests to be executed.
+
 2009-08-01  Klaus Treichel  <address@hidden>
 
        * csharp/class/Makefile.am: Add partial.cs to partial5.cs to the
diff --git a/csharp/stmt/Makefile.am b/csharp/stmt/Makefile.am
index e2f881a..7949f0b 100644
--- a/csharp/stmt/Makefile.am
+++ b/csharp/stmt/Makefile.am
@@ -11,6 +11,7 @@ TESTS = block1.cs \
                locals1.cs \
                locals2.cs \
                locals3.cs \
+               locals4.cs \
                lock1.cs \
                lock2.cs \
                return1.cs \
@@ -32,10 +33,17 @@ TESTS = block1.cs \
                using_namespace5.cs \
                using_namespace6.cs \
                using_statement1.cs \
+               using_statement2.cs \
                using1.cs \
                using2.cs \
                using3.cs \
-               using4.cs
+               using4.cs \
+               var_foreach1.cs \
+               var_foreach3.cs \
+               var_foreach4.cs \
+               var_foreach5.cs \
+               var_locals1.cs \
+               var_using1.cs
 
 TESTS_ENVIRONMENT = $(SHELL) $(top_srcdir)/tools/run_test.sh
 
diff --git a/csharp/stmt/using_statement1.cs b/csharp/stmt/locals4.cs
similarity index 64%
copy from csharp/stmt/using_statement1.cs
copy to csharp/stmt/locals4.cs
index 20f8412..be958eb 100644
--- a/csharp/stmt/using_statement1.cs
+++ b/csharp/stmt/locals4.cs
@@ -1,7 +1,7 @@
 /*
- * using_statement1.cs - Test the using statement - valid cases.
+ * locals4.cs - Test the declaration of local variables
  *
- * Copyright (C) 2007  Southern Storm Software, Pty Ltd.
+ * Copyright (C) 2001  Southern Storm Software, Pty Ltd.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -18,31 +18,11 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-using System;
-
-public class Test
+class Test
 {
-
-       private class TestDisposable : IDisposable
-       {
-               void Dispose()
-               {
-               }
-       }
-
-       static void Test1()
-       {
-               TestDisposable a = new TestDisposable();
-
-               using(a)
-               {
-               }
-       }
-
-       static void Test2()
+       static void m2()
        {
-               using(TestDisposable a = new TestDisposable())
-               {
-               }
+               int a, b = 1, c, d = 3;
+               int e = 4, f = 5, g = 6, h = 7;
        }
 }
diff --git a/csharp/stmt/locals4.il b/csharp/stmt/locals4.il
new file mode 100644
index 0000000..5dcee23
--- /dev/null
+++ b/csharp/stmt/locals4.il
@@ -0,0 +1,37 @@
+.assembly extern '.library'
+{
+       .ver 0:0:0:0
+}
+.assembly '<Assembly>'
+{
+       .ver 0:0:0:0
+}
+.module '<Module>'
+.class private auto ansi 'Test' extends ['.library']'System'.'Object'
+{
+.method private static hidebysig void 'm2'() cil managed 
+{
+       .locals init    (int32, int32, int32, int32, int32, int32, int32, int32)
+       ldc.i4.1
+       stloc.1
+       ldc.i4.3
+       stloc.3
+       ldc.i4.4
+       stloc.s 4
+       ldc.i4.5
+       stloc.s 5
+       ldc.i4.6
+       stloc.s 6
+       ldc.i4.7
+       stloc.s 7
+       ret
+       .maxstack 1
+} // method m2
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
+{
+       ldarg.0
+       call    instance void ['.library']'System'.'Object'::'.ctor'()
+       ret
+       .maxstack 1
+} // method .ctor
+} // class Test
diff --git a/csharp/stmt/locals4.jl b/csharp/stmt/locals4.jl
new file mode 100644
index 0000000..fa9adc9
--- /dev/null
+++ b/csharp/stmt/locals4.jl
@@ -0,0 +1,38 @@
+.assembly extern '.library'
+{
+       .ver 0:0:0:0
+}
+.assembly '<Assembly>'
+{
+       .ver 0:0:0:0
+}
+.module '<Module>'
+.class private auto ansi 'Test' extends ['.library']'System'.'Object'
+{
+.method private static hidebysig void 'm2'() cil managed java 
+{
+       iconst_1
+       istore_1
+       iconst_3
+       istore_3
+       iconst_4
+       istore  4
+       iconst_5
+       istore  5
+       bipush  6
+       istore  6
+       bipush  7
+       istore  7
+       return
+       .locals 8
+       .maxstack 1
+} // method m2
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
+{
+       aload_0
+       invokespecial   instance void ['.library']'System'.'Object'::'.ctor'()
+       return
+       .locals 1
+       .maxstack 1
+} // method .ctor
+} // class Test
diff --git a/csharp/stmt/using3.il b/csharp/stmt/using3.il
index 1805153..f390564 100644
--- a/csharp/stmt/using3.il
+++ b/csharp/stmt/using3.il
@@ -26,7 +26,7 @@
 {
 .method public static hidebysig void 'Main'() cil managed 
 {
-       .locals init    (class 'Disposable')
+       .locals init    (class 'Disposable', class 'Disposable')
        newobj  instance void 'Disposable'::'.ctor'()
        stloc.0
        .try {
@@ -36,11 +36,10 @@
        brfalse ?L2
        ldloc.0
        callvirt        instance void [.library]System.IDisposable::Dispose()
-       endfinally
 ?L2:
+       endfinally
        }
 ?L1:
-       .locals init    (class ['.library']'System'.'IDisposable')
        newobj  instance void 'Disposable'::'.ctor'()
        stloc.1
        .try {
@@ -50,8 +49,8 @@
        brfalse ?L4
        ldloc.1
        callvirt        instance void [.library]System.IDisposable::Dispose()
-       endfinally
 ?L4:
+       endfinally
        }
 ?L3:
        ret
diff --git a/csharp/stmt/using3.jl b/csharp/stmt/using3.jl
index 721912e..725b304 100644
--- a/csharp/stmt/using3.jl
+++ b/csharp/stmt/using3.jl
@@ -29,7 +29,7 @@
 .method public static hidebysig void 'Main'() cil managed java 
 {
        return
-       .locals 1
+       .locals 2
        .maxstack 0
 } // method Main
 .method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
diff --git a/csharp/stmt/using_statement1.cs b/csharp/stmt/using_statement1.cs
index 20f8412..ab7dd89 100644
--- a/csharp/stmt/using_statement1.cs
+++ b/csharp/stmt/using_statement1.cs
@@ -25,7 +25,7 @@ public class Test
 
        private class TestDisposable : IDisposable
        {
-               void Dispose()
+               public void Dispose()
                {
                }
        }
diff --git a/csharp/stmt/using_statement1.il b/csharp/stmt/using_statement1.il
index 295d8ac..948de9c 100644
--- a/csharp/stmt/using_statement1.il
+++ b/csharp/stmt/using_statement1.il
@@ -11,7 +11,7 @@
 {
 .class nested private auto ansi 'TestDisposable' extends 
['.library']'System'.'Object' implements ['.library']'System'.'IDisposable'
 {
-.method private hidebysig instance void 'Dispose'() cil managed 
+.method public hidebysig instance void 'Dispose'() cil managed 
 {
        ret
        .maxstack 0
@@ -26,10 +26,9 @@
 } // class TestDisposable
 .method private static hidebysig void 'Test1'() cil managed 
 {
-       .locals init    (class 'Test'/'TestDisposable')
+       .locals init    (class 'Test'/'TestDisposable', class 
'Test'/'TestDisposable')
        newobj  instance void 'Test'/'TestDisposable'::'.ctor'()
        stloc.0
-       .locals init    (class ['.library']'System'.'IDisposable')
        ldloc.0
        stloc.1
        .try {
@@ -39,8 +38,8 @@
        brfalse ?L2
        ldloc.1
        callvirt        instance void [.library]System.IDisposable::Dispose()
-       endfinally
 ?L2:
+       endfinally
        }
 ?L1:
        ret
@@ -58,8 +57,8 @@
        brfalse ?L4
        ldloc.0
        callvirt        instance void [.library]System.IDisposable::Dispose()
-       endfinally
 ?L4:
+       endfinally
        }
 ?L3:
        ret
diff --git a/csharp/stmt/using_statement1.jl b/csharp/stmt/using_statement1.jl
index 2f51036..98e2b9a 100644
--- a/csharp/stmt/using_statement1.jl
+++ b/csharp/stmt/using_statement1.jl
@@ -11,7 +11,7 @@
 {
 .class nested private auto ansi 'TestDisposable' extends 
['.library']'System'.'Object' implements ['.library']'System'.'IDisposable'
 {
-.method private hidebysig instance void 'Dispose'() cil managed java 
+.method public hidebysig instance void 'Dispose'() cil managed java 
 {
        return
        .locals 1
@@ -33,7 +33,7 @@
        invokespecial   instance void 'Test'/'TestDisposable'::'.ctor'()
        astore_0
        return
-       .locals 1
+       .locals 2
        .maxstack 2
 } // method Test1
 .method private static hidebysig void 'Test2'() cil managed java 
diff --git a/csharp/stmt/using_statement1.cs b/csharp/stmt/using_statement2.cs
similarity index 80%
copy from csharp/stmt/using_statement1.cs
copy to csharp/stmt/using_statement2.cs
index 20f8412..f52b047 100644
--- a/csharp/stmt/using_statement1.cs
+++ b/csharp/stmt/using_statement2.cs
@@ -1,5 +1,5 @@
 /*
- * using_statement1.cs - Test the using statement - valid cases.
+ * using_statement2.cs - Test the using statement - valid cases.
  *
  * Copyright (C) 2007  Southern Storm Software, Pty Ltd.
  *
@@ -25,24 +25,18 @@ public class Test
 
        private class TestDisposable : IDisposable
        {
-               void Dispose()
-               {
-               }
-       }
+               public int i = 1;
 
-       static void Test1()
-       {
-               TestDisposable a = new TestDisposable();
-
-               using(a)
+               public void Dispose()
                {
                }
        }
 
-       static void Test2()
+       static void Test1()
        {
-               using(TestDisposable a = new TestDisposable())
+               using(TestDisposable a = new TestDisposable(), b = new 
TestDisposable())
                {
+                       a.i += b.i;
                }
        }
 }
diff --git a/csharp/stmt/using_statement1.il b/csharp/stmt/using_statement2.il
similarity index 76%
copy from csharp/stmt/using_statement1.il
copy to csharp/stmt/using_statement2.il
index 295d8ac..a7693ae 100644
--- a/csharp/stmt/using_statement1.il
+++ b/csharp/stmt/using_statement2.il
@@ -11,7 +11,8 @@
 {
 .class nested private auto ansi 'TestDisposable' extends 
['.library']'System'.'Object' implements ['.library']'System'.'IDisposable'
 {
-.method private hidebysig instance void 'Dispose'() cil managed 
+.field public int32 'i'
+.method public hidebysig instance void 'Dispose'() cil managed 
 {
        ret
        .maxstack 0
@@ -19,52 +20,53 @@
 .method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
 {
        ldarg.0
+       ldc.i4.1
+       stfld   int32 'Test'/'TestDisposable'::'i'
+       ldarg.0
        call    instance void ['.library']'System'.'Object'::'.ctor'()
        ret
-       .maxstack 1
+       .maxstack 2
 } // method .ctor
 } // class TestDisposable
 .method private static hidebysig void 'Test1'() cil managed 
 {
-       .locals init    (class 'Test'/'TestDisposable')
+       .locals init    (class 'Test'/'TestDisposable', class 
'Test'/'TestDisposable')
        newobj  instance void 'Test'/'TestDisposable'::'.ctor'()
        stloc.0
-       .locals init    (class ['.library']'System'.'IDisposable')
-       ldloc.0
+       .try {
+       newobj  instance void 'Test'/'TestDisposable'::'.ctor'()
        stloc.1
        .try {
+       ldloc.0
+       dup
+       ldfld   int32 'Test'/'TestDisposable'::'i'
+       ldloc.1
+       ldfld   int32 'Test'/'TestDisposable'::'i'
+       add
+       stfld   int32 'Test'/'TestDisposable'::'i'
        leave   ?L1
        } finally {
        ldloc.1
        brfalse ?L2
        ldloc.1
        callvirt        instance void [.library]System.IDisposable::Dispose()
-       endfinally
 ?L2:
+       endfinally
        }
 ?L1:
-       ret
-       .maxstack 1
-} // method Test1
-.method private static hidebysig void 'Test2'() cil managed 
-{
-       .locals init    (class 'Test'/'TestDisposable')
-       newobj  instance void 'Test'/'TestDisposable'::'.ctor'()
-       stloc.0
-       .try {
        leave   ?L3
        } finally {
        ldloc.0
        brfalse ?L4
        ldloc.0
        callvirt        instance void [.library]System.IDisposable::Dispose()
-       endfinally
 ?L4:
+       endfinally
        }
 ?L3:
        ret
-       .maxstack 1
-} // method Test2
+       .maxstack 3
+} // method Test1
 .method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
 {
        ldarg.0
diff --git a/csharp/stmt/using_statement1.jl b/csharp/stmt/using_statement2.jl
similarity index 75%
copy from csharp/stmt/using_statement1.jl
copy to csharp/stmt/using_statement2.jl
index 2f51036..0e915eb 100644
--- a/csharp/stmt/using_statement1.jl
+++ b/csharp/stmt/using_statement2.jl
@@ -11,7 +11,8 @@
 {
 .class nested private auto ansi 'TestDisposable' extends 
['.library']'System'.'Object' implements ['.library']'System'.'IDisposable'
 {
-.method private hidebysig instance void 'Dispose'() cil managed java 
+.field public int32 'i'
+.method public hidebysig instance void 'Dispose'() cil managed java 
 {
        return
        .locals 1
@@ -20,28 +21,21 @@
 .method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
 {
        aload_0
+       iconst_1
+       putfield        int32 'Test'/'TestDisposable'::'i'
+       aload_0
        invokespecial   instance void ['.library']'System'.'Object'::'.ctor'()
        return
        .locals 1
-       .maxstack 1
+       .maxstack 2
 } // method .ctor
 } // class TestDisposable
 .method private static hidebysig void 'Test1'() cil managed java 
 {
-       new     'Test'/'TestDisposable'
-       dup
-       invokespecial   instance void 'Test'/'TestDisposable'::'.ctor'()
-       astore_0
-       return
-       .locals 1
-       .maxstack 2
-} // method Test1
-.method private static hidebysig void 'Test2'() cil managed java 
-{
        return
-       .locals 1
+       .locals 2
        .maxstack 0
-} // method Test2
+} // method Test1
 .method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
 {
        aload_0
diff --git a/csharp/stmt/using_statement1.cs b/csharp/stmt/var_foreach1.cs
similarity index 65%
copy from csharp/stmt/using_statement1.cs
copy to csharp/stmt/var_foreach1.cs
index 20f8412..3ed2095 100644
--- a/csharp/stmt/using_statement1.cs
+++ b/csharp/stmt/var_foreach1.cs
@@ -1,7 +1,8 @@
 /*
- * using_statement1.cs - Test the using statement - valid cases.
+ * var_foreach1.cs - Test the handling of "foreach" statements using the
+ *                                      var type.
  *
- * Copyright (C) 2007  Southern Storm Software, Pty Ltd.
+ * Copyright (C) 2009  Southern Storm Software, Pty Ltd.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -18,31 +19,15 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-using System;
-
-public class Test
+class Test
 {
-
-       private class TestDisposable : IDisposable
-       {
-               void Dispose()
-               {
-               }
-       }
-
-       static void Test1()
-       {
-               TestDisposable a = new TestDisposable();
-
-               using(a)
-               {
-               }
-       }
-
-       static void Test2()
+       int m1(int[] array)
        {
-               using(TestDisposable a = new TestDisposable())
+               int sum = 0;
+               foreach(var x in array)
                {
+                       sum += x;
                }
+               return sum;
        }
 }
diff --git a/csharp/stmt/var_foreach1.il b/csharp/stmt/var_foreach1.il
new file mode 100644
index 0000000..7d97b69
--- /dev/null
+++ b/csharp/stmt/var_foreach1.il
@@ -0,0 +1,56 @@
+.assembly extern '.library'
+{
+       .ver 0:0:0:0
+}
+.assembly '<Assembly>'
+{
+       .ver 0:0:0:0
+}
+.module '<Module>'
+.class private auto ansi 'Test' extends ['.library']'System'.'Object'
+{
+.method private hidebysig instance int32 'm1'(int32[] 'array') cil managed 
+{
+       .locals init    (int32, int32)
+       ldc.i4.0
+       stloc.0
+       .locals init    (int32[])
+       .locals init    (int32)
+       ldarg.1
+       stloc.2
+       ldc.i4.0
+       stloc.3
+       br      ?L1
+?L2:
+       ldloc.2
+       ldloc.3
+       ldelem.i4
+       stloc.1
+       ldloc.0
+       ldloc.1
+       add
+       stloc.0
+?L3:
+       ldloc.3
+       ldc.i4.1
+       add
+       stloc.3
+?L1:
+       ldloc.3
+       ldloc.2
+       ldlen
+       conv.i4
+       blt     ?L2
+?L4:
+       ldloc.0
+       ret
+       .maxstack 2
+} // method m1
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
+{
+       ldarg.0
+       call    instance void ['.library']'System'.'Object'::'.ctor'()
+       ret
+       .maxstack 1
+} // method .ctor
+} // class Test
diff --git a/csharp/stmt/var_foreach1.jl b/csharp/stmt/var_foreach1.jl
new file mode 100644
index 0000000..3da4131
--- /dev/null
+++ b/csharp/stmt/var_foreach1.jl
@@ -0,0 +1,51 @@
+.assembly extern '.library'
+{
+       .ver 0:0:0:0
+}
+.assembly '<Assembly>'
+{
+       .ver 0:0:0:0
+}
+.module '<Module>'
+.class private auto ansi 'Test' extends ['.library']'System'.'Object'
+{
+.method private hidebysig instance int32 'm1'(int32[] 'array') cil managed 
java 
+{
+       iconst_0
+       istore_2
+       aload_1
+       astore  4
+       iconst_0
+       istore  5
+       goto    ?L1
+?L2:
+       aload   4
+       iload   5
+       iaload
+       istore_3
+       iload_2
+       iload_3
+       iadd
+       istore_2
+?L3:
+       iinc    5 1
+?L1:
+       iload   5
+       aload   4
+       arraylength
+       if_icmplt       ?L2
+?L4:
+       iload_2
+       ireturn
+       .locals 6
+       .maxstack 2
+} // method m1
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
+{
+       aload_0
+       invokespecial   instance void ['.library']'System'.'Object'::'.ctor'()
+       return
+       .locals 1
+       .maxstack 1
+} // method .ctor
+} // class Test
diff --git a/csharp/stmt/using_statement1.cs b/csharp/stmt/var_foreach3.cs
similarity index 66%
copy from csharp/stmt/using_statement1.cs
copy to csharp/stmt/var_foreach3.cs
index 20f8412..2147327 100644
--- a/csharp/stmt/using_statement1.cs
+++ b/csharp/stmt/var_foreach3.cs
@@ -1,7 +1,8 @@
 /*
- * using_statement1.cs - Test the using statement - valid cases.
+ * var_foreach3.cs - Test the handling of "foreach" statements for strings
+ *                                      using the var type.
  *
- * Copyright (C) 2007  Southern Storm Software, Pty Ltd.
+ * Copyright (C) 2009  Southern Storm Software, Pty Ltd.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -20,29 +21,15 @@
 
 using System;
 
-public class Test
+class Test
 {
-
-       private class TestDisposable : IDisposable
-       {
-               void Dispose()
-               {
-               }
-       }
-
-       static void Test1()
-       {
-               TestDisposable a = new TestDisposable();
-
-               using(a)
-               {
-               }
-       }
-
-       static void Test2()
+       int m1(String str)
        {
-               using(TestDisposable a = new TestDisposable())
+               int sum = 0;
+               foreach(var x in str)
                {
+                       sum += (int)x;
                }
+               return sum;
        }
 }
diff --git a/csharp/stmt/var_foreach3.il b/csharp/stmt/var_foreach3.il
new file mode 100644
index 0000000..544592a
--- /dev/null
+++ b/csharp/stmt/var_foreach3.il
@@ -0,0 +1,58 @@
+.assembly extern '.library'
+{
+       .ver 0:0:0:0
+}
+.assembly '<Assembly>'
+{
+       .ver 0:0:0:0
+}
+.module '<Module>'
+.class private auto ansi 'Test' extends ['.library']'System'.'Object'
+{
+.method private hidebysig instance int32 'm1'(class 
['.library']'System'.'String' 'str') cil managed 
+{
+       .locals init    (int32, char)
+       ldc.i4.0
+       stloc.0
+       .locals init    (class ['.library']'System'.'String')
+       .locals init    (int32)
+       .locals init    (int32)
+       ldarg.1
+       dup
+       stloc.2
+       callvirt        instance int32 [.library]System.String::get_Length()
+       stloc.s 4
+       ldc.i4.0
+       stloc.3
+       br      ?L1
+?L2:
+       ldloc.2
+       ldloc.3
+       callvirt        instance char [.library]System.String::get_Chars(int32)
+       stloc.1
+       ldloc.0
+       ldloc.1
+       add
+       stloc.0
+?L3:
+       ldloc.3
+       ldc.i4.1
+       add
+       stloc.3
+?L1:
+       ldloc.3
+       ldloc.s 4
+       blt     ?L2
+?L4:
+       ldloc.0
+       ret
+       .maxstack 2
+} // method m1
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
+{
+       ldarg.0
+       call    instance void ['.library']'System'.'Object'::'.ctor'()
+       ret
+       .maxstack 1
+} // method .ctor
+} // class Test
diff --git a/csharp/stmt/var_foreach3.jl b/csharp/stmt/var_foreach3.jl
new file mode 100644
index 0000000..9a0feb6
--- /dev/null
+++ b/csharp/stmt/var_foreach3.jl
@@ -0,0 +1,53 @@
+.assembly extern '.library'
+{
+       .ver 0:0:0:0
+}
+.assembly '<Assembly>'
+{
+       .ver 0:0:0:0
+}
+.module '<Module>'
+.class private auto ansi 'Test' extends ['.library']'System'.'Object'
+{
+.method private hidebysig instance int32 'm1'(class 
['.library']'System'.'String' 'str') cil managed java 
+{
+       iconst_0
+       istore_2
+       aload_1
+       dup
+       astore  4
+       invokevirtual   "System/String" "get_Length" "()I"
+       istore  6
+       iconst_0
+       istore  5
+       goto    ?L1
+?L2:
+       aload   4
+       iload   5
+       invokevirtual   "System/String" "get_Chars" "(I)C"
+       istore_3
+       iload_2
+       iload_3
+       iadd
+       istore_2
+?L3:
+       iinc    5 1
+?L1:
+       iload   5
+       iload   6
+       if_icmplt       ?L2
+?L4:
+       iload_2
+       ireturn
+       .locals 7
+       .maxstack 3
+} // method m1
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
+{
+       aload_0
+       invokespecial   instance void ['.library']'System'.'Object'::'.ctor'()
+       return
+       .locals 1
+       .maxstack 1
+} // method .ctor
+} // class Test
diff --git a/csharp/stmt/var_foreach4.cs b/csharp/stmt/var_foreach4.cs
new file mode 100644
index 0000000..ce2b656
--- /dev/null
+++ b/csharp/stmt/var_foreach4.cs
@@ -0,0 +1,95 @@
+/*
+ * var_foreach4.cs - Test the handling of "foreach" statements for Collections
+ *                                      using the var type.
+ *
+ * Copyright (C) 2009  Southern Storm Software, Pty Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+using System;
+
+namespace System.Collections
+{
+
+public interface IEnumerator
+{
+       bool MoveNext();
+       void Reset();
+       Object Current { get; }
+}
+
+public interface IEnumerable
+{
+       IEnumerator GetEnumerator();
+}
+}
+using System.Collections;
+class TestEnumerator: IEnumerator
+{
+       bool IEnumerator.MoveNext()
+       {
+               return false;
+       }
+       public bool MoveNext()
+       {
+               return false;
+       }
+       void IEnumerator.Reset()
+       {
+       }
+       public void Reset()
+       {
+       }
+       Object IEnumerator.Current
+       {
+               get
+               {
+                       return 0;
+               }
+       }
+       public byte Current
+       {
+               get
+               {
+                       return 0;
+               }
+       }
+}
+
+class TestEnumerable: IEnumerable
+{
+       IEnumerator IEnumerable.GetEnumerator()
+       {
+               return null;            
+       }
+       public TestEnumerator GetEnumerator()
+       {
+               return null;            
+       }
+}
+
+class Test
+{
+       int m1(TestEnumerable en)
+       {
+               String y="";
+               foreach(var x in en)
+               {
+                       y=y+x;
+               }
+               return 0;
+       }
+}
diff --git a/csharp/stmt/var_foreach4.il b/csharp/stmt/var_foreach4.il
new file mode 100644
index 0000000..97f8b99
--- /dev/null
+++ b/csharp/stmt/var_foreach4.il
@@ -0,0 +1,171 @@
+.assembly extern '.library'
+{
+       .ver 0:0:0:0
+}
+.assembly '<Assembly>'
+{
+       .ver 0:0:0:0
+}
+.module '<Module>'
+.namespace 'System.Collections'
+{
+.class public auto interface abstract ansi 'IEnumerator'
+{
+.method public virtual hidebysig newslot abstract instance bool 'MoveNext'() 
cil managed 
+{
+} // method MoveNext
+.method public virtual hidebysig newslot abstract instance void 'Reset'() cil 
managed 
+{
+} // method Reset
+.method public virtual hidebysig newslot abstract specialname instance class 
['.library']'System'.'Object' 'get_Current'() cil managed 
+{
+} // method get_Current
+.property class ['.library']'System'.'Object' 'Current'()
+{
+       .get instance class ['.library']'System'.'Object' 
'System.Collections'.'IEnumerator'::'get_Current'()
+} // property Current
+} // class IEnumerator
+} // namespace System.Collections
+.namespace 'System.Collections'
+{
+.class public auto interface abstract ansi 'IEnumerable'
+{
+.method public virtual hidebysig newslot abstract instance class 
'System.Collections'.'IEnumerator' 'GetEnumerator'() cil managed 
+{
+} // method GetEnumerator
+} // class IEnumerable
+} // namespace System.Collections
+.class private auto ansi 'TestEnumerator' extends 
['.library']'System'.'Object' implements 'System.Collections'.'IEnumerator'
+{
+.method private final virtual hidebysig newslot instance bool 
'System.Collections.IEnumerator.MoveNext'() cil managed 
+{
+       .override       'System.Collections'.'IEnumerator'::'MoveNext'
+       ldc.i4.0
+       ret
+       .maxstack 1
+} // method System.Collections.IEnumerator.MoveNext
+.method public hidebysig instance bool 'MoveNext'() cil managed 
+{
+       ldc.i4.0
+       ret
+       .maxstack 1
+} // method MoveNext
+.method private final virtual hidebysig newslot instance void 
'System.Collections.IEnumerator.Reset'() cil managed 
+{
+       .override       'System.Collections'.'IEnumerator'::'Reset'
+       ret
+       .maxstack 0
+} // method System.Collections.IEnumerator.Reset
+.method public hidebysig instance void 'Reset'() cil managed 
+{
+       ret
+       .maxstack 0
+} // method Reset
+.method private final virtual hidebysig newslot specialname instance class 
['.library']'System'.'Object' 'System.Collections.IEnumerator.get_Current'() 
cil managed 
+{
+       .override       'System.Collections'.'IEnumerator'::'get_Current'
+       ldc.i4.0
+       box     ['.library']'System'.'Int32'
+       ret
+       .maxstack 1
+} // method System.Collections.IEnumerator.get_Current
+.property class ['.library']'System'.'Object' 
'System.Collections.IEnumerator.Current'()
+{
+       .get instance class ['.library']'System'.'Object' 
'TestEnumerator'::'System.Collections.IEnumerator.get_Current'()
+} // property System.Collections.IEnumerator.Current
+.method public hidebysig specialname instance unsigned int8 'get_Current'() 
cil managed 
+{
+       ldc.i4.0
+       conv.u1
+       ret
+       .maxstack 1
+} // method get_Current
+.property unsigned int8 'Current'()
+{
+       .get instance unsigned int8 'TestEnumerator'::'get_Current'()
+} // property Current
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
+{
+       ldarg.0
+       call    instance void ['.library']'System'.'Object'::'.ctor'()
+       ret
+       .maxstack 1
+} // method .ctor
+} // class TestEnumerator
+.class private auto ansi 'TestEnumerable' extends 
['.library']'System'.'Object' implements 'System.Collections'.'IEnumerable'
+{
+.method private final virtual hidebysig newslot instance class 
'System.Collections'.'IEnumerator' 
'System.Collections.IEnumerable.GetEnumerator'() cil managed 
+{
+       .override       'System.Collections'.'IEnumerable'::'GetEnumerator'
+       ldnull
+       ret
+       .maxstack 1
+} // method System.Collections.IEnumerable.GetEnumerator
+.method public hidebysig instance class 'TestEnumerator' 'GetEnumerator'() cil 
managed 
+{
+       ldnull
+       ret
+       .maxstack 1
+} // method GetEnumerator
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
+{
+       ldarg.0
+       call    instance void ['.library']'System'.'Object'::'.ctor'()
+       ret
+       .maxstack 1
+} // method .ctor
+} // class TestEnumerable
+.class private auto ansi 'Test' extends ['.library']'System'.'Object'
+{
+.method private hidebysig instance int32 'm1'(class 'TestEnumerable' 'en') cil 
managed 
+{
+       .locals init    (class ['.library']'System'.'String', unsigned int8)
+       ldstr   ""
+       stloc.0
+       .locals init    (class 'TestEnumerator')
+       .locals init    (class ['.library']'System'.'IDisposable')
+       ldarg.1
+       call    instance class 'TestEnumerator' 
'TestEnumerable'::'GetEnumerator'()
+       stloc.2
+       .try {
+       br      ?L1
+?L2:
+       ldloc.2
+       call    instance unsigned int8 'TestEnumerator'::'get_Current'()
+       stloc.1
+       ldloc.0
+       ldloc.1
+       box     ['.library']'System'.'Byte'
+       call    class [.library]System.String 
[.library]System.String::Concat(class [.library]System.Object, class 
[.library]System.Object)
+       stloc.0
+?L1:
+       ldloc.2
+       call    instance bool 'TestEnumerator'::'MoveNext'()
+       brtrue  ?L2
+?L3:
+       leave   ?L4
+       }
+       finally {
+       ldloc.2
+       isinst  [.library]System.IDisposable
+       stloc.3
+       ldloc.3
+       brfalse ?L5
+       ldloc.3
+       callvirt        instance void [.library]System.IDisposable::Dispose()
+?L5:
+       endfinally
+       }
+?L4:
+       ldc.i4.0
+       ret
+       .maxstack 2
+} // method m1
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
+{
+       ldarg.0
+       call    instance void ['.library']'System'.'Object'::'.ctor'()
+       ret
+       .maxstack 1
+} // method .ctor
+} // class Test
diff --git a/csharp/stmt/var_foreach4.jl b/csharp/stmt/var_foreach4.jl
new file mode 100644
index 0000000..ba59622
--- /dev/null
+++ b/csharp/stmt/var_foreach4.jl
@@ -0,0 +1,186 @@
+.assembly extern '.library'
+{
+       .ver 0:0:0:0
+}
+.assembly '<Assembly>'
+{
+       .ver 0:0:0:0
+}
+.module '<Module>'
+.namespace 'System.Collections'
+{
+.class public auto interface abstract ansi 'IEnumerator'
+{
+.method public virtual hidebysig newslot abstract instance bool 'MoveNext'() 
cil managed java 
+{
+} // method MoveNext
+.method public virtual hidebysig newslot abstract instance void 'Reset'() cil 
managed java 
+{
+} // method Reset
+.method public virtual hidebysig newslot abstract specialname instance class 
['.library']'System'.'Object' 'get_Current'() cil managed java 
+{
+} // method get_Current
+.property class ['.library']'System'.'Object' 'Current'()
+{
+       .get instance class ['.library']'System'.'Object' 
'System.Collections'.'IEnumerator'::'get_Current'()
+} // property Current
+} // class IEnumerator
+} // namespace System.Collections
+.namespace 'System.Collections'
+{
+.class public auto interface abstract ansi 'IEnumerable'
+{
+.method public virtual hidebysig newslot abstract instance class 
'System.Collections'.'IEnumerator' 'GetEnumerator'() cil managed java 
+{
+} // method GetEnumerator
+} // class IEnumerable
+} // namespace System.Collections
+.class private auto ansi 'TestEnumerator' extends 
['.library']'System'.'Object' implements 'System.Collections'.'IEnumerator'
+{
+.method private final virtual hidebysig newslot instance bool 
'System.Collections.IEnumerator.MoveNext'() cil managed java 
+{
+       .override       'System.Collections'.'IEnumerator'::'MoveNext'
+       iconst_0
+       ireturn
+       .locals 1
+       .maxstack 1
+} // method System.Collections.IEnumerator.MoveNext
+.method public hidebysig instance bool 'MoveNext'() cil managed java 
+{
+       iconst_0
+       ireturn
+       .locals 1
+       .maxstack 1
+} // method MoveNext
+.method private final virtual hidebysig newslot instance void 
'System.Collections.IEnumerator.Reset'() cil managed java 
+{
+       .override       'System.Collections'.'IEnumerator'::'Reset'
+       return
+       .locals 1
+       .maxstack 0
+} // method System.Collections.IEnumerator.Reset
+.method public hidebysig instance void 'Reset'() cil managed java 
+{
+       return
+       .locals 1
+       .maxstack 0
+} // method Reset
+.method private final virtual hidebysig newslot specialname instance class 
['.library']'System'.'Object' 'System.Collections.IEnumerator.get_Current'() 
cil managed java 
+{
+       .override       'System.Collections'.'IEnumerator'::'get_Current'
+       iconst_0
+       invokestatic    "System/Int32" "copyIn__" "(I)LSystem/Int32;"
+       areturn
+       .locals 1
+       .maxstack 1
+} // method System.Collections.IEnumerator.get_Current
+.property class ['.library']'System'.'Object' 
'System.Collections.IEnumerator.Current'()
+{
+       .get instance class ['.library']'System'.'Object' 
'TestEnumerator'::'System.Collections.IEnumerator.get_Current'()
+} // property System.Collections.IEnumerator.Current
+.method public hidebysig specialname instance unsigned int8 'get_Current'() 
cil managed java 
+{
+       iconst_0
+       sipush  255
+       iand
+       ireturn
+       .locals 1
+       .maxstack 2
+} // method get_Current
+.property unsigned int8 'Current'()
+{
+       .get instance unsigned int8 'TestEnumerator'::'get_Current'()
+} // property Current
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
+{
+       aload_0
+       invokespecial   instance void ['.library']'System'.'Object'::'.ctor'()
+       return
+       .locals 1
+       .maxstack 1
+} // method .ctor
+} // class TestEnumerator
+.class private auto ansi 'TestEnumerable' extends 
['.library']'System'.'Object' implements 'System.Collections'.'IEnumerable'
+{
+.method private final virtual hidebysig newslot instance class 
'System.Collections'.'IEnumerator' 
'System.Collections.IEnumerable.GetEnumerator'() cil managed java 
+{
+       .override       'System.Collections'.'IEnumerable'::'GetEnumerator'
+       aconst_null
+       areturn
+       .locals 1
+       .maxstack 1
+} // method System.Collections.IEnumerable.GetEnumerator
+.method public hidebysig instance class 'TestEnumerator' 'GetEnumerator'() cil 
managed java 
+{
+       aconst_null
+       areturn
+       .locals 1
+       .maxstack 1
+} // method GetEnumerator
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
+{
+       aload_0
+       invokespecial   instance void ['.library']'System'.'Object'::'.ctor'()
+       return
+       .locals 1
+       .maxstack 1
+} // method .ctor
+} // class TestEnumerable
+.class private auto ansi 'Test' extends ['.library']'System'.'Object'
+{
+.method private hidebysig instance int32 'm1'(class 'TestEnumerable' 'en') cil 
managed java 
+{
+       ldc     ""
+       invokestatic    "System/String" "__FromJavaString" 
"(Ljava/lang/String;)LSystem/String;"
+       astore_2
+       aload_1
+       invokespecial   instance class 'TestEnumerator' 
'TestEnumerable'::'GetEnumerator'()
+       astore  4
+       .try {
+       goto    ?L1
+       aload   4
+       invokespecial   instance unsigned int8 'TestEnumerator'::'get_Current'()
+       istore_3
+       aload_2
+       iload_3
+       invokestatic    "System/Byte" "copyIn__B" "(I)LSystem/Byte;"
+       invokestatic    "System/String" "Concat" 
"(LSystem/Object;LSystem/Object;)LSystem/String;"
+       astore_2
+?L1:
+       aload   4
+       invokespecial   instance bool 'TestEnumerator'::'MoveNext'()
+       ifne    ?L2
+?L3:
+       jsr     ?L4
+       goto    ?L5
+       }
+       catch {
+       astore  5
+       jsr     ?L4
+       aload   5
+       athrow
+       }
+       finally {
+       astore  6
+       aload   4
+       ifeq    ?L6
+       aload   4
+       invokeinterface "System/IDisposable" "Dispose" "()V" 1
+?L6:
+       ret     6
+       }
+?L5:
+       iconst_0
+       ireturn
+       .locals 7
+       .maxstack 2
+} // method m1
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
+{
+       aload_0
+       invokespecial   instance void ['.library']'System'.'Object'::'.ctor'()
+       return
+       .locals 1
+       .maxstack 1
+} // method .ctor
+} // class Test
diff --git a/csharp/stmt/var_foreach5.cs b/csharp/stmt/var_foreach5.cs
new file mode 100644
index 0000000..fd18489
--- /dev/null
+++ b/csharp/stmt/var_foreach5.cs
@@ -0,0 +1,94 @@
+/*
+ * var_foreach5.cs - Test the handling of "foreach" statements for Collections
+ *                                      using the var type.
+ *
+ * Copyright (C) 2009  Southern Storm Software, Pty Ltd.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ */
+
+using System;
+
+namespace System.Collections
+{
+public interface IEnumerator
+{
+       bool MoveNext();
+       void Reset();
+       Object Current { get; }
+}
+
+public interface IEnumerable
+{
+       IEnumerator GetEnumerator();
+}
+}
+using System.Collections;
+class TestEnumerator: IEnumerator
+{
+       bool IEnumerator.MoveNext()
+       {
+               return false;
+       }
+       public bool MoveNext()
+       {
+               return false;
+       }
+       void IEnumerator.Reset()
+       {
+       }
+       public void Reset()
+       {
+       }
+       Object IEnumerator.Current
+       {
+               get
+               {
+                       return 0;
+               }
+       }
+       public byte Current
+       {
+               get
+               {
+                       return 0;
+               }
+       }
+}
+
+struct TestEnumerable: IEnumerable
+{
+       IEnumerator IEnumerable.GetEnumerator()
+       {
+               return null;            
+       }
+       public TestEnumerator GetEnumerator()
+       {
+               return null;            
+       }
+}
+
+class Test
+{
+       int m1(TestEnumerable en)
+       {
+               String y="";
+               foreach(var x in en)
+               {
+                       y=y+x;
+               }
+               return 0;
+       }
+}
diff --git a/csharp/stmt/var_foreach5.il b/csharp/stmt/var_foreach5.il
new file mode 100644
index 0000000..fd64784
--- /dev/null
+++ b/csharp/stmt/var_foreach5.il
@@ -0,0 +1,165 @@
+.assembly extern '.library'
+{
+       .ver 0:0:0:0
+}
+.assembly '<Assembly>'
+{
+       .ver 0:0:0:0
+}
+.module '<Module>'
+.namespace 'System.Collections'
+{
+.class public auto interface abstract ansi 'IEnumerator'
+{
+.method public virtual hidebysig newslot abstract instance bool 'MoveNext'() 
cil managed 
+{
+} // method MoveNext
+.method public virtual hidebysig newslot abstract instance void 'Reset'() cil 
managed 
+{
+} // method Reset
+.method public virtual hidebysig newslot abstract specialname instance class 
['.library']'System'.'Object' 'get_Current'() cil managed 
+{
+} // method get_Current
+.property class ['.library']'System'.'Object' 'Current'()
+{
+       .get instance class ['.library']'System'.'Object' 
'System.Collections'.'IEnumerator'::'get_Current'()
+} // property Current
+} // class IEnumerator
+} // namespace System.Collections
+.namespace 'System.Collections'
+{
+.class public auto interface abstract ansi 'IEnumerable'
+{
+.method public virtual hidebysig newslot abstract instance class 
'System.Collections'.'IEnumerator' 'GetEnumerator'() cil managed 
+{
+} // method GetEnumerator
+} // class IEnumerable
+} // namespace System.Collections
+.class private auto ansi 'TestEnumerator' extends 
['.library']'System'.'Object' implements 'System.Collections'.'IEnumerator'
+{
+.method private final virtual hidebysig newslot instance bool 
'System.Collections.IEnumerator.MoveNext'() cil managed 
+{
+       .override       'System.Collections'.'IEnumerator'::'MoveNext'
+       ldc.i4.0
+       ret
+       .maxstack 1
+} // method System.Collections.IEnumerator.MoveNext
+.method public hidebysig instance bool 'MoveNext'() cil managed 
+{
+       ldc.i4.0
+       ret
+       .maxstack 1
+} // method MoveNext
+.method private final virtual hidebysig newslot instance void 
'System.Collections.IEnumerator.Reset'() cil managed 
+{
+       .override       'System.Collections'.'IEnumerator'::'Reset'
+       ret
+       .maxstack 0
+} // method System.Collections.IEnumerator.Reset
+.method public hidebysig instance void 'Reset'() cil managed 
+{
+       ret
+       .maxstack 0
+} // method Reset
+.method private final virtual hidebysig newslot specialname instance class 
['.library']'System'.'Object' 'System.Collections.IEnumerator.get_Current'() 
cil managed 
+{
+       .override       'System.Collections'.'IEnumerator'::'get_Current'
+       ldc.i4.0
+       box     ['.library']'System'.'Int32'
+       ret
+       .maxstack 1
+} // method System.Collections.IEnumerator.get_Current
+.property class ['.library']'System'.'Object' 
'System.Collections.IEnumerator.Current'()
+{
+       .get instance class ['.library']'System'.'Object' 
'TestEnumerator'::'System.Collections.IEnumerator.get_Current'()
+} // property System.Collections.IEnumerator.Current
+.method public hidebysig specialname instance unsigned int8 'get_Current'() 
cil managed 
+{
+       ldc.i4.0
+       conv.u1
+       ret
+       .maxstack 1
+} // method get_Current
+.property unsigned int8 'Current'()
+{
+       .get instance unsigned int8 'TestEnumerator'::'get_Current'()
+} // property Current
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
+{
+       ldarg.0
+       call    instance void ['.library']'System'.'Object'::'.ctor'()
+       ret
+       .maxstack 1
+} // method .ctor
+} // class TestEnumerator
+.class private sequential sealed serializable ansi 'TestEnumerable' extends 
['.library']'System'.'ValueType' implements 'System.Collections'.'IEnumerable'
+{
+.size 1
+.method private final virtual hidebysig newslot instance class 
'System.Collections'.'IEnumerator' 
'System.Collections.IEnumerable.GetEnumerator'() cil managed 
+{
+       .override       'System.Collections'.'IEnumerable'::'GetEnumerator'
+       ldnull
+       ret
+       .maxstack 1
+} // method System.Collections.IEnumerable.GetEnumerator
+.method public hidebysig instance class 'TestEnumerator' 'GetEnumerator'() cil 
managed 
+{
+       ldnull
+       ret
+       .maxstack 1
+} // method GetEnumerator
+} // class TestEnumerable
+.class private auto ansi 'Test' extends ['.library']'System'.'Object'
+{
+.method private hidebysig instance int32 'm1'(valuetype 'TestEnumerable' 'en') 
cil managed 
+{
+       .locals init    (class ['.library']'System'.'String', unsigned int8)
+       ldstr   ""
+       stloc.0
+       .locals init    (class 'TestEnumerator')
+       .locals init    (class ['.library']'System'.'IDisposable')
+       ldarga.s        1
+       call    instance class 'TestEnumerator' 
'TestEnumerable'::'GetEnumerator'()
+       stloc.2
+       .try {
+       br      ?L1
+?L2:
+       ldloc.2
+       call    instance unsigned int8 'TestEnumerator'::'get_Current'()
+       stloc.1
+       ldloc.0
+       ldloc.1
+       box     ['.library']'System'.'Byte'
+       call    class [.library]System.String 
[.library]System.String::Concat(class [.library]System.Object, class 
[.library]System.Object)
+       stloc.0
+?L1:
+       ldloc.2
+       call    instance bool 'TestEnumerator'::'MoveNext'()
+       brtrue  ?L2
+?L3:
+       leave   ?L4
+       }
+       finally {
+       ldloc.2
+       isinst  [.library]System.IDisposable
+       stloc.3
+       ldloc.3
+       brfalse ?L5
+       ldloc.3
+       callvirt        instance void [.library]System.IDisposable::Dispose()
+?L5:
+       endfinally
+       }
+?L4:
+       ldc.i4.0
+       ret
+       .maxstack 2
+} // method m1
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
+{
+       ldarg.0
+       call    instance void ['.library']'System'.'Object'::'.ctor'()
+       ret
+       .maxstack 1
+} // method .ctor
+} // class Test
diff --git a/csharp/stmt/var_foreach5.jl b/csharp/stmt/var_foreach5.jl
new file mode 100644
index 0000000..c914032
--- /dev/null
+++ b/csharp/stmt/var_foreach5.jl
@@ -0,0 +1,181 @@
+.assembly extern '.library'
+{
+       .ver 0:0:0:0
+}
+.assembly '<Assembly>'
+{
+       .ver 0:0:0:0
+}
+.module '<Module>'
+.namespace 'System.Collections'
+{
+.class public auto interface abstract ansi 'IEnumerator'
+{
+.method public virtual hidebysig newslot abstract instance bool 'MoveNext'() 
cil managed java 
+{
+} // method MoveNext
+.method public virtual hidebysig newslot abstract instance void 'Reset'() cil 
managed java 
+{
+} // method Reset
+.method public virtual hidebysig newslot abstract specialname instance class 
['.library']'System'.'Object' 'get_Current'() cil managed java 
+{
+} // method get_Current
+.property class ['.library']'System'.'Object' 'Current'()
+{
+       .get instance class ['.library']'System'.'Object' 
'System.Collections'.'IEnumerator'::'get_Current'()
+} // property Current
+} // class IEnumerator
+} // namespace System.Collections
+.namespace 'System.Collections'
+{
+.class public auto interface abstract ansi 'IEnumerable'
+{
+.method public virtual hidebysig newslot abstract instance class 
'System.Collections'.'IEnumerator' 'GetEnumerator'() cil managed java 
+{
+} // method GetEnumerator
+} // class IEnumerable
+} // namespace System.Collections
+.class private auto ansi 'TestEnumerator' extends 
['.library']'System'.'Object' implements 'System.Collections'.'IEnumerator'
+{
+.method private final virtual hidebysig newslot instance bool 
'System.Collections.IEnumerator.MoveNext'() cil managed java 
+{
+       .override       'System.Collections'.'IEnumerator'::'MoveNext'
+       iconst_0
+       ireturn
+       .locals 1
+       .maxstack 1
+} // method System.Collections.IEnumerator.MoveNext
+.method public hidebysig instance bool 'MoveNext'() cil managed java 
+{
+       iconst_0
+       ireturn
+       .locals 1
+       .maxstack 1
+} // method MoveNext
+.method private final virtual hidebysig newslot instance void 
'System.Collections.IEnumerator.Reset'() cil managed java 
+{
+       .override       'System.Collections'.'IEnumerator'::'Reset'
+       return
+       .locals 1
+       .maxstack 0
+} // method System.Collections.IEnumerator.Reset
+.method public hidebysig instance void 'Reset'() cil managed java 
+{
+       return
+       .locals 1
+       .maxstack 0
+} // method Reset
+.method private final virtual hidebysig newslot specialname instance class 
['.library']'System'.'Object' 'System.Collections.IEnumerator.get_Current'() 
cil managed java 
+{
+       .override       'System.Collections'.'IEnumerator'::'get_Current'
+       iconst_0
+       invokestatic    "System/Int32" "copyIn__" "(I)LSystem/Int32;"
+       areturn
+       .locals 1
+       .maxstack 1
+} // method System.Collections.IEnumerator.get_Current
+.property class ['.library']'System'.'Object' 
'System.Collections.IEnumerator.Current'()
+{
+       .get instance class ['.library']'System'.'Object' 
'TestEnumerator'::'System.Collections.IEnumerator.get_Current'()
+} // property System.Collections.IEnumerator.Current
+.method public hidebysig specialname instance unsigned int8 'get_Current'() 
cil managed java 
+{
+       iconst_0
+       sipush  255
+       iand
+       ireturn
+       .locals 1
+       .maxstack 2
+} // method get_Current
+.property unsigned int8 'Current'()
+{
+       .get instance unsigned int8 'TestEnumerator'::'get_Current'()
+} // property Current
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
+{
+       aload_0
+       invokespecial   instance void ['.library']'System'.'Object'::'.ctor'()
+       return
+       .locals 1
+       .maxstack 1
+} // method .ctor
+} // class TestEnumerator
+.class private sequential sealed serializable ansi 'TestEnumerable' extends 
['.library']'System'.'ValueType' implements 'System.Collections'.'IEnumerable'
+{
+.size 1
+.method private final virtual hidebysig newslot instance class 
'System.Collections'.'IEnumerator' 
'System.Collections.IEnumerable.GetEnumerator'() cil managed java 
+{
+       .override       'System.Collections'.'IEnumerable'::'GetEnumerator'
+       aconst_null
+       areturn
+       .locals 1
+       .maxstack 1
+} // method System.Collections.IEnumerable.GetEnumerator
+.method public hidebysig instance class 'TestEnumerator' 'GetEnumerator'() cil 
managed java 
+{
+       aconst_null
+       areturn
+       .locals 1
+       .maxstack 1
+} // method GetEnumerator
+} // class TestEnumerable
+.class private auto ansi 'Test' extends ['.library']'System'.'Object'
+{
+.method private hidebysig instance int32 'm1'(valuetype 'TestEnumerable' 'en') 
cil managed java 
+{
+       ldc     ""
+       invokestatic    "System/String" "__FromJavaString" 
"(Ljava/lang/String;)LSystem/String;"
+       astore_2
+       aload_1
+       pop
+       aconst_null
+       invokespecial   instance class 'TestEnumerator' 
'TestEnumerable'::'GetEnumerator'()
+       astore  4
+       .try {
+       goto    ?L1
+       aload   4
+       invokespecial   instance unsigned int8 'TestEnumerator'::'get_Current'()
+       istore_3
+       aload_2
+       iload_3
+       invokestatic    "System/Byte" "copyIn__B" "(I)LSystem/Byte;"
+       invokestatic    "System/String" "Concat" 
"(LSystem/Object;LSystem/Object;)LSystem/String;"
+       astore_2
+?L1:
+       aload   4
+       invokespecial   instance bool 'TestEnumerator'::'MoveNext'()
+       ifne    ?L2
+?L3:
+       jsr     ?L4
+       goto    ?L5
+       }
+       catch {
+       astore  5
+       jsr     ?L4
+       aload   5
+       athrow
+       }
+       finally {
+       astore  6
+       aload   4
+       ifeq    ?L6
+       aload   4
+       invokeinterface "System/IDisposable" "Dispose" "()V" 1
+?L6:
+       ret     6
+       }
+?L5:
+       iconst_0
+       ireturn
+       .locals 7
+       .maxstack 2
+} // method m1
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
+{
+       aload_0
+       invokespecial   instance void ['.library']'System'.'Object'::'.ctor'()
+       return
+       .locals 1
+       .maxstack 1
+} // method .ctor
+} // class Test
diff --git a/csharp/stmt/using_statement1.cs b/csharp/stmt/var_locals1.cs
similarity index 62%
copy from csharp/stmt/using_statement1.cs
copy to csharp/stmt/var_locals1.cs
index 20f8412..33ccc47 100644
--- a/csharp/stmt/using_statement1.cs
+++ b/csharp/stmt/var_locals1.cs
@@ -1,7 +1,7 @@
 /*
- * using_statement1.cs - Test the using statement - valid cases.
+ * var_locals1.cs - Test the allocating of local variables using the var type
  *
- * Copyright (C) 2007  Southern Storm Software, Pty Ltd.
+ * Copyright (C) 2009  Southern Storm Software, Pty Ltd.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -18,31 +18,53 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-using System;
-
-public class Test
+namespace Test1
 {
+       public class var
+       {
+       }
+}
 
-       private class TestDisposable : IDisposable
+namespace Test
+{
+       class Test1
        {
-               void Dispose()
+               static int i1()
                {
+                       var y = 10;
+
+                       return y;
                }
-       }
 
-       static void Test1()
-       {
-               TestDisposable a = new TestDisposable();
+               static float f1()
+               {
+                       var y = 1.0f;
 
-               using(a)
+                       return y;
+               }
+
+               static double d1()
                {
+                       var y = 1.0d;
+
+                       return y;
                }
        }
+}
 
-       static void Test2()
+namespace Test
+{
+       using Test1;
+
+       class Test2
        {
-               using(TestDisposable a = new TestDisposable())
+               static var v1()
                {
+                       var y;
+
+                       y = new var();
+                       return y;
                }
        }
-}
+
+}
\ No newline at end of file
diff --git a/csharp/stmt/var_locals1.il b/csharp/stmt/var_locals1.il
new file mode 100644
index 0000000..2fbf53e
--- /dev/null
+++ b/csharp/stmt/var_locals1.il
@@ -0,0 +1,84 @@
+.assembly extern '.library'
+{
+       .ver 0:0:0:0
+}
+.assembly '<Assembly>'
+{
+       .ver 0:0:0:0
+}
+.module '<Module>'
+.namespace 'Test1'
+{
+.class public auto ansi 'var' extends ['.library']'System'.'Object'
+{
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
+{
+       ldarg.0
+       call    instance void ['.library']'System'.'Object'::'.ctor'()
+       ret
+       .maxstack 1
+} // method .ctor
+} // class var
+} // namespace Test1
+.namespace 'Test'
+{
+.class private auto ansi 'Test1' extends ['.library']'System'.'Object'
+{
+.method private static hidebysig int32 'i1'() cil managed 
+{
+       .locals init    (int32)
+       ldc.i4.s        10
+       stloc.0
+       ldloc.0
+       ret
+       .maxstack 1
+} // method i1
+.method private static hidebysig float32 'f1'() cil managed 
+{
+       .locals init    (float32)
+       ldc.r4  float32(0x3F800000)
+       stloc.0
+       ldloc.0
+       ret
+       .maxstack 1
+} // method f1
+.method private static hidebysig float64 'd1'() cil managed 
+{
+       .locals init    (float64)
+       ldc.r4  float32(0x3F800000)
+       stloc.0
+       ldloc.0
+       ret
+       .maxstack 1
+} // method d1
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
+{
+       ldarg.0
+       call    instance void ['.library']'System'.'Object'::'.ctor'()
+       ret
+       .maxstack 1
+} // method .ctor
+} // class Test1
+} // namespace Test
+.namespace 'Test'
+{
+.class private auto ansi 'Test2' extends ['.library']'System'.'Object'
+{
+.method private static hidebysig class 'Test1'.'var' 'v1'() cil managed 
+{
+       .locals init    (class 'Test1'.'var')
+       newobj  instance void 'Test1'.'var'::'.ctor'()
+       stloc.0
+       ldloc.0
+       ret
+       .maxstack 1
+} // method v1
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
+{
+       ldarg.0
+       call    instance void ['.library']'System'.'Object'::'.ctor'()
+       ret
+       .maxstack 1
+} // method .ctor
+} // class Test2
+} // namespace Test
diff --git a/csharp/stmt/var_locals1.jl b/csharp/stmt/var_locals1.jl
new file mode 100644
index 0000000..8df3f6a
--- /dev/null
+++ b/csharp/stmt/var_locals1.jl
@@ -0,0 +1,89 @@
+.assembly extern '.library'
+{
+       .ver 0:0:0:0
+}
+.assembly '<Assembly>'
+{
+       .ver 0:0:0:0
+}
+.module '<Module>'
+.namespace 'Test1'
+{
+.class public auto ansi 'var' extends ['.library']'System'.'Object'
+{
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
+{
+       aload_0
+       invokespecial   instance void ['.library']'System'.'Object'::'.ctor'()
+       return
+       .locals 1
+       .maxstack 1
+} // method .ctor
+} // class var
+} // namespace Test1
+.namespace 'Test'
+{
+.class private auto ansi 'Test1' extends ['.library']'System'.'Object'
+{
+.method private static hidebysig int32 'i1'() cil managed java 
+{
+       bipush  10
+       istore_0
+       iload_0
+       ireturn
+       .locals 1
+       .maxstack 1
+} // method i1
+.method private static hidebysig float32 'f1'() cil managed java 
+{
+       fconst_1
+       fstore_0
+       fload_0
+       freturn
+       .locals 1
+       .maxstack 1
+} // method f1
+.method private static hidebysig float64 'd1'() cil managed java 
+{
+       dconst_1
+       dstore_0
+       dload_0
+       dreturn
+       .locals 2
+       .maxstack 2
+} // method d1
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
+{
+       aload_0
+       invokespecial   instance void ['.library']'System'.'Object'::'.ctor'()
+       return
+       .locals 1
+       .maxstack 1
+} // method .ctor
+} // class Test1
+} // namespace Test
+.namespace 'Test'
+{
+.class private auto ansi 'Test2' extends ['.library']'System'.'Object'
+{
+.method private static hidebysig class 'Test1'.'var' 'v1'() cil managed java 
+{
+       new     'Test1'.'var'
+       dup
+       invokespecial   instance void 'Test1'.'var'::'.ctor'()
+       astore_0
+       aload_0
+       areturn
+       .locals 1
+       .maxstack 2
+} // method v1
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
+{
+       aload_0
+       invokespecial   instance void ['.library']'System'.'Object'::'.ctor'()
+       return
+       .locals 1
+       .maxstack 1
+} // method .ctor
+} // class Test2
+} // namespace Test
diff --git a/csharp/stmt/using_statement1.cs b/csharp/stmt/var_using1.cs
similarity index 52%
copy from csharp/stmt/using_statement1.cs
copy to csharp/stmt/var_using1.cs
index 20f8412..4c4cf20 100644
--- a/csharp/stmt/using_statement1.cs
+++ b/csharp/stmt/var_using1.cs
@@ -1,7 +1,7 @@
 /*
- * using_statement1.cs - Test the using statement - valid cases.
+ * var_using1.cs - Test using statements using the var type
  *
- * Copyright (C) 2007  Southern Storm Software, Pty Ltd.
+ * Copyright (C) 2009  Southern Storm Software, Pty Ltd.
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -18,31 +18,68 @@
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  */
 
-using System;
+namespace Test1
+{
+       using System;
+
+       public class var : IDisposable
+       {
+               public void Dispose()
+               {
+               }
+       }
+
+       public class TestVar : var
+       {
+       }
+}
 
-public class Test
+namespace Test
 {
+       using System;
 
-       private class TestDisposable : IDisposable
+       class TestDisposable : IDisposable
        {
-               void Dispose()
+               public int i = 1;
+
+               public void Dispose()
                {
                }
        }
 
-       static void Test1()
+       class TestDisposable1 : IDisposable
        {
-               TestDisposable a = new TestDisposable();
+               public int i = 2;
 
-               using(a)
+               public void Dispose()
                {
                }
        }
 
-       static void Test2()
+       class Test1
        {
-               using(TestDisposable a = new TestDisposable())
+               static void t1()
                {
+                       using(var a = new TestDisposable(), b = new 
TestDisposable1())
+                       {
+                               a.i += b.i;
+                       }
                }
        }
 }
+
+namespace Test
+{
+       using Test1;
+
+       class Test2
+       {
+               static void t1()
+               {
+                       using(var a = new TestVar())
+                       {
+                       }
+               }
+       }
+
+}
\ No newline at end of file
diff --git a/csharp/stmt/var_using1.il b/csharp/stmt/var_using1.il
new file mode 100644
index 0000000..28a48fb
--- /dev/null
+++ b/csharp/stmt/var_using1.il
@@ -0,0 +1,168 @@
+.assembly extern '.library'
+{
+       .ver 0:0:0:0
+}
+.assembly '<Assembly>'
+{
+       .ver 0:0:0:0
+}
+.module '<Module>'
+.namespace 'Test1'
+{
+.class public auto ansi 'var' extends ['.library']'System'.'Object' implements 
['.library']'System'.'IDisposable'
+{
+.method public hidebysig instance void 'Dispose'() cil managed 
+{
+       ret
+       .maxstack 0
+} // method Dispose
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
+{
+       ldarg.0
+       call    instance void ['.library']'System'.'Object'::'.ctor'()
+       ret
+       .maxstack 1
+} // method .ctor
+} // class var
+} // namespace Test1
+.namespace 'Test1'
+{
+.class public auto ansi 'TestVar' extends 'Test1'.'var'
+{
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
+{
+       ldarg.0
+       call    instance void 'Test1'.'var'::'.ctor'()
+       ret
+       .maxstack 1
+} // method .ctor
+} // class TestVar
+} // namespace Test1
+.namespace 'Test'
+{
+.class private auto ansi 'TestDisposable' extends 
['.library']'System'.'Object' implements ['.library']'System'.'IDisposable'
+{
+.field public int32 'i'
+.method public hidebysig instance void 'Dispose'() cil managed 
+{
+       ret
+       .maxstack 0
+} // method Dispose
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
+{
+       ldarg.0
+       ldc.i4.1
+       stfld   int32 'Test'.'TestDisposable'::'i'
+       ldarg.0
+       call    instance void ['.library']'System'.'Object'::'.ctor'()
+       ret
+       .maxstack 2
+} // method .ctor
+} // class TestDisposable
+} // namespace Test
+.namespace 'Test'
+{
+.class private auto ansi 'TestDisposable1' extends 
['.library']'System'.'Object' implements ['.library']'System'.'IDisposable'
+{
+.field public int32 'i'
+.method public hidebysig instance void 'Dispose'() cil managed 
+{
+       ret
+       .maxstack 0
+} // method Dispose
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
+{
+       ldarg.0
+       ldc.i4.2
+       stfld   int32 'Test'.'TestDisposable1'::'i'
+       ldarg.0
+       call    instance void ['.library']'System'.'Object'::'.ctor'()
+       ret
+       .maxstack 2
+} // method .ctor
+} // class TestDisposable1
+} // namespace Test
+.namespace 'Test'
+{
+.class private auto ansi 'Test1' extends ['.library']'System'.'Object'
+{
+.method private static hidebysig void 't1'() cil managed 
+{
+       .locals init    (class 'Test'.'TestDisposable', class 
'Test'.'TestDisposable1')
+       newobj  instance void 'Test'.'TestDisposable'::'.ctor'()
+       stloc.0
+       .try {
+       newobj  instance void 'Test'.'TestDisposable1'::'.ctor'()
+       stloc.1
+       .try {
+       ldloc.0
+       dup
+       ldfld   int32 'Test'.'TestDisposable'::'i'
+       ldloc.1
+       ldfld   int32 'Test'.'TestDisposable1'::'i'
+       add
+       stfld   int32 'Test'.'TestDisposable'::'i'
+       leave   ?L1
+       } finally {
+       ldloc.1
+       brfalse ?L2
+       ldloc.1
+       callvirt        instance void [.library]System.IDisposable::Dispose()
+?L2:
+       endfinally
+       }
+?L1:
+       leave   ?L3
+       } finally {
+       ldloc.0
+       brfalse ?L4
+       ldloc.0
+       callvirt        instance void [.library]System.IDisposable::Dispose()
+?L4:
+       endfinally
+       }
+?L3:
+       ret
+       .maxstack 3
+} // method t1
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
+{
+       ldarg.0
+       call    instance void ['.library']'System'.'Object'::'.ctor'()
+       ret
+       .maxstack 1
+} // method .ctor
+} // class Test1
+} // namespace Test
+.namespace 'Test'
+{
+.class private auto ansi 'Test2' extends ['.library']'System'.'Object'
+{
+.method private static hidebysig void 't1'() cil managed 
+{
+       .locals init    (class 'Test1'.'var')
+       newobj  instance void 'Test1'.'TestVar'::'.ctor'()
+       stloc.0
+       .try {
+       leave   ?L5
+       } finally {
+       ldloc.0
+       brfalse ?L6
+       ldloc.0
+       callvirt        instance void [.library]System.IDisposable::Dispose()
+?L6:
+       endfinally
+       }
+?L5:
+       ret
+       .maxstack 1
+} // method t1
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed 
+{
+       ldarg.0
+       call    instance void ['.library']'System'.'Object'::'.ctor'()
+       ret
+       .maxstack 1
+} // method .ctor
+} // class Test2
+} // namespace Test
diff --git a/csharp/stmt/var_using1.jl b/csharp/stmt/var_using1.jl
new file mode 100644
index 0000000..7c6319f
--- /dev/null
+++ b/csharp/stmt/var_using1.jl
@@ -0,0 +1,131 @@
+.assembly extern '.library'
+{
+       .ver 0:0:0:0
+}
+.assembly '<Assembly>'
+{
+       .ver 0:0:0:0
+}
+.module '<Module>'
+.namespace 'Test1'
+{
+.class public auto ansi 'var' extends ['.library']'System'.'Object' implements 
['.library']'System'.'IDisposable'
+{
+.method public hidebysig instance void 'Dispose'() cil managed java 
+{
+       return
+       .locals 1
+       .maxstack 0
+} // method Dispose
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
+{
+       aload_0
+       invokespecial   instance void ['.library']'System'.'Object'::'.ctor'()
+       return
+       .locals 1
+       .maxstack 1
+} // method .ctor
+} // class var
+} // namespace Test1
+.namespace 'Test1'
+{
+.class public auto ansi 'TestVar' extends 'Test1'.'var'
+{
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
+{
+       aload_0
+       invokespecial   instance void 'Test1'.'var'::'.ctor'()
+       return
+       .locals 1
+       .maxstack 1
+} // method .ctor
+} // class TestVar
+} // namespace Test1
+.namespace 'Test'
+{
+.class private auto ansi 'TestDisposable' extends 
['.library']'System'.'Object' implements ['.library']'System'.'IDisposable'
+{
+.field public int32 'i'
+.method public hidebysig instance void 'Dispose'() cil managed java 
+{
+       return
+       .locals 1
+       .maxstack 0
+} // method Dispose
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
+{
+       aload_0
+       iconst_1
+       putfield        int32 'Test'.'TestDisposable'::'i'
+       aload_0
+       invokespecial   instance void ['.library']'System'.'Object'::'.ctor'()
+       return
+       .locals 1
+       .maxstack 2
+} // method .ctor
+} // class TestDisposable
+} // namespace Test
+.namespace 'Test'
+{
+.class private auto ansi 'TestDisposable1' extends 
['.library']'System'.'Object' implements ['.library']'System'.'IDisposable'
+{
+.field public int32 'i'
+.method public hidebysig instance void 'Dispose'() cil managed java 
+{
+       return
+       .locals 1
+       .maxstack 0
+} // method Dispose
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
+{
+       aload_0
+       iconst_2
+       putfield        int32 'Test'.'TestDisposable1'::'i'
+       aload_0
+       invokespecial   instance void ['.library']'System'.'Object'::'.ctor'()
+       return
+       .locals 1
+       .maxstack 2
+} // method .ctor
+} // class TestDisposable1
+} // namespace Test
+.namespace 'Test'
+{
+.class private auto ansi 'Test1' extends ['.library']'System'.'Object'
+{
+.method private static hidebysig void 't1'() cil managed java 
+{
+       return
+       .locals 2
+       .maxstack 0
+} // method t1
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
+{
+       aload_0
+       invokespecial   instance void ['.library']'System'.'Object'::'.ctor'()
+       return
+       .locals 1
+       .maxstack 1
+} // method .ctor
+} // class Test1
+} // namespace Test
+.namespace 'Test'
+{
+.class private auto ansi 'Test2' extends ['.library']'System'.'Object'
+{
+.method private static hidebysig void 't1'() cil managed java 
+{
+       return
+       .locals 1
+       .maxstack 0
+} // method t1
+.method public hidebysig specialname rtspecialname instance void '.ctor'() cil 
managed java 
+{
+       aload_0
+       invokespecial   instance void ['.library']'System'.'Object'::'.ctor'()
+       return
+       .locals 1
+       .maxstack 1
+} // method .ctor
+} // class Test2
+} // namespace Test

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog                                          |   37 +++++
 csharp/stmt/Makefile.am                            |   10 +-
 csharp/stmt/{locals3.cs => locals4.cs}             |   11 +-
 csharp/{class/const1.il => stmt/locals4.il}        |   21 ++-
 csharp/stmt/{locals2.jl => locals4.jl}             |   21 ++-
 csharp/stmt/using3.il                              |    7 +-
 csharp/stmt/using3.jl                              |    2 +-
 csharp/stmt/using_statement1.cs                    |    2 +-
 csharp/stmt/using_statement1.il                    |    9 +-
 csharp/stmt/using_statement1.jl                    |    4 +-
 .../{using_statement1.cs => using_statement2.cs}   |   18 +--
 .../{using_statement1.il => using_statement2.il}   |   38 +++--
 .../{using_statement1.jl => using_statement2.jl}   |   22 +--
 csharp/stmt/{foreach1.cs => var_foreach1.cs}       |    7 +-
 csharp/stmt/{foreach1.il => var_foreach1.il}       |    0
 csharp/stmt/{foreach1.jl => var_foreach1.jl}       |    0
 csharp/stmt/{foreach3.cs => var_foreach3.cs}       |    7 +-
 csharp/stmt/{foreach3.il => var_foreach3.il}       |    0
 csharp/stmt/{foreach3.jl => var_foreach3.jl}       |    0
 csharp/stmt/{foreach4.cs => var_foreach4.cs}       |    7 +-
 csharp/stmt/{foreach4.il => var_foreach4.il}       |    6 +-
 csharp/stmt/{foreach4.jl => var_foreach4.jl}       |    4 +-
 csharp/stmt/{foreach5.cs => var_foreach5.cs}       |    7 +-
 csharp/stmt/{foreach5.il => var_foreach5.il}       |    6 +-
 csharp/stmt/{foreach5.jl => var_foreach5.jl}       |    4 +-
 csharp/{class/partial3.cs => stmt/var_locals1.cs}  |   42 ++++--
 csharp/stmt/var_locals1.il                         |   84 ++++++++++
 csharp/stmt/var_locals1.jl                         |   89 +++++++++++
 csharp/{class/partial3.cs => stmt/var_using1.cs}   |   53 ++++++-
 csharp/stmt/var_using1.il                          |  168 ++++++++++++++++++++
 csharp/{class/partial4.jl => stmt/var_using1.jl}   |  103 ++++++------
 31 files changed, 617 insertions(+), 172 deletions(-)
 copy csharp/stmt/{locals3.cs => locals4.cs} (85%)
 copy csharp/{class/const1.il => stmt/locals4.il} (64%)
 copy csharp/stmt/{locals2.jl => locals4.jl} (68%)
 copy csharp/stmt/{using_statement1.cs => using_statement2.cs} (80%)
 copy csharp/stmt/{using_statement1.il => using_statement2.il} (76%)
 copy csharp/stmt/{using_statement1.jl => using_statement2.jl} (75%)
 copy csharp/stmt/{foreach1.cs => var_foreach1.cs} (82%)
 copy csharp/stmt/{foreach1.il => var_foreach1.il} (100%)
 copy csharp/stmt/{foreach1.jl => var_foreach1.jl} (100%)
 copy csharp/stmt/{foreach3.cs => var_foreach3.cs} (81%)
 copy csharp/stmt/{foreach3.il => var_foreach3.il} (100%)
 copy csharp/stmt/{foreach3.jl => var_foreach3.jl} (100%)
 copy csharp/stmt/{foreach4.cs => var_foreach4.cs} (89%)
 copy csharp/stmt/{foreach4.il => var_foreach4.il} (96%)
 copy csharp/stmt/{foreach4.jl => var_foreach4.jl} (97%)
 copy csharp/stmt/{foreach5.cs => var_foreach5.cs} (89%)
 copy csharp/stmt/{foreach5.il => var_foreach5.il} (96%)
 copy csharp/stmt/{foreach5.jl => var_foreach5.jl} (97%)
 copy csharp/{class/partial3.cs => stmt/var_locals1.cs} (71%)
 create mode 100644 csharp/stmt/var_locals1.il
 create mode 100644 csharp/stmt/var_locals1.jl
 copy csharp/{class/partial3.cs => stmt/var_using1.cs} (59%)
 create mode 100644 csharp/stmt/var_using1.il
 copy csharp/{class/partial4.jl => stmt/var_using1.jl} (51%)


hooks/post-receive
-- 
DotGNU Portable.NET Compiler tests (cscc)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]