Skip to content

Commit 21797bf

Browse files
bors[bot]matklad
andcommitted
Merge #208
208: grammar: fix where clause parsing r=matklad a=matklad closes #205 Co-authored-by: Aleksey Kladov <[email protected]>
2 parents dafe747 + ec131b6 commit 21797bf

File tree

3 files changed

+35
-1
lines changed

3 files changed

+35
-1
lines changed

crates/ra_syntax/src/grammar/type_params.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,11 @@ fn where_predicate(p: &mut Parser) {
135135
if p.at(FOR_KW) {
136136
types::for_binder(p);
137137
}
138-
types::path_type(p);
138+
if paths::is_path_start(p) || p.at(L_ANGLE) {
139+
types::path_type_(p, false);
140+
} else {
141+
p.error("expected a type");
142+
}
139143
if p.at(COLON) {
140144
bounds(p);
141145
} else {
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
fn foo()
2+
where for<'a>
3+
{}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
ROOT@[0; 30)
2+
FN_DEF@[0; 29)
3+
FN_KW@[0; 2)
4+
WHITESPACE@[2; 3)
5+
NAME@[3; 6)
6+
IDENT@[3; 6) "foo"
7+
PARAM_LIST@[6; 8)
8+
L_PAREN@[6; 7)
9+
R_PAREN@[7; 8)
10+
WHITESPACE@[8; 13)
11+
WHERE_CLAUSE@[13; 26)
12+
WHERE_KW@[13; 18)
13+
WHITESPACE@[18; 19)
14+
WHERE_PRED@[19; 26)
15+
FOR_KW@[19; 22)
16+
TYPE_PARAM_LIST@[22; 26)
17+
L_ANGLE@[22; 23)
18+
LIFETIME_PARAM@[23; 25)
19+
LIFETIME@[23; 25) "'a"
20+
R_ANGLE@[25; 26)
21+
err: `expected a type`
22+
err: `expected colon`
23+
WHITESPACE@[26; 27)
24+
BLOCK@[27; 29)
25+
L_CURLY@[27; 28)
26+
R_CURLY@[28; 29)
27+
WHITESPACE@[29; 30)

0 commit comments

Comments
 (0)