aboutsummaryrefslogtreecommitdiff
path: root/src/grammar/expressions/atom.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/grammar/expressions/atom.rs')
-rw-r--r--src/grammar/expressions/atom.rs12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/grammar/expressions/atom.rs b/src/grammar/expressions/atom.rs
index 95c811730..ad654df9e 100644
--- a/src/grammar/expressions/atom.rs
+++ b/src/grammar/expressions/atom.rs
@@ -33,13 +33,13 @@ pub(super) const ATOM_EXPR_FIRST: TokenSet =
33 IDENT, SELF_KW, SUPER_KW, COLONCOLON ], 33 IDENT, SELF_KW, SUPER_KW, COLONCOLON ],
34 ]; 34 ];
35 35
36pub(super) fn atom_expr(p: &mut Parser) -> Option<CompletedMarker> { 36pub(super) fn atom_expr(p: &mut Parser, r: Restrictions) -> Option<CompletedMarker> {
37 match literal(p) { 37 match literal(p) {
38 Some(m) => return Some(m), 38 Some(m) => return Some(m),
39 None => (), 39 None => (),
40 } 40 }
41 if paths::is_path_start(p) { 41 if paths::is_path_start(p) {
42 return Some(path_expr(p)); 42 return Some(path_expr(p, r));
43 } 43 }
44 let la = p.nth(1); 44 let la = p.nth(1);
45 let done = match p.current() { 45 let done = match p.current() {
@@ -91,7 +91,8 @@ fn lambda_expr(p: &mut Parser) -> CompletedMarker {
91// fn foo() { 91// fn foo() {
92// if true {}; 92// if true {};
93// if true {} else {}; 93// if true {} else {};
94// if true {} else if false {} else {} 94// if true {} else if false {} else {};
95// if S {};
95// } 96// }
96fn if_expr(p: &mut Parser) -> CompletedMarker { 97fn if_expr(p: &mut Parser) -> CompletedMarker {
97 assert!(p.at(IF_KW)); 98 assert!(p.at(IF_KW));
@@ -112,18 +113,19 @@ fn if_expr(p: &mut Parser) -> CompletedMarker {
112fn if_head(p: &mut Parser) { 113fn if_head(p: &mut Parser) {
113 assert!(p.at(IF_KW)); 114 assert!(p.at(IF_KW));
114 p.bump(); 115 p.bump();
115 expr(p); 116 expr_no_struct(p);
116} 117}
117 118
118// test match_expr 119// test match_expr
119// fn foo() { 120// fn foo() {
120// match () { }; 121// match () { };
122// match S {};
121// } 123// }
122fn match_expr(p: &mut Parser) -> CompletedMarker { 124fn match_expr(p: &mut Parser) -> CompletedMarker {
123 assert!(p.at(MATCH_KW)); 125 assert!(p.at(MATCH_KW));
124 let m = p.start(); 126 let m = p.start();
125 p.bump(); 127 p.bump();
126 expr(p); 128 expr_no_struct(p);
127 p.eat(L_CURLY); 129 p.eat(L_CURLY);
128 while !p.at(EOF) && !p.at(R_CURLY) { 130 while !p.at(EOF) && !p.at(R_CURLY) {
129 match_arm(p); 131 match_arm(p);