diff options
Diffstat (limited to 'crates/ra_parser/src/grammar/items/traits.rs')
-rw-r--r-- | crates/ra_parser/src/grammar/items/traits.rs | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/crates/ra_parser/src/grammar/items/traits.rs b/crates/ra_parser/src/grammar/items/traits.rs index 964fd3041..03dae3cdb 100644 --- a/crates/ra_parser/src/grammar/items/traits.rs +++ b/crates/ra_parser/src/grammar/items/traits.rs | |||
@@ -10,6 +10,16 @@ pub(super) fn trait_def(p: &mut Parser) { | |||
10 | p.bump(T![trait]); | 10 | p.bump(T![trait]); |
11 | name_r(p, ITEM_RECOVERY_SET); | 11 | name_r(p, ITEM_RECOVERY_SET); |
12 | type_params::opt_type_param_list(p); | 12 | type_params::opt_type_param_list(p); |
13 | // test trait_alias | ||
14 | // trait Z<U> = T<U>; | ||
15 | // trait Z<U> = T<U> where U: Copy; | ||
16 | // trait Z<U> = where Self: T<U>; | ||
17 | if p.eat(T![=]) { | ||
18 | type_params::bounds_without_colon(p); | ||
19 | type_params::opt_where_clause(p); | ||
20 | p.expect(T![;]); | ||
21 | return; | ||
22 | } | ||
13 | if p.at(T![:]) { | 23 | if p.at(T![:]) { |
14 | type_params::bounds(p); | 24 | type_params::bounds(p); |
15 | } | 25 | } |