diff options
Diffstat (limited to 'crates/ra_parser/src/grammar/expressions/atom.rs')
-rw-r--r-- | crates/ra_parser/src/grammar/expressions/atom.rs | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/crates/ra_parser/src/grammar/expressions/atom.rs b/crates/ra_parser/src/grammar/expressions/atom.rs index d98953a7e..bc942ae01 100644 --- a/crates/ra_parser/src/grammar/expressions/atom.rs +++ b/crates/ra_parser/src/grammar/expressions/atom.rs | |||
@@ -62,7 +62,7 @@ pub(super) fn atom_expr(p: &mut Parser, r: Restrictions) -> Option<(CompletedMar | |||
62 | if let Some(m) = literal(p) { | 62 | if let Some(m) = literal(p) { |
63 | return Some((m, BlockLike::NotBlock)); | 63 | return Some((m, BlockLike::NotBlock)); |
64 | } | 64 | } |
65 | if paths::is_path_start(p) || p.at(T![<]) { | 65 | if paths::is_path_start(p) { |
66 | return Some(path_expr(p, r)); | 66 | return Some(path_expr(p, r)); |
67 | } | 67 | } |
68 | let la = p.nth(1); | 68 | let la = p.nth(1); |
@@ -110,7 +110,19 @@ pub(super) fn atom_expr(p: &mut Parser, r: Restrictions) -> Option<(CompletedMar | |||
110 | p.bump(); | 110 | p.bump(); |
111 | block_expr(p, Some(m)) | 111 | block_expr(p, Some(m)) |
112 | } | 112 | } |
113 | T!['{'] => block_expr(p, None), | 113 | T!['{'] => { |
114 | // test for_range_from | ||
115 | // fn foo() { | ||
116 | // for x in 0 .. { | ||
117 | // break; | ||
118 | // } | ||
119 | // } | ||
120 | if r.forbid_structs { | ||
121 | return None; | ||
122 | } else { | ||
123 | block_expr(p, None) | ||
124 | } | ||
125 | } | ||
114 | T![return] => return_expr(p), | 126 | T![return] => return_expr(p), |
115 | T![continue] => continue_expr(p), | 127 | T![continue] => continue_expr(p), |
116 | T![break] => break_expr(p, r), | 128 | T![break] => break_expr(p, r), |