[svn] r7756: nemerle/trunk/ncc: generation/DecisionTreeCompiler.n misc/PrettyPrint.n parsing/MainParser.n ...

IT svnadmin at nemerle.org
Wed Aug 8 06:15:52 CEST 2007


Log:
Working on debugging.



Author: IT
Date: Wed Aug  8 06:15:47 2007
New Revision: 7756

Modified:
   nemerle/trunk/ncc/generation/DecisionTreeCompiler.n
   nemerle/trunk/ncc/misc/PrettyPrint.n
   nemerle/trunk/ncc/parsing/MainParser.n
   nemerle/trunk/ncc/parsing/Utility.n
   nemerle/trunk/ncc/typing/DecisionTreeBuilder.n

Modified: nemerle/trunk/ncc/generation/DecisionTreeCompiler.n
==============================================================================
--- nemerle/trunk/ncc/generation/DecisionTreeCompiler.n	(original)
+++ nemerle/trunk/ncc/generation/DecisionTreeCompiler.n	Wed Aug  8 06:15:47 2007
@@ -288,8 +288,15 @@
 
     get_debug_loc (decision : Decision) : Location
     {
-      if (Manager.Options.EmitDebug && decision is Decision.Success && !decision.Location.IsGeneratedOrEmpty)
-        decision.Location;
+      if (Manager.Options.EmitDebug && !decision.Location.IsGeneratedOrEmpty)
+      {
+        match (decision)
+        {
+          | Success
+          | Assign => decision.Location;
+          | _      => Location.Default;
+        }
+      }
       else
         Location.Default;
     }

Modified: nemerle/trunk/ncc/misc/PrettyPrint.n
==============================================================================

Modified: nemerle/trunk/ncc/parsing/MainParser.n
==============================================================================
--- nemerle/trunk/ncc/parsing/MainParser.n	(original)
+++ nemerle/trunk/ncc/parsing/MainParser.n	Wed Aug  8 06:15:47 2007
@@ -1713,13 +1713,13 @@
         | "=" => PExpr.Assign (loc, e1, e2)
         | ":" => PExpr.TypeEnforcement (loc, e1, e2)
         | ":>" => PExpr.TypeConversion (loc, e1, e2)
-        | "::" => Util.locate (loc, <[ list.Cons ($e1, $e2) ]>)
+        | "::" => Util.set (loc, <[ list.Cons ($e1, $e2) ]>);
         | "as" => PExpr.As (loc, e1, make_splicable (e2))
         | "where" => PExpr.Where (loc, e1, e2)
         | "is" => PExpr.Is (loc, e1, e2)
 
         | "matches" =>
-          Util.locate (loc, <[ match ($e1) { | $e2 => true | _ => false } ]>)
+          Util.set (loc, <[ match ($e1) { | $e2 => true | _ => false } ]>)
           
         | _ => PExpr.Call (loc, PExpr.Ref (op_loc, mkname (name)), [e1, e2])
       }

Modified: nemerle/trunk/ncc/parsing/Utility.n
==============================================================================
--- nemerle/trunk/ncc/parsing/Utility.n	(original)
+++ nemerle/trunk/ncc/parsing/Utility.n	Wed Aug  8 06:15:47 2007
@@ -152,6 +152,12 @@
           <[ $expr . $(name : dyn) ]>
       })
     }
+
+    public set (loc : Location, expr : Parsetree.PExpr) : Parsetree.PExpr
+    {
+      expr.Location = loc;
+      expr;
+    }
   }
 
   [ManagerAccess (ManagerClass.Instance)]

Modified: nemerle/trunk/ncc/typing/DecisionTreeBuilder.n
==============================================================================
--- nemerle/trunk/ncc/typing/DecisionTreeBuilder.n	(original)
+++ nemerle/trunk/ncc/typing/DecisionTreeBuilder.n	Wed Aug  8 06:15:47 2007
@@ -666,7 +666,7 @@
                       | Decision.IfEq (_, Con.Guard, _, _) => Decision.Assign (dtree.Location, path, decl, dtree)
 
                       | Decision.IfEq (p, con, if_true, if_false) => 
-                        def assign = Decision.Assign (dtree.Location, path, decl, if_true);
+                        def assign = Decision.Assign (if_true.Location, path, decl, if_true);
                         Decision.IfEq (dtree.Location, p, con, assign, if_false);
   
                       | Decision.Success



More information about the svn mailing list