[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