From 3155d170ad782c505397f8b1da55b1d271db305f Mon Sep 17 00:00:00 2001 From: Brian Anderson Date: Sat, 30 Jun 2012 21:20:36 -0700 Subject: [PATCH] syntax: Fix lambda parsing following 'ret' --- src/libsyntax/parse/token.rs | 2 ++ src/test/run-pass/newlambdas.rs | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/src/libsyntax/parse/token.rs b/src/libsyntax/parse/token.rs index 706ebb8e4ca..9ab2fc5014c 100644 --- a/src/libsyntax/parse/token.rs +++ b/src/libsyntax/parse/token.rs @@ -198,6 +198,8 @@ pure fn can_begin_expr(t: token) -> bool { BINOP(MINUS) { true } BINOP(STAR) { true } BINOP(AND) { true } + BINOP(OR) { true } // in lambda syntax + OROR { true } // in lambda syntax MOD_SEP { true } _ { false } } diff --git a/src/test/run-pass/newlambdas.rs b/src/test/run-pass/newlambdas.rs index c3cc6792cdc..f6c7d382585 100644 --- a/src/test/run-pass/newlambdas.rs +++ b/src/test/run-pass/newlambdas.rs @@ -4,6 +4,10 @@ fn f(i: int, f: fn(int) -> int) -> int { f(i) } fn g(g: fn()) { } +fn ff() -> fn@(int) -> int { + ret |x| x + 1; +} + fn main() { assert f(10, |a| a) == 10; g(||()); @@ -11,4 +15,5 @@ fn main() { do g() || { } let _x: fn@() -> int = || 10; let _y: fn@(int) -> int = |a| a; + assert ff()(10) == 11; }