From 3bca5f23aa8ac7a9e27ec582e05c2420313515d7 Mon Sep 17 00:00:00 2001
From: Brian Leibig <brian@brianleibig.com>
Date: Tue, 10 Feb 2015 17:54:38 -0800
Subject: [PATCH] Bison grammar: fix precedence with ranges followed by blocks

---
 src/grammar/parser-lalr.y | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/grammar/parser-lalr.y b/src/grammar/parser-lalr.y
index 2788476ebfe..6a6f7e0e9f9 100644
--- a/src/grammar/parser-lalr.y
+++ b/src/grammar/parser-lalr.y
@@ -177,6 +177,8 @@ extern char *yytext;
 
 %precedence '{' '[' '(' '.'
 
+%precedence RANGE
+
 %start crate
 
 %%
@@ -1475,7 +1477,7 @@ expr_nostruct
 | expr_nostruct '*' expr_nostruct                     { $$ = mk_node("ExprBinary", 3, mk_atom("BiMul"), $1, $3); }
 | expr_nostruct '/' expr_nostruct                     { $$ = mk_node("ExprBinary", 3, mk_atom("BiDiv"), $1, $3); }
 | expr_nostruct '%' expr_nostruct                     { $$ = mk_node("ExprBinary", 3, mk_atom("BiRem"), $1, $3); }
-| expr_nostruct DOTDOT                                { $$ = mk_node("ExprRange", 2, $1, mk_none()); }
+| expr_nostruct DOTDOT               %prec RANGE      { $$ = mk_node("ExprRange", 2, $1, mk_none()); }
 | expr_nostruct DOTDOT expr_nostruct                  { $$ = mk_node("ExprRange", 2, $1, $3); }
 |               DOTDOT expr_nostruct                  { $$ = mk_node("ExprRange", 2, mk_none(), $2); }
 |               DOTDOT                                { $$ = mk_node("ExprRange", 2, mk_none(), mk_none()); }