aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/parser/grammar/items/structs.rs4
-rw-r--r--tests/data/parser/err/0000_struct_field_missing_comma.txt7
-rw-r--r--tests/data/parser/err/0001_item_recovery_in_file.txt7
-rw-r--r--tests/data/parser/err/0003_C++_semicolon.txt7
-rw-r--r--tests/data/parser/err/0006_named_field_recovery.txt7
-rw-r--r--tests/data/parser/err/0007_stray_curly_in_file.txt5
-rw-r--r--tests/data/parser/err/0009_broken_struct_type_parameter.txt10
-rw-r--r--tests/data/parser/inline/0006_extern_struct.txt5
-rw-r--r--tests/data/parser/ok/0001_struct_item.txt7
-rw-r--r--tests/data/parser/ok/0002_struct_item_field.txt7
-rw-r--r--tests/data/parser/ok/0008_mod_item.txt7
-rw-r--r--tests/data/parser/ok/0016_struct_flavors.txt29
-rw-r--r--tests/data/parser/ok/0018_struct_type_params.txt75
-rw-r--r--tests/data/parser/ok/0020_type_param_bounds.txt45
14 files changed, 130 insertions, 92 deletions
diff --git a/src/parser/grammar/items/structs.rs b/src/parser/grammar/items/structs.rs
index 640b940e4..3b1f8a38c 100644
--- a/src/parser/grammar/items/structs.rs
+++ b/src/parser/grammar/items/structs.rs
@@ -4,9 +4,7 @@ pub(super) fn struct_item(p: &mut Parser) {
4 assert!(p.at(STRUCT_KW)); 4 assert!(p.at(STRUCT_KW));
5 p.bump(); 5 p.bump();
6 6
7 if !p.expect(IDENT) { 7 name(p);
8 return;
9 }
10 type_params::list(p); 8 type_params::list(p);
11 match p.current() { 9 match p.current() {
12 WHERE_KW => { 10 WHERE_KW => {
diff --git a/tests/data/parser/err/0000_struct_field_missing_comma.txt b/tests/data/parser/err/0000_struct_field_missing_comma.txt
index d94b4fd9e..2c761694c 100644
--- a/tests/data/parser/err/0000_struct_field_missing_comma.txt
+++ b/tests/data/parser/err/0000_struct_field_missing_comma.txt
@@ -1,9 +1,10 @@
1FILE@[0; 34) 1FILE@[0; 34)
2 STRUCT_ITEM@[0; 34) 2 STRUCT_ITEM@[0; 34)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 NAME@[6; 9)
5 IDENT@[7; 8) "S" 5 WHITESPACE@[6; 7)
6 WHITESPACE@[8; 9) 6 IDENT@[7; 8) "S"
7 WHITESPACE@[8; 9)
7 L_CURLY@[9; 10) 8 L_CURLY@[9; 10)
8 NAMED_FIELD@[10; 26) 9 NAMED_FIELD@[10; 26)
9 WHITESPACE@[10; 15) 10 WHITESPACE@[10; 15)
diff --git a/tests/data/parser/err/0001_item_recovery_in_file.txt b/tests/data/parser/err/0001_item_recovery_in_file.txt
index c33113c6d..e41ddc009 100644
--- a/tests/data/parser/err/0001_item_recovery_in_file.txt
+++ b/tests/data/parser/err/0001_item_recovery_in_file.txt
@@ -9,8 +9,9 @@ FILE@[0; 21)
9 WHITESPACE@[8; 10) 9 WHITESPACE@[8; 10)
10 STRUCT_ITEM@[10; 21) 10 STRUCT_ITEM@[10; 21)
11 STRUCT_KW@[10; 16) 11 STRUCT_KW@[10; 16)
12 WHITESPACE@[16; 17) 12 NAME@[16; 19)
13 IDENT@[17; 18) "S" 13 WHITESPACE@[16; 17)
14 WHITESPACE@[18; 19) 14 IDENT@[17; 18) "S"
15 WHITESPACE@[18; 19)
15 L_CURLY@[19; 20) 16 L_CURLY@[19; 20)
16 R_CURLY@[20; 21) 17 R_CURLY@[20; 21)
diff --git a/tests/data/parser/err/0003_C++_semicolon.txt b/tests/data/parser/err/0003_C++_semicolon.txt
index d77c06378..e567b0775 100644
--- a/tests/data/parser/err/0003_C++_semicolon.txt
+++ b/tests/data/parser/err/0003_C++_semicolon.txt
@@ -1,9 +1,10 @@
1FILE@[0; 40) 1FILE@[0; 40)
2 STRUCT_ITEM@[0; 39) 2 STRUCT_ITEM@[0; 39)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 NAME@[6; 9)
5 IDENT@[7; 8) "S" 5 WHITESPACE@[6; 7)
6 WHITESPACE@[8; 9) 6 IDENT@[7; 8) "S"
7 WHITESPACE@[8; 9)
7 L_CURLY@[9; 10) 8 L_CURLY@[9; 10)
8 NAMED_FIELD@[10; 21) 9 NAMED_FIELD@[10; 21)
9 WHITESPACE@[10; 15) 10 WHITESPACE@[10; 15)
diff --git a/tests/data/parser/err/0006_named_field_recovery.txt b/tests/data/parser/err/0006_named_field_recovery.txt
index 0437bf2e7..7886beeb8 100644
--- a/tests/data/parser/err/0006_named_field_recovery.txt
+++ b/tests/data/parser/err/0006_named_field_recovery.txt
@@ -1,9 +1,10 @@
1FILE@[0; 74) 1FILE@[0; 74)
2 STRUCT_ITEM@[0; 74) 2 STRUCT_ITEM@[0; 74)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 NAME@[6; 9)
5 IDENT@[7; 8) "S" 5 WHITESPACE@[6; 7)
6 WHITESPACE@[8; 9) 6 IDENT@[7; 8) "S"
7 WHITESPACE@[8; 9)
7 L_CURLY@[9; 10) 8 L_CURLY@[9; 10)
8 NAMED_FIELD@[10; 21) 9 NAMED_FIELD@[10; 21)
9 WHITESPACE@[10; 15) 10 WHITESPACE@[10; 15)
diff --git a/tests/data/parser/err/0007_stray_curly_in_file.txt b/tests/data/parser/err/0007_stray_curly_in_file.txt
index 6460d06d8..f20807bfe 100644
--- a/tests/data/parser/err/0007_stray_curly_in_file.txt
+++ b/tests/data/parser/err/0007_stray_curly_in_file.txt
@@ -5,8 +5,9 @@ FILE@[0; 31)
5 WHITESPACE@[1; 3) 5 WHITESPACE@[1; 3)
6 STRUCT_ITEM@[3; 14) 6 STRUCT_ITEM@[3; 14)
7 STRUCT_KW@[3; 9) 7 STRUCT_KW@[3; 9)
8 WHITESPACE@[9; 10) 8 NAME@[9; 11)
9 IDENT@[10; 11) "S" 9 WHITESPACE@[9; 10)
10 IDENT@[10; 11) "S"
10 SEMI@[11; 12) 11 SEMI@[11; 12)
11 WHITESPACE@[12; 14) 12 WHITESPACE@[12; 14)
12 ERROR@[14; 17) 13 ERROR@[14; 17)
diff --git a/tests/data/parser/err/0009_broken_struct_type_parameter.txt b/tests/data/parser/err/0009_broken_struct_type_parameter.txt
index f329735b6..9434a764a 100644
--- a/tests/data/parser/err/0009_broken_struct_type_parameter.txt
+++ b/tests/data/parser/err/0009_broken_struct_type_parameter.txt
@@ -1,8 +1,9 @@
1FILE@[0; 43) 1FILE@[0; 43)
2 STRUCT_ITEM@[0; 12) 2 STRUCT_ITEM@[0; 12)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 NAME@[6; 8)
5 IDENT@[7; 8) "S" 5 WHITESPACE@[6; 7)
6 IDENT@[7; 8) "S"
6 TYPE_PARAM_LIST@[8; 12) 7 TYPE_PARAM_LIST@[8; 12)
7 L_ANGLE@[8; 9) 8 L_ANGLE@[8; 9)
8 ERROR@[9; 12) 9 ERROR@[9; 12)
@@ -36,7 +37,8 @@ FILE@[0; 43)
36 WHITESPACE@[31; 33) 37 WHITESPACE@[31; 33)
37 STRUCT_ITEM@[33; 43) 38 STRUCT_ITEM@[33; 43)
38 STRUCT_KW@[33; 39) 39 STRUCT_KW@[33; 39)
39 WHITESPACE@[39; 40) 40 NAME@[39; 41)
40 IDENT@[40; 41) "T" 41 WHITESPACE@[39; 40)
42 IDENT@[40; 41) "T"
41 SEMI@[41; 42) 43 SEMI@[41; 42)
42 WHITESPACE@[42; 43) 44 WHITESPACE@[42; 43)
diff --git a/tests/data/parser/inline/0006_extern_struct.txt b/tests/data/parser/inline/0006_extern_struct.txt
index 13917d7f3..93a5b0477 100644
--- a/tests/data/parser/inline/0006_extern_struct.txt
+++ b/tests/data/parser/inline/0006_extern_struct.txt
@@ -5,7 +5,8 @@ FILE@[0; 19)
5 err: `expected `fn` or `{`` 5 err: `expected `fn` or `{``
6 STRUCT_ITEM@[7; 19) 6 STRUCT_ITEM@[7; 19)
7 STRUCT_KW@[7; 13) 7 STRUCT_KW@[7; 13)
8 WHITESPACE@[13; 14) 8 NAME@[13; 17)
9 IDENT@[14; 17) "Foo" 9 WHITESPACE@[13; 14)
10 IDENT@[14; 17) "Foo"
10 SEMI@[17; 18) 11 SEMI@[17; 18)
11 WHITESPACE@[18; 19) 12 WHITESPACE@[18; 19)
diff --git a/tests/data/parser/ok/0001_struct_item.txt b/tests/data/parser/ok/0001_struct_item.txt
index c280a434f..b0195c316 100644
--- a/tests/data/parser/ok/0001_struct_item.txt
+++ b/tests/data/parser/ok/0001_struct_item.txt
@@ -1,9 +1,10 @@
1FILE@[0; 13) 1FILE@[0; 13)
2 STRUCT_ITEM@[0; 13) 2 STRUCT_ITEM@[0; 13)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 NAME@[6; 9)
5 IDENT@[7; 8) "S" 5 WHITESPACE@[6; 7)
6 WHITESPACE@[8; 9) 6 IDENT@[7; 8) "S"
7 WHITESPACE@[8; 9)
7 L_CURLY@[9; 10) 8 L_CURLY@[9; 10)
8 WHITESPACE@[10; 12) 9 WHITESPACE@[10; 12)
9 R_CURLY@[12; 13) 10 R_CURLY@[12; 13)
diff --git a/tests/data/parser/ok/0002_struct_item_field.txt b/tests/data/parser/ok/0002_struct_item_field.txt
index 5a7bfbaec..285e6a8ef 100644
--- a/tests/data/parser/ok/0002_struct_item_field.txt
+++ b/tests/data/parser/ok/0002_struct_item_field.txt
@@ -1,9 +1,10 @@
1FILE@[0; 25) 1FILE@[0; 25)
2 STRUCT_ITEM@[0; 25) 2 STRUCT_ITEM@[0; 25)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 NAME@[6; 9)
5 IDENT@[7; 8) "S" 5 WHITESPACE@[6; 7)
6 WHITESPACE@[8; 9) 6 IDENT@[7; 8) "S"
7 WHITESPACE@[8; 9)
7 L_CURLY@[9; 10) 8 L_CURLY@[9; 10)
8 NAMED_FIELD@[10; 24) 9 NAMED_FIELD@[10; 24)
9 WHITESPACE@[10; 15) 10 WHITESPACE@[10; 15)
diff --git a/tests/data/parser/ok/0008_mod_item.txt b/tests/data/parser/ok/0008_mod_item.txt
index aacf1ffc7..99cc30e98 100644
--- a/tests/data/parser/ok/0008_mod_item.txt
+++ b/tests/data/parser/ok/0008_mod_item.txt
@@ -35,9 +35,10 @@ FILE@[0; 118)
35 WHITESPACE@[47; 52) 35 WHITESPACE@[47; 52)
36 STRUCT_ITEM@[52; 64) 36 STRUCT_ITEM@[52; 64)
37 STRUCT_KW@[52; 58) 37 STRUCT_KW@[52; 58)
38 WHITESPACE@[58; 59) 38 NAME@[58; 61)
39 IDENT@[59; 60) "S" 39 WHITESPACE@[58; 59)
40 WHITESPACE@[60; 61) 40 IDENT@[59; 60) "S"
41 WHITESPACE@[60; 61)
41 L_CURLY@[61; 62) 42 L_CURLY@[61; 62)
42 R_CURLY@[62; 63) 43 R_CURLY@[62; 63)
43 WHITESPACE@[63; 64) 44 WHITESPACE@[63; 64)
diff --git a/tests/data/parser/ok/0016_struct_flavors.txt b/tests/data/parser/ok/0016_struct_flavors.txt
index d5d3a0183..445559250 100644
--- a/tests/data/parser/ok/0016_struct_flavors.txt
+++ b/tests/data/parser/ok/0016_struct_flavors.txt
@@ -1,31 +1,35 @@
1FILE@[0; 97) 1FILE@[0; 97)
2 STRUCT_ITEM@[0; 10) 2 STRUCT_ITEM@[0; 10)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 NAME@[6; 8)
5 IDENT@[7; 8) "A" 5 WHITESPACE@[6; 7)
6 IDENT@[7; 8) "A"
6 SEMI@[8; 9) 7 SEMI@[8; 9)
7 WHITESPACE@[9; 10) 8 WHITESPACE@[9; 10)
8 STRUCT_ITEM@[10; 22) 9 STRUCT_ITEM@[10; 22)
9 STRUCT_KW@[10; 16) 10 STRUCT_KW@[10; 16)
10 WHITESPACE@[16; 17) 11 NAME@[16; 19)
11 IDENT@[17; 18) "B" 12 WHITESPACE@[16; 17)
12 WHITESPACE@[18; 19) 13 IDENT@[17; 18) "B"
14 WHITESPACE@[18; 19)
13 L_CURLY@[19; 20) 15 L_CURLY@[19; 20)
14 R_CURLY@[20; 21) 16 R_CURLY@[20; 21)
15 WHITESPACE@[21; 22) 17 WHITESPACE@[21; 22)
16 STRUCT_ITEM@[22; 35) 18 STRUCT_ITEM@[22; 35)
17 STRUCT_KW@[22; 28) 19 STRUCT_KW@[22; 28)
18 WHITESPACE@[28; 29) 20 NAME@[28; 30)
19 IDENT@[29; 30) "C" 21 WHITESPACE@[28; 29)
22 IDENT@[29; 30) "C"
20 L_PAREN@[30; 31) 23 L_PAREN@[30; 31)
21 R_PAREN@[31; 32) 24 R_PAREN@[31; 32)
22 SEMI@[32; 33) 25 SEMI@[32; 33)
23 WHITESPACE@[33; 35) 26 WHITESPACE@[33; 35)
24 STRUCT_ITEM@[35; 76) 27 STRUCT_ITEM@[35; 76)
25 STRUCT_KW@[35; 41) 28 STRUCT_KW@[35; 41)
26 WHITESPACE@[41; 42) 29 NAME@[41; 44)
27 IDENT@[42; 43) "D" 30 WHITESPACE@[41; 42)
28 WHITESPACE@[43; 44) 31 IDENT@[42; 43) "D"
32 WHITESPACE@[43; 44)
29 L_CURLY@[44; 45) 33 L_CURLY@[44; 45)
30 NAMED_FIELD@[45; 56) 34 NAMED_FIELD@[45; 56)
31 WHITESPACE@[45; 50) 35 WHITESPACE@[45; 50)
@@ -48,8 +52,9 @@ FILE@[0; 97)
48 WHITESPACE@[74; 76) 52 WHITESPACE@[74; 76)
49 STRUCT_ITEM@[76; 97) 53 STRUCT_ITEM@[76; 97)
50 STRUCT_KW@[76; 82) 54 STRUCT_KW@[76; 82)
51 WHITESPACE@[82; 83) 55 NAME@[82; 84)
52 IDENT@[83; 84) "E" 56 WHITESPACE@[82; 83)
57 IDENT@[83; 84) "E"
53 L_PAREN@[84; 85) 58 L_PAREN@[84; 85)
54 POS_FIELD@[85; 90) 59 POS_FIELD@[85; 90)
55 VISIBILITY@[85; 89) 60 VISIBILITY@[85; 89)
diff --git a/tests/data/parser/ok/0018_struct_type_params.txt b/tests/data/parser/ok/0018_struct_type_params.txt
index 6df786f42..34b73e8fd 100644
--- a/tests/data/parser/ok/0018_struct_type_params.txt
+++ b/tests/data/parser/ok/0018_struct_type_params.txt
@@ -1,8 +1,9 @@
1FILE@[0; 290) 1FILE@[0; 290)
2 STRUCT_ITEM@[0; 14) 2 STRUCT_ITEM@[0; 14)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 NAME@[6; 9)
5 IDENT@[7; 9) "S1" 5 WHITESPACE@[6; 7)
6 IDENT@[7; 9) "S1"
6 TYPE_PARAM_LIST@[9; 12) 7 TYPE_PARAM_LIST@[9; 12)
7 L_ANGLE@[9; 10) 8 L_ANGLE@[9; 10)
8 TYPE_PARAM@[10; 11) 9 TYPE_PARAM@[10; 11)
@@ -12,8 +13,9 @@ FILE@[0; 290)
12 WHITESPACE@[13; 14) 13 WHITESPACE@[13; 14)
13 STRUCT_ITEM@[14; 33) 14 STRUCT_ITEM@[14; 33)
14 STRUCT_KW@[14; 20) 15 STRUCT_KW@[14; 20)
15 WHITESPACE@[20; 21) 16 NAME@[20; 23)
16 IDENT@[21; 23) "S2" 17 WHITESPACE@[20; 21)
18 IDENT@[21; 23) "S2"
17 TYPE_PARAM_LIST@[23; 26) 19 TYPE_PARAM_LIST@[23; 26)
18 L_ANGLE@[23; 24) 20 L_ANGLE@[23; 24)
19 TYPE_PARAM@[24; 25) 21 TYPE_PARAM@[24; 25)
@@ -27,8 +29,9 @@ FILE@[0; 290)
27 WHITESPACE@[32; 33) 29 WHITESPACE@[32; 33)
28 STRUCT_ITEM@[33; 58) 30 STRUCT_ITEM@[33; 58)
29 STRUCT_KW@[33; 39) 31 STRUCT_KW@[33; 39)
30 WHITESPACE@[39; 40) 32 NAME@[39; 42)
31 IDENT@[40; 42) "S3" 33 WHITESPACE@[39; 40)
34 IDENT@[40; 42) "S3"
32 TYPE_PARAM_LIST@[42; 46) 35 TYPE_PARAM_LIST@[42; 46)
33 L_ANGLE@[42; 43) 36 L_ANGLE@[42; 43)
34 TYPE_PARAM@[43; 44) 37 TYPE_PARAM@[43; 44)
@@ -47,8 +50,9 @@ FILE@[0; 290)
47 WHITESPACE@[56; 58) 50 WHITESPACE@[56; 58)
48 STRUCT_ITEM@[58; 71) 51 STRUCT_ITEM@[58; 71)
49 STRUCT_KW@[58; 64) 52 STRUCT_KW@[58; 64)
50 WHITESPACE@[64; 65) 53 NAME@[64; 67)
51 IDENT@[65; 67) "S4" 54 WHITESPACE@[64; 65)
55 IDENT@[65; 67) "S4"
52 TYPE_PARAM_LIST@[67; 69) 56 TYPE_PARAM_LIST@[67; 69)
53 L_ANGLE@[67; 68) 57 L_ANGLE@[67; 68)
54 R_ANGLE@[68; 69) 58 R_ANGLE@[68; 69)
@@ -56,8 +60,9 @@ FILE@[0; 290)
56 WHITESPACE@[70; 71) 60 WHITESPACE@[70; 71)
57 STRUCT_ITEM@[71; 86) 61 STRUCT_ITEM@[71; 86)
58 STRUCT_KW@[71; 77) 62 STRUCT_KW@[71; 77)
59 WHITESPACE@[77; 78) 63 NAME@[77; 80)
60 IDENT@[78; 80) "S5" 64 WHITESPACE@[77; 78)
65 IDENT@[78; 80) "S5"
61 TYPE_PARAM_LIST@[80; 84) 66 TYPE_PARAM_LIST@[80; 84)
62 L_ANGLE@[80; 81) 67 L_ANGLE@[80; 81)
63 LIFETIME_PARAM@[81; 83) 68 LIFETIME_PARAM@[81; 83)
@@ -67,8 +72,9 @@ FILE@[0; 290)
67 WHITESPACE@[85; 86) 72 WHITESPACE@[85; 86)
68 STRUCT_ITEM@[86; 102) 73 STRUCT_ITEM@[86; 102)
69 STRUCT_KW@[86; 92) 74 STRUCT_KW@[86; 92)
70 WHITESPACE@[92; 93) 75 NAME@[92; 95)
71 IDENT@[93; 95) "S6" 76 WHITESPACE@[92; 93)
77 IDENT@[93; 95) "S6"
72 TYPE_PARAM_LIST@[95; 100) 78 TYPE_PARAM_LIST@[95; 100)
73 L_ANGLE@[95; 96) 79 L_ANGLE@[95; 96)
74 LIFETIME_PARAM@[96; 99) 80 LIFETIME_PARAM@[96; 99)
@@ -79,8 +85,9 @@ FILE@[0; 290)
79 WHITESPACE@[101; 102) 85 WHITESPACE@[101; 102)
80 STRUCT_ITEM@[102; 121) 86 STRUCT_ITEM@[102; 121)
81 STRUCT_KW@[102; 108) 87 STRUCT_KW@[102; 108)
82 WHITESPACE@[108; 109) 88 NAME@[108; 111)
83 IDENT@[109; 111) "S7" 89 WHITESPACE@[108; 109)
90 IDENT@[109; 111) "S7"
84 TYPE_PARAM_LIST@[111; 119) 91 TYPE_PARAM_LIST@[111; 119)
85 L_ANGLE@[111; 112) 92 L_ANGLE@[111; 112)
86 LIFETIME_PARAM@[112; 118) 93 LIFETIME_PARAM@[112; 118)
@@ -93,8 +100,9 @@ FILE@[0; 290)
93 WHITESPACE@[120; 121) 100 WHITESPACE@[120; 121)
94 STRUCT_ITEM@[121; 143) 101 STRUCT_ITEM@[121; 143)
95 STRUCT_KW@[121; 127) 102 STRUCT_KW@[121; 127)
96 WHITESPACE@[127; 128) 103 NAME@[127; 130)
97 IDENT@[128; 130) "S8" 104 WHITESPACE@[127; 128)
105 IDENT@[128; 130) "S8"
98 TYPE_PARAM_LIST@[130; 141) 106 TYPE_PARAM_LIST@[130; 141)
99 L_ANGLE@[130; 131) 107 L_ANGLE@[130; 131)
100 LIFETIME_PARAM@[131; 140) 108 LIFETIME_PARAM@[131; 140)
@@ -110,8 +118,9 @@ FILE@[0; 290)
110 WHITESPACE@[142; 143) 118 WHITESPACE@[142; 143)
111 STRUCT_ITEM@[143; 167) 119 STRUCT_ITEM@[143; 167)
112 STRUCT_KW@[143; 149) 120 STRUCT_KW@[143; 149)
113 WHITESPACE@[149; 150) 121 NAME@[149; 152)
114 IDENT@[150; 152) "S9" 122 WHITESPACE@[149; 150)
123 IDENT@[150; 152) "S9"
115 TYPE_PARAM_LIST@[152; 165) 124 TYPE_PARAM_LIST@[152; 165)
116 L_ANGLE@[152; 153) 125 L_ANGLE@[152; 153)
117 LIFETIME_PARAM@[153; 164) 126 LIFETIME_PARAM@[153; 164)
@@ -128,8 +137,9 @@ FILE@[0; 290)
128 WHITESPACE@[166; 167) 137 WHITESPACE@[166; 167)
129 STRUCT_ITEM@[167; 184) 138 STRUCT_ITEM@[167; 184)
130 STRUCT_KW@[167; 173) 139 STRUCT_KW@[167; 173)
131 WHITESPACE@[173; 174) 140 NAME@[173; 177)
132 IDENT@[174; 177) "S10" 141 WHITESPACE@[173; 174)
142 IDENT@[174; 177) "S10"
133 TYPE_PARAM_LIST@[177; 182) 143 TYPE_PARAM_LIST@[177; 182)
134 L_ANGLE@[177; 178) 144 L_ANGLE@[177; 178)
135 LIFETIME_PARAM@[178; 180) 145 LIFETIME_PARAM@[178; 180)
@@ -140,8 +150,9 @@ FILE@[0; 290)
140 WHITESPACE@[183; 184) 150 WHITESPACE@[183; 184)
141 STRUCT_ITEM@[184; 204) 151 STRUCT_ITEM@[184; 204)
142 STRUCT_KW@[184; 190) 152 STRUCT_KW@[184; 190)
143 WHITESPACE@[190; 191) 153 NAME@[190; 194)
144 IDENT@[191; 194) "S11" 154 WHITESPACE@[190; 191)
155 IDENT@[191; 194) "S11"
145 TYPE_PARAM_LIST@[194; 202) 156 TYPE_PARAM_LIST@[194; 202)
146 L_ANGLE@[194; 195) 157 L_ANGLE@[194; 195)
147 LIFETIME_PARAM@[195; 197) 158 LIFETIME_PARAM@[195; 197)
@@ -155,8 +166,9 @@ FILE@[0; 290)
155 WHITESPACE@[203; 204) 166 WHITESPACE@[203; 204)
156 STRUCT_ITEM@[204; 235) 167 STRUCT_ITEM@[204; 235)
157 STRUCT_KW@[204; 210) 168 STRUCT_KW@[204; 210)
158 WHITESPACE@[210; 211) 169 NAME@[210; 214)
159 IDENT@[211; 214) "S12" 170 WHITESPACE@[210; 211)
171 IDENT@[211; 214) "S12"
160 TYPE_PARAM_LIST@[214; 232) 172 TYPE_PARAM_LIST@[214; 232)
161 L_ANGLE@[214; 215) 173 L_ANGLE@[214; 215)
162 LIFETIME_PARAM@[215; 222) 174 LIFETIME_PARAM@[215; 222)
@@ -178,8 +190,9 @@ FILE@[0; 290)
178 WHITESPACE@[233; 235) 190 WHITESPACE@[233; 235)
179 STRUCT_ITEM@[235; 250) 191 STRUCT_ITEM@[235; 250)
180 STRUCT_KW@[235; 241) 192 STRUCT_KW@[235; 241)
181 WHITESPACE@[241; 242) 193 NAME@[241; 245)
182 IDENT@[242; 245) "S13" 194 WHITESPACE@[241; 242)
195 IDENT@[242; 245) "S13"
183 TYPE_PARAM_LIST@[245; 248) 196 TYPE_PARAM_LIST@[245; 248)
184 L_ANGLE@[245; 246) 197 L_ANGLE@[245; 246)
185 TYPE_PARAM@[246; 247) 198 TYPE_PARAM@[246; 247)
@@ -189,8 +202,9 @@ FILE@[0; 290)
189 WHITESPACE@[249; 250) 202 WHITESPACE@[249; 250)
190 STRUCT_ITEM@[250; 268) 203 STRUCT_ITEM@[250; 268)
191 STRUCT_KW@[250; 256) 204 STRUCT_KW@[250; 256)
192 WHITESPACE@[256; 257) 205 NAME@[256; 260)
193 IDENT@[257; 260) "S14" 206 WHITESPACE@[256; 257)
207 IDENT@[257; 260) "S14"
194 TYPE_PARAM_LIST@[260; 266) 208 TYPE_PARAM_LIST@[260; 266)
195 L_ANGLE@[260; 261) 209 L_ANGLE@[260; 261)
196 TYPE_PARAM@[261; 262) 210 TYPE_PARAM@[261; 262)
@@ -204,8 +218,9 @@ FILE@[0; 290)
204 WHITESPACE@[267; 268) 218 WHITESPACE@[267; 268)
205 STRUCT_ITEM@[268; 290) 219 STRUCT_ITEM@[268; 290)
206 STRUCT_KW@[268; 274) 220 STRUCT_KW@[268; 274)
207 WHITESPACE@[274; 275) 221 NAME@[274; 278)
208 IDENT@[275; 278) "S15" 222 WHITESPACE@[274; 275)
223 IDENT@[275; 278) "S15"
209 TYPE_PARAM_LIST@[278; 288) 224 TYPE_PARAM_LIST@[278; 288)
210 L_ANGLE@[278; 279) 225 L_ANGLE@[278; 279)
211 LIFETIME_PARAM@[279; 281) 226 LIFETIME_PARAM@[279; 281)
diff --git a/tests/data/parser/ok/0020_type_param_bounds.txt b/tests/data/parser/ok/0020_type_param_bounds.txt
index 6f65d150a..a1c0cbc37 100644
--- a/tests/data/parser/ok/0020_type_param_bounds.txt
+++ b/tests/data/parser/ok/0020_type_param_bounds.txt
@@ -1,8 +1,9 @@
1FILE@[0; 200) 1FILE@[0; 200)
2 STRUCT_ITEM@[0; 13) 2 STRUCT_ITEM@[0; 13)
3 STRUCT_KW@[0; 6) 3 STRUCT_KW@[0; 6)
4 WHITESPACE@[6; 7) 4 NAME@[6; 8)
5 IDENT@[7; 8) "A" 5 WHITESPACE@[6; 7)
6 IDENT@[7; 8) "A"
6 TYPE_PARAM_LIST@[8; 11) 7 TYPE_PARAM_LIST@[8; 11)
7 L_ANGLE@[8; 9) 8 L_ANGLE@[8; 9)
8 TYPE_PARAM@[9; 10) 9 TYPE_PARAM@[9; 10)
@@ -12,8 +13,9 @@ FILE@[0; 200)
12 WHITESPACE@[12; 13) 13 WHITESPACE@[12; 13)
13 STRUCT_ITEM@[13; 27) 14 STRUCT_ITEM@[13; 27)
14 STRUCT_KW@[13; 19) 15 STRUCT_KW@[13; 19)
15 WHITESPACE@[19; 20) 16 NAME@[19; 21)
16 IDENT@[20; 21) "B" 17 WHITESPACE@[19; 20)
18 IDENT@[20; 21) "B"
17 TYPE_PARAM_LIST@[21; 25) 19 TYPE_PARAM_LIST@[21; 25)
18 L_ANGLE@[21; 22) 20 L_ANGLE@[21; 22)
19 TYPE_PARAM@[22; 24) 21 TYPE_PARAM@[22; 24)
@@ -24,8 +26,9 @@ FILE@[0; 200)
24 WHITESPACE@[26; 27) 26 WHITESPACE@[26; 27)
25 STRUCT_ITEM@[27; 44) 27 STRUCT_ITEM@[27; 44)
26 STRUCT_KW@[27; 33) 28 STRUCT_KW@[27; 33)
27 WHITESPACE@[33; 34) 29 NAME@[33; 35)
28 IDENT@[34; 35) "C" 30 WHITESPACE@[33; 34)
31 IDENT@[34; 35) "C"
29 TYPE_PARAM_LIST@[35; 42) 32 TYPE_PARAM_LIST@[35; 42)
30 L_ANGLE@[35; 36) 33 L_ANGLE@[35; 36)
31 TYPE_PARAM@[36; 41) 34 TYPE_PARAM@[36; 41)
@@ -38,8 +41,9 @@ FILE@[0; 200)
38 WHITESPACE@[43; 44) 41 WHITESPACE@[43; 44)
39 STRUCT_ITEM@[44; 64) 42 STRUCT_ITEM@[44; 64)
40 STRUCT_KW@[44; 50) 43 STRUCT_KW@[44; 50)
41 WHITESPACE@[50; 51) 44 NAME@[50; 52)
42 IDENT@[51; 52) "D" 45 WHITESPACE@[50; 51)
46 IDENT@[51; 52) "D"
43 TYPE_PARAM_LIST@[52; 62) 47 TYPE_PARAM_LIST@[52; 62)
44 L_ANGLE@[52; 53) 48 L_ANGLE@[52; 53)
45 TYPE_PARAM@[53; 61) 49 TYPE_PARAM@[53; 61)
@@ -55,8 +59,9 @@ FILE@[0; 200)
55 WHITESPACE@[63; 64) 59 WHITESPACE@[63; 64)
56 STRUCT_ITEM@[64; 87) 60 STRUCT_ITEM@[64; 87)
57 STRUCT_KW@[64; 70) 61 STRUCT_KW@[64; 70)
58 WHITESPACE@[70; 71) 62 NAME@[70; 72)
59 IDENT@[71; 72) "E" 63 WHITESPACE@[70; 71)
64 IDENT@[71; 72) "E"
60 TYPE_PARAM_LIST@[72; 85) 65 TYPE_PARAM_LIST@[72; 85)
61 L_ANGLE@[72; 73) 66 L_ANGLE@[72; 73)
62 TYPE_PARAM@[73; 84) 67 TYPE_PARAM@[73; 84)
@@ -74,8 +79,9 @@ FILE@[0; 200)
74 WHITESPACE@[86; 87) 79 WHITESPACE@[86; 87)
75 STRUCT_ITEM@[87; 117) 80 STRUCT_ITEM@[87; 117)
76 STRUCT_KW@[87; 93) 81 STRUCT_KW@[87; 93)
77 WHITESPACE@[93; 94) 82 NAME@[93; 95)
78 IDENT@[94; 95) "F" 83 WHITESPACE@[93; 94)
84 IDENT@[94; 95) "F"
79 TYPE_PARAM_LIST@[95; 115) 85 TYPE_PARAM_LIST@[95; 115)
80 L_ANGLE@[95; 96) 86 L_ANGLE@[95; 96)
81 TYPE_PARAM@[96; 114) 87 TYPE_PARAM@[96; 114)
@@ -98,8 +104,9 @@ FILE@[0; 200)
98 WHITESPACE@[116; 117) 104 WHITESPACE@[116; 117)
99 STRUCT_ITEM@[117; 144) 105 STRUCT_ITEM@[117; 144)
100 STRUCT_KW@[117; 123) 106 STRUCT_KW@[117; 123)
101 WHITESPACE@[123; 124) 107 NAME@[123; 125)
102 IDENT@[124; 125) "G" 108 WHITESPACE@[123; 124)
109 IDENT@[124; 125) "G"
103 TYPE_PARAM_LIST@[125; 142) 110 TYPE_PARAM_LIST@[125; 142)
104 L_ANGLE@[125; 126) 111 L_ANGLE@[125; 126)
105 TYPE_PARAM@[126; 141) 112 TYPE_PARAM@[126; 141)
@@ -120,8 +127,9 @@ FILE@[0; 200)
120 WHITESPACE@[143; 144) 127 WHITESPACE@[143; 144)
121 STRUCT_ITEM@[144; 181) 128 STRUCT_ITEM@[144; 181)
122 STRUCT_KW@[144; 150) 129 STRUCT_KW@[144; 150)
123 WHITESPACE@[150; 151) 130 NAME@[150; 152)
124 IDENT@[151; 152) "H" 131 WHITESPACE@[150; 151)
132 IDENT@[151; 152) "H"
125 TYPE_PARAM_LIST@[152; 179) 133 TYPE_PARAM_LIST@[152; 179)
126 L_ANGLE@[152; 153) 134 L_ANGLE@[152; 153)
127 TYPE_PARAM@[153; 178) 135 TYPE_PARAM@[153; 178)
@@ -151,8 +159,9 @@ FILE@[0; 200)
151 WHITESPACE@[180; 181) 159 WHITESPACE@[180; 181)
152 STRUCT_ITEM@[181; 200) 160 STRUCT_ITEM@[181; 200)
153 STRUCT_KW@[181; 187) 161 STRUCT_KW@[181; 187)
154 WHITESPACE@[187; 188) 162 NAME@[187; 189)
155 IDENT@[188; 189) "I" 163 WHITESPACE@[187; 188)
164 IDENT@[188; 189) "I"
156 TYPE_PARAM_LIST@[189; 198) 165 TYPE_PARAM_LIST@[189; 198)
157 L_ANGLE@[189; 190) 166 L_ANGLE@[189; 190)
158 TYPE_PARAM@[190; 192) 167 TYPE_PARAM@[190; 192)