diff options
Diffstat (limited to 'crates/ra_parser/src/grammar/params.rs')
-rw-r--r-- | crates/ra_parser/src/grammar/params.rs | 38 |
1 files changed, 19 insertions, 19 deletions
diff --git a/crates/ra_parser/src/grammar/params.rs b/crates/ra_parser/src/grammar/params.rs index 3d3bd4cc1..723b56343 100644 --- a/crates/ra_parser/src/grammar/params.rs +++ b/crates/ra_parser/src/grammar/params.rs | |||
@@ -36,27 +36,27 @@ impl Flavor { | |||
36 | } | 36 | } |
37 | 37 | ||
38 | fn list_(p: &mut Parser, flavor: Flavor) { | 38 | fn list_(p: &mut Parser, flavor: Flavor) { |
39 | let (bra, ket) = if flavor.type_required() { (L_PAREN, R_PAREN) } else { (PIPE, PIPE) }; | 39 | let (bra, ket) = if flavor.type_required() { (T!['('], T![')']) } else { (T![|], T![|]) }; |
40 | assert!(p.at(bra)); | 40 | assert!(p.at(bra)); |
41 | let m = p.start(); | 41 | let m = p.start(); |
42 | p.bump(); | 42 | p.bump(); |
43 | if flavor.type_required() { | 43 | if flavor.type_required() { |
44 | opt_self_param(p); | 44 | opt_self_param(p); |
45 | } | 45 | } |
46 | while !p.at(EOF) && !p.at(ket) && !(flavor.type_required() && p.at(DOTDOTDOT)) { | 46 | while !p.at(EOF) && !p.at(ket) && !(flavor.type_required() && p.at(T![...])) { |
47 | if !p.at_ts(VALUE_PARAMETER_FIRST) { | 47 | if !p.at_ts(VALUE_PARAMETER_FIRST) { |
48 | p.error("expected value parameter"); | 48 | p.error("expected value parameter"); |
49 | break; | 49 | break; |
50 | } | 50 | } |
51 | value_parameter(p, flavor); | 51 | value_parameter(p, flavor); |
52 | if !p.at(ket) { | 52 | if !p.at(ket) { |
53 | p.expect(COMMA); | 53 | p.expect(T![,]); |
54 | } | 54 | } |
55 | } | 55 | } |
56 | // test param_list_vararg | 56 | // test param_list_vararg |
57 | // extern "C" { fn printf(format: *const i8, ...) -> i32; } | 57 | // extern "C" { fn printf(format: *const i8, ...) -> i32; } |
58 | if flavor.type_required() { | 58 | if flavor.type_required() { |
59 | p.eat(DOTDOTDOT); | 59 | p.eat(T![...]); |
60 | } | 60 | } |
61 | p.expect(ket); | 61 | p.expect(ket); |
62 | m.complete(p, PARAM_LIST); | 62 | m.complete(p, PARAM_LIST); |
@@ -69,7 +69,7 @@ fn value_parameter(p: &mut Parser, flavor: Flavor) { | |||
69 | match flavor { | 69 | match flavor { |
70 | Flavor::OptionalType | Flavor::Normal => { | 70 | Flavor::OptionalType | Flavor::Normal => { |
71 | patterns::pattern(p); | 71 | patterns::pattern(p); |
72 | if p.at(COLON) || flavor.type_required() { | 72 | if p.at(T![:]) || flavor.type_required() { |
73 | types::ascription(p) | 73 | types::ascription(p) |
74 | } | 74 | } |
75 | } | 75 | } |
@@ -85,10 +85,10 @@ fn value_parameter(p: &mut Parser, flavor: Flavor) { | |||
85 | // trait Foo { | 85 | // trait Foo { |
86 | // fn bar(_: u64, mut x: i32); | 86 | // fn bar(_: u64, mut x: i32); |
87 | // } | 87 | // } |
88 | if (la0 == IDENT || la0 == UNDERSCORE) && la1 == COLON | 88 | if (la0 == IDENT || la0 == T![_]) && la1 == T![:] |
89 | || la0 == MUT_KW && la1 == IDENT && la2 == COLON | 89 | || la0 == T![mut] && la1 == IDENT && la2 == T![:] |
90 | || la0 == AMP && la1 == IDENT && la2 == COLON | 90 | || la0 == T![&] && la1 == IDENT && la2 == T![:] |
91 | || la0 == AMP && la1 == MUT_KW && la2 == IDENT && la3 == COLON | 91 | || la0 == T![&] && la1 == T![mut] && la2 == IDENT && la3 == T![:] |
92 | { | 92 | { |
93 | patterns::pattern(p); | 93 | patterns::pattern(p); |
94 | types::ascription(p); | 94 | types::ascription(p); |
@@ -110,16 +110,16 @@ fn value_parameter(p: &mut Parser, flavor: Flavor) { | |||
110 | // } | 110 | // } |
111 | fn opt_self_param(p: &mut Parser) { | 111 | fn opt_self_param(p: &mut Parser) { |
112 | let m; | 112 | let m; |
113 | if p.at(SELF_KW) || p.at(MUT_KW) && p.nth(1) == SELF_KW { | 113 | if p.at(T![self]) || p.at(T![mut]) && p.nth(1) == T![self] { |
114 | m = p.start(); | 114 | m = p.start(); |
115 | p.eat(MUT_KW); | 115 | p.eat(T![mut]); |
116 | p.eat(SELF_KW); | 116 | p.eat(T![self]); |
117 | // test arb_self_types | 117 | // test arb_self_types |
118 | // impl S { | 118 | // impl S { |
119 | // fn a(self: &Self) {} | 119 | // fn a(self: &Self) {} |
120 | // fn b(mut self: Box<Self>) {} | 120 | // fn b(mut self: Box<Self>) {} |
121 | // } | 121 | // } |
122 | if p.at(COLON) { | 122 | if p.at(T![:]) { |
123 | types::ascription(p); | 123 | types::ascription(p); |
124 | } | 124 | } |
125 | } else { | 125 | } else { |
@@ -127,10 +127,10 @@ fn opt_self_param(p: &mut Parser) { | |||
127 | let la2 = p.nth(2); | 127 | let la2 = p.nth(2); |
128 | let la3 = p.nth(3); | 128 | let la3 = p.nth(3); |
129 | let n_toks = match (p.current(), la1, la2, la3) { | 129 | let n_toks = match (p.current(), la1, la2, la3) { |
130 | (AMP, SELF_KW, _, _) => 2, | 130 | (T![&], T![self], _, _) => 2, |
131 | (AMP, MUT_KW, SELF_KW, _) => 3, | 131 | (T![&], T![mut], T![self], _) => 3, |
132 | (AMP, LIFETIME, SELF_KW, _) => 3, | 132 | (T![&], LIFETIME, T![self], _) => 3, |
133 | (AMP, LIFETIME, MUT_KW, SELF_KW) => 4, | 133 | (T![&], LIFETIME, T![mut], T![self]) => 4, |
134 | _ => return, | 134 | _ => return, |
135 | }; | 135 | }; |
136 | m = p.start(); | 136 | m = p.start(); |
@@ -139,7 +139,7 @@ fn opt_self_param(p: &mut Parser) { | |||
139 | } | 139 | } |
140 | } | 140 | } |
141 | m.complete(p, SELF_PARAM); | 141 | m.complete(p, SELF_PARAM); |
142 | if !p.at(R_PAREN) { | 142 | if !p.at(T![')']) { |
143 | p.expect(COMMA); | 143 | p.expect(T![,]); |
144 | } | 144 | } |
145 | } | 145 | } |