diff --git a/src/comp/front/lexer.rs b/src/comp/front/lexer.rs index 7f013f7c6148..89b7d76e08b5 100644 --- a/src/comp/front/lexer.rs +++ b/src/comp/front/lexer.rs @@ -389,8 +389,14 @@ fn next_token(&reader rdr) -> token::token { alt (rdr.curr()) { case ('=') { rdr.bump(); ret token::LE; } case ('<') { ret binop(rdr, token::LSL); } - case ('-') { rdr.bump(); ret token::LARROW; } case ('|') { rdr.bump(); ret token::SEND; } + case ('-') { + rdr.bump(); + alt (rdr.curr()) { + case ('>') { rdr.bump(); ret token::DARROW; } + case (_) { ret token::LARROW; } + } + } case (_) { ret token::LT; } } } diff --git a/src/comp/front/token.rs b/src/comp/front/token.rs index 30329e1ffd32..57a75b1e40d8 100644 --- a/src/comp/front/token.rs +++ b/src/comp/front/token.rs @@ -52,6 +52,7 @@ tag token { SEND; RECV; LARROW; + DARROW; LPAREN; RPAREN; LBRACKET; @@ -124,6 +125,7 @@ fn to_str(lexer::reader r, token t) -> str { case (SEND) { ret "<|"; } case (RECV) { ret "<|"; } case (LARROW) { ret "<-"; } + case (DARROW) { ret "<->"; } case (LPAREN) { ret "("; } case (RPAREN) { ret ")"; } case (LBRACKET) { ret "["; }