[svn] r6490: nemerle/trunk/ncc/typing/Macros.n

stn svnadmin at nemerle.org
Mon Aug 7 18:25:56 CEST 2006


Log:
Moved the null check in TraverseExpr upwards.

Author: stn
Date: Mon Aug  7 18:25:55 2006
New Revision: 6490

Modified:
   nemerle/trunk/ncc/typing/Macros.n

Modified: nemerle/trunk/ncc/typing/Macros.n
==============================================================================
--- nemerle/trunk/ncc/typing/Macros.n	(original)
+++ nemerle/trunk/ncc/typing/Macros.n	Mon Aug  7 18:25:55 2006
@@ -887,6 +887,9 @@
   public TraverseExpr (ctx : option[Typer], expr : PExpr, in_pattern : bool,
                        call : bool * bool * PExpr -> PExpr) : PExpr
   {
+    if (expr == null)
+      <[ $(null) ]>
+    else
     Util.locate (expr.loc, {
       def expr = 
         match (ctx) {
@@ -915,21 +918,19 @@
             <[ $(traverse (obj)) . $mem ]>
 
           | <[ $func (.. $parms) ]> =>
-            <[ $(traverse (func)) (..$(parms.Map (fun (param) {
-                if (param == null) null else traverse (param) } ))) ]>
+              <[ $(traverse (func)) (..$(parms.Map (traverse))) ]>
 
           | <[ $func .[.. $parms] ]> =>
-            <[ $(traverse (func)) .[..$(parms.Map (fun (param) {
-                if (param == null) null else traverse (param) } ))] ]>
+              <[ $(traverse (func)) .[..$(parms.Map (traverse))] ]>
             
           | <[ $target = $source ]> =>
-            <[ $(traverse (target)) = $(if (source == null) null else traverse (source)) ]>
+              <[ $(traverse (target)) = $(traverse (source)) ]>
 
           | <[ def $n = $val ]> =>
-            <[ def $(traversep (n)) = $(if (val == null) null else traverse (val)) ]>
+              <[ def $(traversep (n)) = $(traverse (val)) ]>
 
           | <[ mutable $n = $val ]> =>
-            <[ mutable $(traversep (n)) = $(if (val == null) null else traverse (val)) ]>
+              <[ mutable $(traversep (n)) = $(traverse (val)) ]>
 
           | <[ match ($mexpr) {.. $cases } ]> =>
             def go_case (c : MatchCase) {
@@ -945,11 +946,7 @@
             def cases = List.Map (cases, go_case);
             <[ match ($(traverse (mexpr))) {.. $cases } ]>
 
-          | <[ throw $exc ]> =>
-            <[ throw $(if (exc == null) null else traverse (exc)) ]>
-
-          | PExpr.TryWith (body, exn, exn_ty, handler) =>
-            PExpr.Try (traverse (body), [TryCase.Catch (exn, exn_ty, traverse (handler))])
+            | <[ throw $exc ]> => <[ throw $(traverse (exc)) ]>
 
           | PExpr.TryFinally (body, handler) =>
             PExpr.TryFinally (traverse (body), traverse (handler))
@@ -973,17 +970,17 @@
 
           | <[ typeof ($_) ]> => expr
 
-          | <[ $expr :> $ty ]> => <[ $(if (expr == null) null else traverse (expr)) :> $ty ]>
+            | <[ $expr :> $ty ]> => <[ $(traverse (expr)) :> $ty ]>
 
-          | <[ $expr : $ty ]> => <[ $(if (expr == null) null else traverse (expr)) : $ty ]>
+            | <[ $expr : $ty ]> => <[ $(traverse (expr)) : $ty ]>
 
           | <[ {.. $seq } ]> => <[ { ..$(List.Map (seq, traverse)) } ]>
 
           | <[ (.. $args) ]> => <[ ( ..$(List.Map (args, traverse)) ) ]>
 
-          | <[ ref $e ]> => <[ ref $(if (e == null) null else traverse (e)) ]>
+            | <[ ref $e ]> => <[ ref $(traverse (e)) ]>
 
-          | <[ out $e ]> => <[ out $(if (e == null) null else traverse (e)) ]>
+            | <[ out $e ]> => <[ out $(traverse (e)) ]>
 
           | <[ array (..$args) ]> => <[ array ( ..$(List.Map (args, traverse)) ) ]>
 



More information about the svn mailing list