[svn] r7375: nemerle/trunk/ncc: parsing/MainParser.n
testsuite/positive/function-from-tuple.n
nazgul
svnadmin at nemerle.org
Sun Feb 4 11:39:34 CET 2007
Log:
Allow ommiting parenthesis in lambda expressions
Author: nazgul
Date: Sun Feb 4 11:39:32 2007
New Revision: 7375
Modified:
nemerle/trunk/ncc/parsing/MainParser.n
nemerle/trunk/ncc/testsuite/positive/function-from-tuple.n
Modified: nemerle/trunk/ncc/parsing/MainParser.n
==============================================================================
--- nemerle/trunk/ncc/parsing/MainParser.n (original)
+++ nemerle/trunk/ncc/parsing/MainParser.n Sun Feb 4 11:39:32 2007
@@ -1430,7 +1430,7 @@
{
when (name == null) name = get_splicable_id ();
def tyvars = parse_tyvars ();
- def parms = parse_parameters (allow_patterns);
+ def parms = parse_parameters (allow_patterns = allow_patterns);
def ret_type = parse_return_type (true);
def typarms = parse_where_constraints (tyvars);
@@ -1492,7 +1492,7 @@
}
/// parameters of (a:foo,b,c) or [a,b:foo,c] kind
- parse_parameters (allow_patterns = false) : list [Fun_parm] {
+ parse_parameters (allow_patterns = false, allow_omit = false) : list [Fun_parm] {
def group = get_token ();
match (group) {
| Token.RoundGroup (null) | Token.SquareGroup (null) => []
@@ -1507,7 +1507,12 @@
| _ => pop_stream (); TokenMap (group, fun () { parse_parameter (allow_patterns) });
}
- | _ => Error (group, "expecting function parameters"); []
+ | _ =>
+ if (allow_omit)
+ push_back ()
+ else
+ Error (group, "expecting function parameters");
+ []
}
}
@@ -1525,9 +1530,10 @@
| TokenStoppers.Equal | TokenStoppers.Where)
}
- | _ when allow_inference => PExpr.Wildcard (last_tok.Location)
- | t => Error (t, "expecting `:' and type specifier for class member");
- PExpr.Wildcard (last_tok.Location)
+ | t =>
+ unless (allow_inference)
+ Error (t, "expecting `:' and type specifier for class member");
+ PExpr.Wildcard (if (last_tok != null) last_tok.Location else t.Location)
};
}
@@ -2058,7 +2064,7 @@
| Token.Keyword ("fun") =>
def tyvars = parse_tyvars ();
- def parms = parse_parameters (allow_patterns = true);
+ def parms = parse_parameters (allow_patterns = true, allow_omit = true);
def ret_type = parse_return_type (true);
def typarms = parse_where_constraints (tyvars);
Modified: nemerle/trunk/ncc/testsuite/positive/function-from-tuple.n
==============================================================================
--- nemerle/trunk/ncc/testsuite/positive/function-from-tuple.n (original)
+++ nemerle/trunk/ncc/testsuite/positive/function-from-tuple.n Sun Feb 4 11:39:32 2007
@@ -60,6 +60,13 @@
C2().getT()(4,2);
D2().getT()(4,2);
+mutable water = 1;
+def fire = fun { System.Console.WriteLine (water) };
+water = 2;
+fire ();
+water = 4;
+fire ();
+
/*
BEGIN-OUTPUT
@@ -67,5 +74,7 @@
4093
(4, 2)
(4, 2)
+2
+4
END-OUTPUT
*/
More information about the svn
mailing list