**** Merged r44746 from MCS ****
authorMartin Baulig <martin@novell.com>
Fri, 20 May 2005 15:42:38 +0000 (15:42 -0000)
committerMartin Baulig <martin@novell.com>
Fri, 20 May 2005 15:42:38 +0000 (15:42 -0000)
svn path=/trunk/mcs/; revision=44824

mcs/gmcs/ChangeLog
mcs/gmcs/ecore.cs
mcs/gmcs/expression.cs
mcs/gmcs/rootcontext.cs
mcs/gmcs/statement.cs

index f440e261162be564e7d1d1066f30d96d10a759e8..f4fee5fb5500ab2a1d8c25429ca3bb1ea6537fba 100644 (file)
        * convert.cs (Convert.ImplicitStandardConversionExists): Use it
        here since we don't want to report an error; see the new test-336.cs.
 
+2005-05-19  Raja R Harinath  <rharinath@novell.com>
+
+       * statement.cs (ToplevelBlock.GetParameterReference)
+       (ToplevelBlock.IsParameterReference,ToplevelBlock.IsLocalParameter):
+       Move here from class Block.
+       * ecore.cs (SimpleName.SimpleNameResolve): Update to changes.
+       * expression.cs (ParameterReference.DoResolveBase): Likewise.
+
 2005-05-18  Martin Baulig  <martin@ximian.com>
 
        Fix #74978.
index da397d8f048e4274846fdf1e0c8b0b3724f478cf..c96ce62b104c7b62e57e0a36491879eacca71cfa 100644 (file)
@@ -2198,7 +2198,7 @@ namespace Mono.CSharp {
                                                return var.Resolve (ec);
                                }
 
-                               ParameterReference pref = current_block.GetParameterReference (Name, loc);
+                               ParameterReference pref = current_block.Toplevel.GetParameterReference (Name, loc);
                                if (pref != null) {
                                        if (right_side != null)
                                                return pref.ResolveLValue (ec, right_side);
index d3a06bea03d2872b66c40e21133b5d5a99176b79..bdb3086db8ce177518f89a6691c1b209c4be54f9 100644 (file)
@@ -3998,7 +3998,7 @@ namespace Mono.CSharp {
                                // flag it for capturing
                                //
                                //Console.WriteLine ("Is parameter `{0}' local? {1}", name, block.IsLocalParameter (name));
-                               if (!block.IsLocalParameter (name)){
+                               if (!block.Toplevel.IsLocalParameter (name)){
                                        ec.CaptureParameter (name, type, idx);
                                }
                        }
index a8c932aba13ab98cc0c05a74a490afc76c9d00c2..d4d46454836e3469769cad21f244c7cc48539fb7 100644 (file)
@@ -322,6 +322,7 @@ namespace Mono.CSharp {
                                //
                                "System.Collections.Generic.IEnumerator`1",
                                "System.Collections.Generic.IEnumerable`1",
+                               "System.INullableValue"
                        };
 
                        foreach (string iname in interfaces_first_stage)
index 0fd9a786b2e78030ff9c4f1aa2efe1093927ce2c..9332dd8543b25adf3b99c2cb4d187bc2d71888d8 100644 (file)
@@ -1657,49 +1657,6 @@ namespace Mono.CSharp {
                        return e != null;
                }
                
-               //
-               // Returns a `ParameterReference' for the given name, or null if there
-               // is no such parameter
-               //
-               public ParameterReference GetParameterReference (string name, Location loc)
-               {
-                       Parameter par;
-                       int idx;
-
-                       for (Block b = this; b != null; b = b.Toplevel.Parent) {
-                               Parameters pars = b.Toplevel.Parameters;
-                               par = pars.GetParameterByName (name, out idx);
-                               if (par != null)
-                                       return new ParameterReference (pars, this, idx, name, loc);
-                       }
-                       return null;
-               }
-
-               //
-               // Whether the parameter named `name' is local to this block, 
-               // or false, if the parameter belongs to an encompassing block.
-               //
-               public bool IsLocalParameter (string name)
-               {
-                       return Toplevel.Parameters.GetParameterByName (name) != null;
-               }
-               
-               //
-               // Whether the `name' is a parameter reference
-               //
-               public bool IsParameterReference (string name)
-               {
-                       Parameter par;
-                       int idx;
-
-                       for (Block b = this; b != null; b = b.Toplevel.Parent) {
-                               par = b.Toplevel.Parameters.GetParameterByName (name, out idx);
-                               if (par != null)
-                                       return true;
-                       }
-                       return false;
-               }
-
                /// <returns>
                ///   A list of labels that were not used within this block
                /// </returns>
@@ -2215,6 +2172,48 @@ namespace Mono.CSharp {
                        }
                }
 
+               //
+               // Returns a `ParameterReference' for the given name, or null if there
+               // is no such parameter
+               //
+               public ParameterReference GetParameterReference (string name, Location loc)
+               {
+                       Parameter par;
+                       int idx;
+
+                       for (ToplevelBlock t = this; t != null; t = t.Container) {
+                               Parameters pars = t.Parameters;
+                               par = pars.GetParameterByName (name, out idx);
+                               if (par != null)
+                                       return new ParameterReference (pars, this, idx, name, loc);
+                       }
+                       return null;
+               }
+
+               //
+               // Whether the parameter named `name' is local to this block, 
+               // or false, if the parameter belongs to an encompassing block.
+               //
+               public bool IsLocalParameter (string name)
+               {
+                       return Parameters.GetParameterByName (name) != null;
+               }
+               
+               //
+               // Whether the `name' is a parameter reference
+               //
+               public bool IsParameterReference (string name)
+               {
+                       Parameter par;
+                       int idx;
+
+                       for (ToplevelBlock t = this; t != null; t = t.Container) {
+                               if (t.IsLocalParameter (name))
+                                       return true;
+                       }
+                       return false;
+               }
+
                public bool ResolveMeta (EmitContext ec, InternalParameters ip)
                {
                        int errors = Report.Errors;