aboutsummaryrefslogtreecommitdiff
path: root/src/grammar/expressions/mod.rs
diff options
context:
space:
mode:
authorAleksey Kladov <[email protected]>2018-08-05 12:16:38 +0100
committerAleksey Kladov <[email protected]>2018-08-05 12:16:38 +0100
commit5691da4c84655e0d966ac11406fa7a90bdd02643 (patch)
tree566597ece1387006e3c8e55d82c5f93ed55ee112 /src/grammar/expressions/mod.rs
parentc871022f9810547f3eeaa5af3a3dc4bc0c85a386 (diff)
Expr macros
Diffstat (limited to 'src/grammar/expressions/mod.rs')
-rw-r--r--src/grammar/expressions/mod.rs16
1 files changed, 11 insertions, 5 deletions
diff --git a/src/grammar/expressions/mod.rs b/src/grammar/expressions/mod.rs
index 6831aef66..15669f99d 100644
--- a/src/grammar/expressions/mod.rs
+++ b/src/grammar/expressions/mod.rs
@@ -202,16 +202,22 @@ fn arg_list(p: &mut Parser) {
202// let _ = a; 202// let _ = a;
203// let _ = a::b; 203// let _ = a::b;
204// let _ = ::a::<b>; 204// let _ = ::a::<b>;
205// let _ = format!();
205// } 206// }
206fn path_expr(p: &mut Parser, r: Restrictions) -> CompletedMarker { 207fn path_expr(p: &mut Parser, r: Restrictions) -> CompletedMarker {
207 assert!(paths::is_path_start(p)); 208 assert!(paths::is_path_start(p));
208 let m = p.start(); 209 let m = p.start();
209 paths::expr_path(p); 210 paths::expr_path(p);
210 if p.at(L_CURLY) && !r.forbid_structs { 211 match p.current() {
211 struct_lit(p); 212 L_CURLY if !r.forbid_structs => {
212 m.complete(p, STRUCT_LIT) 213 struct_lit(p);
213 } else { 214 m.complete(p, STRUCT_LIT)
214 m.complete(p, PATH_EXPR) 215 }
216 EXCL => {
217 items::macro_call_after_excl(p);
218 m.complete(p, MACRO_CALL)
219 }
220 _ => m.complete(p, PATH_EXPR)
215 } 221 }
216} 222}
217 223