[svn] r7471: nemerle/trunk/ncc: generation/DecisionTreeCompiler.n generation/ILEmitter.n parsing/MainParse...

IT svnadmin at nemerle.org
Fri Feb 23 07:23:39 CET 2007


Log:
Working on debug locations.

Author: IT
Date: Fri Feb 23 07:23:36 2007
New Revision: 7471

Modified:
   nemerle/trunk/ncc/generation/DecisionTreeCompiler.n
   nemerle/trunk/ncc/generation/ILEmitter.n
   nemerle/trunk/ncc/parsing/MainParser-Extensions.n

Modified: nemerle/trunk/ncc/generation/DecisionTreeCompiler.n
==============================================================================
--- nemerle/trunk/ncc/generation/DecisionTreeCompiler.n	(original)
+++ nemerle/trunk/ncc/generation/DecisionTreeCompiler.n	Fri Feb 23 07:23:36 2007
@@ -295,7 +295,7 @@
     build_path_expression (path : Path) : TExpr
     {
       | Here => 
-        val.loc = Location.Default; // try to not confuse debugger with back reference location
+        //val.loc = Location.Default; // try to not confuse debugger with back reference location
         val
 
       | Field (f, p) =>
@@ -449,7 +449,7 @@
         else 
           (Cast (compare_to, literal.GetInternalType (compare_to.Type.Manager.InternalType)),
            TExpr.Literal (literal));
-      TExpr.Call (InternalType.Boolean, method, [Parm (compare_to), Parm (lit)], false)
+      TExpr.Call (compare_to.Location, InternalType.Boolean, method, [Parm (compare_to), Parm (lit)], false)
     }
     
     /**

Modified: nemerle/trunk/ncc/generation/ILEmitter.n
==============================================================================
--- nemerle/trunk/ncc/generation/ILEmitter.n	(original)
+++ nemerle/trunk/ncc/generation/ILEmitter.n	Fri Feb 23 07:23:36 2007
@@ -503,6 +503,11 @@
       }
     }
 
+    private _debug(loc : Located) : void
+    {
+      _ = loc.Location;
+    }
+
     /**
      * Emits an expression.
      */
@@ -634,10 +639,12 @@
             }
           }
 
-          when (IsDebugEnabled) {
-            Mark (expr.loc);
-            _ilg.Emit (OpCodes.Nop);
-          }
+          // IT: this code is very questionable.
+          //when (IsDebugEnabled) {
+          //  Mark (expr.loc);
+          //  _ilg.Emit (OpCodes.Nop);
+          //}
+
           def label_condition_else = _ilg.DefineLabel ();
           def label_condition_fi = _ilg.DefineLabel ();
           emit_branch (cond_expr, label_condition_else);

Modified: nemerle/trunk/ncc/parsing/MainParser-Extensions.n
==============================================================================
--- nemerle/trunk/ncc/parsing/MainParser-Extensions.n	(original)
+++ nemerle/trunk/ncc/parsing/MainParser-Extensions.n	Fri Feb 23 07:23:36 2007
@@ -272,7 +272,9 @@
       def (end, parms) = parse_grammar_rule (tree, stop, (1 << 15) :> MacroTargets);
       match (end) {
         | GrammarElement.End (definition) =>
-          PExpr.MacroCall (loc.Combine(last_tok.Location), mkname (nm, loc), definition.MacroNamespace,
+          def mloc = loc.Combine(last_tok.Location);
+          def mloc = parms.FoldLeft(mloc, (e, l) => l.Combine(e.Location));
+          PExpr.MacroCall (mloc, mkname (nm, mloc), definition.MacroNamespace,
                            definition.Permute (parms))
         | _ =>
           fatal_error (loc, "unable to parse syntax rule, stopped at: " + end.ToString ())



More information about the svn mailing list