[svn] r6796: nemerle/trunk: macros/core.n ncc/parsing/ParseTree.n

nazgul svnadmin at nemerle.org
Thu Oct 26 15:22:58 CEST 2006


Log:
Do not use ManagerClass.Instance directly. Some api improvements

Author: nazgul
Date: Thu Oct 26 15:22:57 2006
New Revision: 6796

Modified:
   nemerle/trunk/macros/core.n
   nemerle/trunk/ncc/parsing/ParseTree.n

Modified: nemerle/trunk/macros/core.n
==============================================================================
--- nemerle/trunk/macros/core.n	(original)
+++ nemerle/trunk/macros/core.n	Thu Oct 26 15:22:57 2006
@@ -735,15 +735,15 @@
 
 
   macro DefineCTX (ctx) {
-    <[ def $(ManagerClass.Instance.MacrosRegistry.GetImplicitCTXName () : name) = $ctx ]>
+    <[ def $(ImplicitCTX().Manager.MacrosRegistry.GetImplicitCTXName () : name) = $ctx ]>
   }
 
   macro ImplicitCTX () {
-    <[ $(ManagerClass.Instance.MacrosRegistry.GetImplicitCTXName () : name) ]>
+    <[ $(ImplicitCTX().Manager.MacrosRegistry.GetImplicitCTXName () : name) ]>
   }  
 
   macro Manager () {
-    <[ $(ManagerClass.Instance.MacrosRegistry.GetImplicitCTXName () : name).Manager ]>
+    <[ $(ImplicitCTX().Manager.MacrosRegistry.GetImplicitCTXName () : name).Manager ]>
   }  
     
   /** creates new symbol with given id and current global context */
@@ -1130,7 +1130,7 @@
                        Nemerle.MacroTargets.Method)]
   macro NotImplemented (t : TypeBuilder, m : ParsedMethod) {
     def ignores = List.Map (m.header.parms, fun (x : PT.Fun_parm) {
-      <[ _ = $(x.name.GetName () : name) ]>
+      <[ _ = $(x.ReferencingExpr) ]>
     });
     def message = "Method `" + m.name.GetName ().Id + "' in type `" + 
                   t.FullName + "' is not implemented yet.";
@@ -1147,12 +1147,12 @@
   macro OverrideObjectEquals (t : TypeBuilder, m : ParsedMethod)
   {
     match (m.header.parms) {
-      | [x] =>
+      | [_] =>
         t.Define (<[ decl:
           public override Equals (x : object) : bool
           {
-            if (typeof ($(x.ty)).IsInstanceOfType (x))
-              this.$(m.header.name.GetName () : name) (x :> $(x.ty))
+            if (typeof (this).IsInstanceOfType (x))
+              this.$(m.header.name.GetName () : name) (x :> this)
             else
               false
           }
@@ -1176,9 +1176,7 @@
       }
     ]>);
     
-    def parms = List.Map (m.header.parms, fun (x : PT.Fun_parm) {
-      <[ $(x.name.GetName () : name) ]>
-    });
+    def parms = m.header.ParametersReferences;
     
     def newBody = Util.locate(m.Body.Location, <[ 
       $this_expr . $(meth : name) ( .. $parms )

Modified: nemerle/trunk/ncc/parsing/ParseTree.n
==============================================================================
--- nemerle/trunk/ncc/parsing/ParseTree.n	(original)
+++ nemerle/trunk/ncc/parsing/ParseTree.n	Thu Oct 26 15:22:57 2006
@@ -422,6 +422,16 @@
       }
     }
 
+    public ReferencingExpr : PExpr {
+      get { 
+        match (name) {
+          | HalfId (n)
+          | Name (n) => PExpr.Ref (this.Location, n)
+          | Expression (e) => e
+        }
+      }
+    }
+
     public override ToString() : string
     {
       $"$(this.Name) : $ty"
@@ -462,6 +472,10 @@
       this.typarms = typarms;
     }
 
+    public ParametersReferences : list [PExpr] {
+      get { parms.Map (_.ReferencingExpr) }
+    }
+
     public override ToString() : string
     {
       def parms = parms.ToString (", ");



More information about the svn mailing list