* statement.cs (ToplevelBlock.GetParameterReference)
authorRaja R Harinath <harinath@hurrynot.org>
Thu, 19 May 2005 10:04:20 +0000 (10:04 -0000)
committerRaja R Harinath <harinath@hurrynot.org>
Thu, 19 May 2005 10:04:20 +0000 (10:04 -0000)
(ToplevelBlock.IsParameterReference,ToplevelBlock.IsLocalParameter):
Move here from class Block.
* ecore.cs (SimpleName.SimpleNameResolve): Update to changes.
* expression.cs (ParameterReference.DoResolveBase): Likewise.

svn path=/trunk/mcs/; revision=44746

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

index a27b7081ab42a15963c17c54386fdc3b47f2f72a..ef5e13de9ad0e304061ff2139d9ef0788c618116 100644 (file)
@@ -1,3 +1,11 @@
+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 2dbee1c7a35d2589d0533078dae8521d955cf16b..64bd5383f416a7b1fa2ad52ccfb07a5572267a6e 100644 (file)
@@ -2041,7 +2041,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 c9c44ad8463e7c2ee5f37430f3dca08b83362271..e2c96ee3a7668d775ddcf3a07d8b6481f143a974 100644 (file)
@@ -3960,7 +3960,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 5b021963f28f1e1189d0e4794b22e7797d8206f8..a35af12a8783da0331ed729554fa07b0f3bad288 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>
@@ -2220,6 +2177,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;