diff options
Diffstat (limited to 'crates/ra_syntax')
12 files changed, 735 insertions, 125 deletions
diff --git a/crates/ra_syntax/src/ast.rs b/crates/ra_syntax/src/ast.rs index 81c709bfb..d8c2cb063 100644 --- a/crates/ra_syntax/src/ast.rs +++ b/crates/ra_syntax/src/ast.rs | |||
@@ -114,6 +114,9 @@ pub trait AttrsOwner: AstNode { | |||
114 | fn attrs(&self) -> AstChildren<Attr> { | 114 | fn attrs(&self) -> AstChildren<Attr> { |
115 | children(self) | 115 | children(self) |
116 | } | 116 | } |
117 | fn has_atom_attr(&self, atom: &str) -> bool { | ||
118 | self.attrs().filter_map(|x| x.as_atom()).any(|x| x == atom) | ||
119 | } | ||
117 | } | 120 | } |
118 | 121 | ||
119 | pub trait DocCommentsOwner: AstNode { | 122 | pub trait DocCommentsOwner: AstNode { |
@@ -153,12 +156,6 @@ pub trait DocCommentsOwner: AstNode { | |||
153 | } | 156 | } |
154 | } | 157 | } |
155 | 158 | ||
156 | impl FnDef { | ||
157 | pub fn has_atom_attr(&self, atom: &str) -> bool { | ||
158 | self.attrs().filter_map(|x| x.as_atom()).any(|x| x == atom) | ||
159 | } | ||
160 | } | ||
161 | |||
162 | impl Attr { | 159 | impl Attr { |
163 | pub fn is_inner(&self) -> bool { | 160 | pub fn is_inner(&self) -> bool { |
164 | let tt = match self.value() { | 161 | let tt = match self.value() { |
diff --git a/crates/ra_syntax/src/ast/generated.rs b/crates/ra_syntax/src/ast/generated.rs index 7572225b8..54b72f8c5 100644 --- a/crates/ra_syntax/src/ast/generated.rs +++ b/crates/ra_syntax/src/ast/generated.rs | |||
@@ -2108,6 +2108,7 @@ impl ToOwned for MacroCall { | |||
2108 | 2108 | ||
2109 | 2109 | ||
2110 | impl ast::NameOwner for MacroCall {} | 2110 | impl ast::NameOwner for MacroCall {} |
2111 | impl ast::AttrsOwner for MacroCall {} | ||
2111 | impl MacroCall { | 2112 | impl MacroCall { |
2112 | pub fn token_tree(&self) -> Option<&TokenTree> { | 2113 | pub fn token_tree(&self) -> Option<&TokenTree> { |
2113 | super::child_opt(self) | 2114 | super::child_opt(self) |
diff --git a/crates/ra_syntax/src/grammar.ron b/crates/ra_syntax/src/grammar.ron index 66f1339c1..4f8e19bd0 100644 --- a/crates/ra_syntax/src/grammar.ron +++ b/crates/ra_syntax/src/grammar.ron | |||
@@ -557,7 +557,7 @@ Grammar( | |||
557 | "Name": (), | 557 | "Name": (), |
558 | "NameRef": (), | 558 | "NameRef": (), |
559 | "MacroCall": ( | 559 | "MacroCall": ( |
560 | traits: [ "NameOwner" ], | 560 | traits: [ "NameOwner", "AttrsOwner" ], |
561 | options: [ "TokenTree", "Path" ], | 561 | options: [ "TokenTree", "Path" ], |
562 | ), | 562 | ), |
563 | "Attr": ( options: [ ["value", "TokenTree"] ] ), | 563 | "Attr": ( options: [ ["value", "TokenTree"] ] ), |
diff --git a/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt b/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt index b7543abc9..ed5735a63 100644 --- a/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt +++ b/crates/ra_syntax/tests/data/parser/err/0032_match_arms_inner_attrs.txt | |||
@@ -33,11 +33,11 @@ SOURCE_FILE@[0; 293) | |||
33 | R_PAREN@[40; 41) | 33 | R_PAREN@[40; 41) |
34 | COMMA@[41; 42) | 34 | COMMA@[41; 42) |
35 | WHITESPACE@[42; 51) | 35 | WHITESPACE@[42; 51) |
36 | ATTR@[51; 52) | 36 | MATCH_ARM@[51; 78) |
37 | POUND@[51; 52) | 37 | ATTR@[51; 52) |
38 | err: `expected `[`` | 38 | POUND@[51; 52) |
39 | err: `expected pattern` | 39 | err: `expected `[`` |
40 | MATCH_ARM@[52; 78) | 40 | err: `expected pattern` |
41 | ERROR@[52; 53) | 41 | ERROR@[52; 53) |
42 | EXCL@[52; 53) | 42 | EXCL@[52; 53) |
43 | err: `expected FAT_ARROW` | 43 | err: `expected FAT_ARROW` |
@@ -103,11 +103,11 @@ SOURCE_FILE@[0; 293) | |||
103 | R_PAREN@[149; 150) | 103 | R_PAREN@[149; 150) |
104 | COMMA@[150; 151) | 104 | COMMA@[150; 151) |
105 | WHITESPACE@[151; 160) | 105 | WHITESPACE@[151; 160) |
106 | ATTR@[160; 161) | 106 | MATCH_ARM@[160; 179) |
107 | POUND@[160; 161) | 107 | ATTR@[160; 161) |
108 | err: `expected `[`` | 108 | POUND@[160; 161) |
109 | err: `expected pattern` | 109 | err: `expected `[`` |
110 | MATCH_ARM@[161; 179) | 110 | err: `expected pattern` |
111 | ERROR@[161; 162) | 111 | ERROR@[161; 162) |
112 | EXCL@[161; 162) | 112 | EXCL@[161; 162) |
113 | err: `expected FAT_ARROW` | 113 | err: `expected FAT_ARROW` |
@@ -138,22 +138,22 @@ SOURCE_FILE@[0; 293) | |||
138 | MATCH_ARM_LIST@[200; 290) | 138 | MATCH_ARM_LIST@[200; 290) |
139 | L_CURLY@[200; 201) | 139 | L_CURLY@[200; 201) |
140 | WHITESPACE@[201; 210) | 140 | WHITESPACE@[201; 210) |
141 | ATTR@[210; 222) | 141 | MATCH_ARM@[210; 250) |
142 | POUND@[210; 211) | 142 | ATTR@[210; 222) |
143 | TOKEN_TREE@[211; 222) | 143 | POUND@[210; 211) |
144 | L_BRACK@[211; 212) | 144 | TOKEN_TREE@[211; 222) |
145 | IDENT@[212; 215) "cfg" | 145 | L_BRACK@[211; 212) |
146 | TOKEN_TREE@[215; 221) | 146 | IDENT@[212; 215) "cfg" |
147 | L_PAREN@[215; 216) | 147 | TOKEN_TREE@[215; 221) |
148 | IDENT@[216; 220) "test" | 148 | L_PAREN@[215; 216) |
149 | R_PAREN@[220; 221) | 149 | IDENT@[216; 220) "test" |
150 | R_BRACK@[221; 222) | 150 | R_PAREN@[220; 221) |
151 | WHITESPACE@[222; 231) | 151 | R_BRACK@[221; 222) |
152 | ATTR@[231; 232) | 152 | WHITESPACE@[222; 231) |
153 | POUND@[231; 232) | 153 | ATTR@[231; 232) |
154 | err: `expected `[`` | 154 | POUND@[231; 232) |
155 | err: `expected pattern` | 155 | err: `expected `[`` |
156 | MATCH_ARM@[232; 250) | 156 | err: `expected pattern` |
157 | ERROR@[232; 233) | 157 | ERROR@[232; 233) |
158 | EXCL@[232; 233) | 158 | EXCL@[232; 233) |
159 | err: `expected FAT_ARROW` | 159 | err: `expected FAT_ARROW` |
diff --git a/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt b/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt index 7f8767001..f540409bc 100644 --- a/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt +++ b/crates/ra_syntax/tests/data/parser/err/0033_match_arms_outer_attrs.txt | |||
@@ -43,21 +43,21 @@ SOURCE_FILE@[0; 89) | |||
43 | R_PAREN@[57; 58) | 43 | R_PAREN@[57; 58) |
44 | COMMA@[58; 59) | 44 | COMMA@[58; 59) |
45 | WHITESPACE@[59; 68) | 45 | WHITESPACE@[59; 68) |
46 | ATTR@[68; 80) | 46 | MATCH_ARM@[68; 80) |
47 | POUND@[68; 69) | 47 | ATTR@[68; 80) |
48 | TOKEN_TREE@[69; 80) | 48 | POUND@[68; 69) |
49 | L_BRACK@[69; 70) | 49 | TOKEN_TREE@[69; 80) |
50 | IDENT@[70; 73) "cfg" | 50 | L_BRACK@[69; 70) |
51 | TOKEN_TREE@[73; 79) | 51 | IDENT@[70; 73) "cfg" |
52 | L_PAREN@[73; 74) | 52 | TOKEN_TREE@[73; 79) |
53 | IDENT@[74; 78) "test" | 53 | L_PAREN@[73; 74) |
54 | R_PAREN@[78; 79) | 54 | IDENT@[74; 78) "test" |
55 | R_BRACK@[79; 80) | 55 | R_PAREN@[78; 79) |
56 | R_BRACK@[79; 80) | ||
57 | err: `expected pattern` | ||
58 | err: `expected FAT_ARROW` | ||
59 | err: `expected expression` | ||
56 | WHITESPACE@[80; 85) | 60 | WHITESPACE@[80; 85) |
57 | err: `expected pattern` | ||
58 | err: `expected FAT_ARROW` | ||
59 | err: `expected expression` | ||
60 | MATCH_ARM@[85; 85) | ||
61 | R_CURLY@[85; 86) | 61 | R_CURLY@[85; 86) |
62 | WHITESPACE@[86; 87) | 62 | WHITESPACE@[86; 87) |
63 | R_CURLY@[87; 88) | 63 | R_CURLY@[87; 88) |
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.txt index c888fb8f0..e52a290bf 100644 --- a/crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.txt +++ b/crates/ra_syntax/tests/data/parser/inline/ok/0121_match_arms_outer_attributes.txt | |||
@@ -21,22 +21,22 @@ SOURCE_FILE@[0; 259) | |||
21 | MATCH_ARM_LIST@[24; 256) | 21 | MATCH_ARM_LIST@[24; 256) |
22 | L_CURLY@[24; 25) | 22 | L_CURLY@[24; 25) |
23 | WHITESPACE@[25; 34) | 23 | WHITESPACE@[25; 34) |
24 | ATTR@[34; 58) | 24 | MATCH_ARM@[34; 74) |
25 | POUND@[34; 35) | 25 | ATTR@[34; 58) |
26 | TOKEN_TREE@[35; 58) | 26 | POUND@[34; 35) |
27 | L_BRACK@[35; 36) | 27 | TOKEN_TREE@[35; 58) |
28 | IDENT@[36; 39) "cfg" | 28 | L_BRACK@[35; 36) |
29 | TOKEN_TREE@[39; 57) | 29 | IDENT@[36; 39) "cfg" |
30 | L_PAREN@[39; 40) | 30 | TOKEN_TREE@[39; 57) |
31 | IDENT@[40; 47) "feature" | 31 | L_PAREN@[39; 40) |
32 | WHITESPACE@[47; 48) | 32 | IDENT@[40; 47) "feature" |
33 | EQ@[48; 49) | 33 | WHITESPACE@[47; 48) |
34 | WHITESPACE@[49; 50) | 34 | EQ@[48; 49) |
35 | STRING@[50; 56) | 35 | WHITESPACE@[49; 50) |
36 | R_PAREN@[56; 57) | 36 | STRING@[50; 56) |
37 | R_BRACK@[57; 58) | 37 | R_PAREN@[56; 57) |
38 | WHITESPACE@[58; 67) | 38 | R_BRACK@[57; 58) |
39 | MATCH_ARM@[67; 74) | 39 | WHITESPACE@[58; 67) |
40 | PLACEHOLDER_PAT@[67; 68) | 40 | PLACEHOLDER_PAT@[67; 68) |
41 | UNDERSCORE@[67; 68) | 41 | UNDERSCORE@[67; 68) |
42 | WHITESPACE@[68; 69) | 42 | WHITESPACE@[68; 69) |
@@ -47,22 +47,22 @@ SOURCE_FILE@[0; 259) | |||
47 | R_PAREN@[73; 74) | 47 | R_PAREN@[73; 74) |
48 | COMMA@[74; 75) | 48 | COMMA@[74; 75) |
49 | WHITESPACE@[75; 84) | 49 | WHITESPACE@[75; 84) |
50 | ATTR@[84; 109) | 50 | MATCH_ARM@[84; 125) |
51 | POUND@[84; 85) | 51 | ATTR@[84; 109) |
52 | TOKEN_TREE@[85; 109) | 52 | POUND@[84; 85) |
53 | L_BRACK@[85; 86) | 53 | TOKEN_TREE@[85; 109) |
54 | IDENT@[86; 89) "cfg" | 54 | L_BRACK@[85; 86) |
55 | TOKEN_TREE@[89; 108) | 55 | IDENT@[86; 89) "cfg" |
56 | L_PAREN@[89; 90) | 56 | TOKEN_TREE@[89; 108) |
57 | IDENT@[90; 97) "feature" | 57 | L_PAREN@[89; 90) |
58 | WHITESPACE@[97; 98) | 58 | IDENT@[90; 97) "feature" |
59 | EQ@[98; 99) | 59 | WHITESPACE@[97; 98) |
60 | WHITESPACE@[99; 100) | 60 | EQ@[98; 99) |
61 | STRING@[100; 107) | 61 | WHITESPACE@[99; 100) |
62 | R_PAREN@[107; 108) | 62 | STRING@[100; 107) |
63 | R_BRACK@[108; 109) | 63 | R_PAREN@[107; 108) |
64 | WHITESPACE@[109; 118) | 64 | R_BRACK@[108; 109) |
65 | MATCH_ARM@[118; 125) | 65 | WHITESPACE@[109; 118) |
66 | PLACEHOLDER_PAT@[118; 119) | 66 | PLACEHOLDER_PAT@[118; 119) |
67 | UNDERSCORE@[118; 119) | 67 | UNDERSCORE@[118; 119) |
68 | WHITESPACE@[119; 120) | 68 | WHITESPACE@[119; 120) |
@@ -73,52 +73,52 @@ SOURCE_FILE@[0; 259) | |||
73 | R_PAREN@[124; 125) | 73 | R_PAREN@[124; 125) |
74 | COMMA@[125; 126) | 74 | COMMA@[125; 126) |
75 | WHITESPACE@[126; 135) | 75 | WHITESPACE@[126; 135) |
76 | ATTR@[135; 159) | 76 | MATCH_ARM@[135; 249) |
77 | POUND@[135; 136) | 77 | ATTR@[135; 159) |
78 | TOKEN_TREE@[136; 159) | 78 | POUND@[135; 136) |
79 | L_BRACK@[136; 137) | 79 | TOKEN_TREE@[136; 159) |
80 | IDENT@[137; 140) "cfg" | 80 | L_BRACK@[136; 137) |
81 | TOKEN_TREE@[140; 158) | 81 | IDENT@[137; 140) "cfg" |
82 | L_PAREN@[140; 141) | 82 | TOKEN_TREE@[140; 158) |
83 | IDENT@[141; 148) "feature" | 83 | L_PAREN@[140; 141) |
84 | WHITESPACE@[148; 149) | 84 | IDENT@[141; 148) "feature" |
85 | EQ@[149; 150) | 85 | WHITESPACE@[148; 149) |
86 | WHITESPACE@[150; 151) | 86 | EQ@[149; 150) |
87 | STRING@[151; 157) | 87 | WHITESPACE@[150; 151) |
88 | R_PAREN@[157; 158) | 88 | STRING@[151; 157) |
89 | R_BRACK@[158; 159) | 89 | R_PAREN@[157; 158) |
90 | WHITESPACE@[159; 168) | 90 | R_BRACK@[158; 159) |
91 | ATTR@[168; 198) | 91 | WHITESPACE@[159; 168) |
92 | POUND@[168; 169) | 92 | ATTR@[168; 198) |
93 | TOKEN_TREE@[169; 198) | 93 | POUND@[168; 169) |
94 | L_BRACK@[169; 170) | 94 | TOKEN_TREE@[169; 198) |
95 | IDENT@[170; 173) "cfg" | 95 | L_BRACK@[169; 170) |
96 | TOKEN_TREE@[173; 197) | 96 | IDENT@[170; 173) "cfg" |
97 | L_PAREN@[173; 174) | 97 | TOKEN_TREE@[173; 197) |
98 | IDENT@[174; 181) "feature" | 98 | L_PAREN@[173; 174) |
99 | WHITESPACE@[181; 182) | 99 | IDENT@[174; 181) "feature" |
100 | EQ@[182; 183) | 100 | WHITESPACE@[181; 182) |
101 | WHITESPACE@[183; 184) | 101 | EQ@[182; 183) |
102 | STRING@[184; 196) | 102 | WHITESPACE@[183; 184) |
103 | R_PAREN@[196; 197) | 103 | STRING@[184; 196) |
104 | R_BRACK@[197; 198) | 104 | R_PAREN@[196; 197) |
105 | WHITESPACE@[198; 207) | 105 | R_BRACK@[197; 198) |
106 | ATTR@[207; 233) | 106 | WHITESPACE@[198; 207) |
107 | POUND@[207; 208) | 107 | ATTR@[207; 233) |
108 | TOKEN_TREE@[208; 233) | 108 | POUND@[207; 208) |
109 | L_BRACK@[208; 209) | 109 | TOKEN_TREE@[208; 233) |
110 | IDENT@[209; 212) "cfg" | 110 | L_BRACK@[208; 209) |
111 | TOKEN_TREE@[212; 232) | 111 | IDENT@[209; 212) "cfg" |
112 | L_PAREN@[212; 213) | 112 | TOKEN_TREE@[212; 232) |
113 | IDENT@[213; 220) "feature" | 113 | L_PAREN@[212; 213) |
114 | WHITESPACE@[220; 221) | 114 | IDENT@[213; 220) "feature" |
115 | EQ@[221; 222) | 115 | WHITESPACE@[220; 221) |
116 | WHITESPACE@[222; 223) | 116 | EQ@[221; 222) |
117 | STRING@[223; 231) | 117 | WHITESPACE@[222; 223) |
118 | R_PAREN@[231; 232) | 118 | STRING@[223; 231) |
119 | R_BRACK@[232; 233) | 119 | R_PAREN@[231; 232) |
120 | WHITESPACE@[233; 242) | 120 | R_BRACK@[232; 233) |
121 | MATCH_ARM@[242; 249) | 121 | WHITESPACE@[233; 242) |
122 | PLACEHOLDER_PAT@[242; 243) | 122 | PLACEHOLDER_PAT@[242; 243) |
123 | UNDERSCORE@[242; 243) | 123 | UNDERSCORE@[242; 243) |
124 | WHITESPACE@[243; 244) | 124 | WHITESPACE@[243; 244) |
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0125_struct_literal_field_with_attr.rs b/crates/ra_syntax/tests/data/parser/inline/ok/0125_struct_literal_field_with_attr.rs new file mode 100644 index 000000000..a6c7760c7 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/ok/0125_struct_literal_field_with_attr.rs | |||
@@ -0,0 +1,3 @@ | |||
1 | fn main() { | ||
2 | S { #[cfg(test)] field: 1 } | ||
3 | } | ||
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0125_struct_literal_field_with_attr.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0125_struct_literal_field_with_attr.txt new file mode 100644 index 000000000..34c80500a --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/inline/ok/0125_struct_literal_field_with_attr.txt | |||
@@ -0,0 +1,45 @@ | |||
1 | SOURCE_FILE@[0; 46) | ||
2 | FN_DEF@[0; 45) | ||
3 | FN_KW@[0; 2) | ||
4 | WHITESPACE@[2; 3) | ||
5 | NAME@[3; 7) | ||
6 | IDENT@[3; 7) "main" | ||
7 | PARAM_LIST@[7; 9) | ||
8 | L_PAREN@[7; 8) | ||
9 | R_PAREN@[8; 9) | ||
10 | WHITESPACE@[9; 10) | ||
11 | BLOCK@[10; 45) | ||
12 | L_CURLY@[10; 11) | ||
13 | WHITESPACE@[11; 16) | ||
14 | STRUCT_LIT@[16; 43) | ||
15 | PATH@[16; 17) | ||
16 | PATH_SEGMENT@[16; 17) | ||
17 | NAME_REF@[16; 17) | ||
18 | IDENT@[16; 17) "S" | ||
19 | WHITESPACE@[17; 18) | ||
20 | NAMED_FIELD_LIST@[18; 43) | ||
21 | L_CURLY@[18; 19) | ||
22 | WHITESPACE@[19; 20) | ||
23 | NAMED_FIELD@[20; 41) | ||
24 | ATTR@[20; 32) | ||
25 | POUND@[20; 21) | ||
26 | TOKEN_TREE@[21; 32) | ||
27 | L_BRACK@[21; 22) | ||
28 | IDENT@[22; 25) "cfg" | ||
29 | TOKEN_TREE@[25; 31) | ||
30 | L_PAREN@[25; 26) | ||
31 | IDENT@[26; 30) "test" | ||
32 | R_PAREN@[30; 31) | ||
33 | R_BRACK@[31; 32) | ||
34 | WHITESPACE@[32; 33) | ||
35 | NAME_REF@[33; 38) | ||
36 | IDENT@[33; 38) "field" | ||
37 | COLON@[38; 39) | ||
38 | WHITESPACE@[39; 40) | ||
39 | LITERAL@[40; 41) | ||
40 | INT_NUMBER@[40; 41) "1" | ||
41 | WHITESPACE@[41; 42) | ||
42 | R_CURLY@[42; 43) | ||
43 | WHITESPACE@[43; 44) | ||
44 | R_CURLY@[44; 45) | ||
45 | WHITESPACE@[45; 46) | ||
diff --git a/crates/ra_syntax/tests/data/parser/ok/0047_minus_in_inner_pattern.rs b/crates/ra_syntax/tests/data/parser/ok/0047_minus_in_inner_pattern.rs new file mode 100644 index 000000000..bbd6b0f6e --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0047_minus_in_inner_pattern.rs | |||
@@ -0,0 +1,27 @@ | |||
1 | // https://github.com/rust-analyzer/rust-analyzer/issues/972 | ||
2 | |||
3 | fn main() { | ||
4 | match Some(-1) { | ||
5 | Some(-1) => (), | ||
6 | _ => (), | ||
7 | } | ||
8 | |||
9 | match Some((-1, -1)) { | ||
10 | Some((-1, -1)) => (), | ||
11 | _ => (), | ||
12 | } | ||
13 | |||
14 | match A::B(-1, -1) { | ||
15 | A::B(-1, -1) => (), | ||
16 | _ => (), | ||
17 | } | ||
18 | |||
19 | if let Some(-1) = Some(-1) { | ||
20 | } | ||
21 | } | ||
22 | |||
23 | enum A { | ||
24 | B(i8, i8) | ||
25 | } | ||
26 | |||
27 | fn foo(-128..=127: i8) {} | ||
diff --git a/crates/ra_syntax/tests/data/parser/ok/0047_minus_in_inner_pattern.txt b/crates/ra_syntax/tests/data/parser/ok/0047_minus_in_inner_pattern.txt new file mode 100644 index 000000000..ca66b44bb --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0047_minus_in_inner_pattern.txt | |||
@@ -0,0 +1,320 @@ | |||
1 | SOURCE_FILE@[0; 395) | ||
2 | COMMENT@[0; 60) | ||
3 | WHITESPACE@[60; 62) | ||
4 | FN_DEF@[62; 341) | ||
5 | FN_KW@[62; 64) | ||
6 | WHITESPACE@[64; 65) | ||
7 | NAME@[65; 69) | ||
8 | IDENT@[65; 69) "main" | ||
9 | PARAM_LIST@[69; 71) | ||
10 | L_PAREN@[69; 70) | ||
11 | R_PAREN@[70; 71) | ||
12 | WHITESPACE@[71; 72) | ||
13 | BLOCK@[72; 341) | ||
14 | L_CURLY@[72; 73) | ||
15 | WHITESPACE@[73; 78) | ||
16 | EXPR_STMT@[78; 141) | ||
17 | MATCH_EXPR@[78; 141) | ||
18 | MATCH_KW@[78; 83) | ||
19 | WHITESPACE@[83; 84) | ||
20 | CALL_EXPR@[84; 92) | ||
21 | PATH_EXPR@[84; 88) | ||
22 | PATH@[84; 88) | ||
23 | PATH_SEGMENT@[84; 88) | ||
24 | NAME_REF@[84; 88) | ||
25 | IDENT@[84; 88) "Some" | ||
26 | ARG_LIST@[88; 92) | ||
27 | L_PAREN@[88; 89) | ||
28 | PREFIX_EXPR@[89; 91) | ||
29 | MINUS@[89; 90) | ||
30 | LITERAL@[90; 91) | ||
31 | INT_NUMBER@[90; 91) "1" | ||
32 | R_PAREN@[91; 92) | ||
33 | WHITESPACE@[92; 93) | ||
34 | MATCH_ARM_LIST@[93; 141) | ||
35 | L_CURLY@[93; 94) | ||
36 | WHITESPACE@[94; 103) | ||
37 | MATCH_ARM@[103; 117) | ||
38 | TUPLE_STRUCT_PAT@[103; 111) | ||
39 | PATH@[103; 107) | ||
40 | PATH_SEGMENT@[103; 107) | ||
41 | NAME_REF@[103; 107) | ||
42 | IDENT@[103; 107) "Some" | ||
43 | L_PAREN@[107; 108) | ||
44 | LITERAL_PAT@[108; 110) | ||
45 | MINUS@[108; 109) | ||
46 | LITERAL@[109; 110) | ||
47 | INT_NUMBER@[109; 110) "1" | ||
48 | R_PAREN@[110; 111) | ||
49 | WHITESPACE@[111; 112) | ||
50 | FAT_ARROW@[112; 114) | ||
51 | WHITESPACE@[114; 115) | ||
52 | TUPLE_EXPR@[115; 117) | ||
53 | L_PAREN@[115; 116) | ||
54 | R_PAREN@[116; 117) | ||
55 | COMMA@[117; 118) | ||
56 | WHITESPACE@[118; 127) | ||
57 | MATCH_ARM@[127; 134) | ||
58 | PLACEHOLDER_PAT@[127; 128) | ||
59 | UNDERSCORE@[127; 128) | ||
60 | WHITESPACE@[128; 129) | ||
61 | FAT_ARROW@[129; 131) | ||
62 | WHITESPACE@[131; 132) | ||
63 | TUPLE_EXPR@[132; 134) | ||
64 | L_PAREN@[132; 133) | ||
65 | R_PAREN@[133; 134) | ||
66 | COMMA@[134; 135) | ||
67 | WHITESPACE@[135; 140) | ||
68 | R_CURLY@[140; 141) | ||
69 | WHITESPACE@[141; 147) | ||
70 | EXPR_STMT@[147; 222) | ||
71 | MATCH_EXPR@[147; 222) | ||
72 | MATCH_KW@[147; 152) | ||
73 | WHITESPACE@[152; 153) | ||
74 | CALL_EXPR@[153; 167) | ||
75 | PATH_EXPR@[153; 157) | ||
76 | PATH@[153; 157) | ||
77 | PATH_SEGMENT@[153; 157) | ||
78 | NAME_REF@[153; 157) | ||
79 | IDENT@[153; 157) "Some" | ||
80 | ARG_LIST@[157; 167) | ||
81 | L_PAREN@[157; 158) | ||
82 | TUPLE_EXPR@[158; 166) | ||
83 | L_PAREN@[158; 159) | ||
84 | PREFIX_EXPR@[159; 161) | ||
85 | MINUS@[159; 160) | ||
86 | LITERAL@[160; 161) | ||
87 | INT_NUMBER@[160; 161) "1" | ||
88 | COMMA@[161; 162) | ||
89 | WHITESPACE@[162; 163) | ||
90 | PREFIX_EXPR@[163; 165) | ||
91 | MINUS@[163; 164) | ||
92 | LITERAL@[164; 165) | ||
93 | INT_NUMBER@[164; 165) "1" | ||
94 | R_PAREN@[165; 166) | ||
95 | R_PAREN@[166; 167) | ||
96 | WHITESPACE@[167; 168) | ||
97 | MATCH_ARM_LIST@[168; 222) | ||
98 | L_CURLY@[168; 169) | ||
99 | WHITESPACE@[169; 178) | ||
100 | MATCH_ARM@[178; 198) | ||
101 | TUPLE_STRUCT_PAT@[178; 192) | ||
102 | PATH@[178; 182) | ||
103 | PATH_SEGMENT@[178; 182) | ||
104 | NAME_REF@[178; 182) | ||
105 | IDENT@[178; 182) "Some" | ||
106 | L_PAREN@[182; 183) | ||
107 | TUPLE_PAT@[183; 191) | ||
108 | L_PAREN@[183; 184) | ||
109 | LITERAL_PAT@[184; 186) | ||
110 | MINUS@[184; 185) | ||
111 | LITERAL@[185; 186) | ||
112 | INT_NUMBER@[185; 186) "1" | ||
113 | COMMA@[186; 187) | ||
114 | WHITESPACE@[187; 188) | ||
115 | LITERAL_PAT@[188; 190) | ||
116 | MINUS@[188; 189) | ||
117 | LITERAL@[189; 190) | ||
118 | INT_NUMBER@[189; 190) "1" | ||
119 | R_PAREN@[190; 191) | ||
120 | R_PAREN@[191; 192) | ||
121 | WHITESPACE@[192; 193) | ||
122 | FAT_ARROW@[193; 195) | ||
123 | WHITESPACE@[195; 196) | ||
124 | TUPLE_EXPR@[196; 198) | ||
125 | L_PAREN@[196; 197) | ||
126 | R_PAREN@[197; 198) | ||
127 | COMMA@[198; 199) | ||
128 | WHITESPACE@[199; 208) | ||
129 | MATCH_ARM@[208; 215) | ||
130 | PLACEHOLDER_PAT@[208; 209) | ||
131 | UNDERSCORE@[208; 209) | ||
132 | WHITESPACE@[209; 210) | ||
133 | FAT_ARROW@[210; 212) | ||
134 | WHITESPACE@[212; 213) | ||
135 | TUPLE_EXPR@[213; 215) | ||
136 | L_PAREN@[213; 214) | ||
137 | R_PAREN@[214; 215) | ||
138 | COMMA@[215; 216) | ||
139 | WHITESPACE@[216; 221) | ||
140 | R_CURLY@[221; 222) | ||
141 | WHITESPACE@[222; 228) | ||
142 | EXPR_STMT@[228; 299) | ||
143 | MATCH_EXPR@[228; 299) | ||
144 | MATCH_KW@[228; 233) | ||
145 | WHITESPACE@[233; 234) | ||
146 | CALL_EXPR@[234; 246) | ||
147 | PATH_EXPR@[234; 238) | ||
148 | PATH@[234; 238) | ||
149 | PATH@[234; 235) | ||
150 | PATH_SEGMENT@[234; 235) | ||
151 | NAME_REF@[234; 235) | ||
152 | IDENT@[234; 235) "A" | ||
153 | COLONCOLON@[235; 237) | ||
154 | PATH_SEGMENT@[237; 238) | ||
155 | NAME_REF@[237; 238) | ||
156 | IDENT@[237; 238) "B" | ||
157 | ARG_LIST@[238; 246) | ||
158 | L_PAREN@[238; 239) | ||
159 | PREFIX_EXPR@[239; 241) | ||
160 | MINUS@[239; 240) | ||
161 | LITERAL@[240; 241) | ||
162 | INT_NUMBER@[240; 241) "1" | ||
163 | COMMA@[241; 242) | ||
164 | WHITESPACE@[242; 243) | ||
165 | PREFIX_EXPR@[243; 245) | ||
166 | MINUS@[243; 244) | ||
167 | LITERAL@[244; 245) | ||
168 | INT_NUMBER@[244; 245) "1" | ||
169 | R_PAREN@[245; 246) | ||
170 | WHITESPACE@[246; 247) | ||
171 | MATCH_ARM_LIST@[247; 299) | ||
172 | L_CURLY@[247; 248) | ||
173 | WHITESPACE@[248; 257) | ||
174 | MATCH_ARM@[257; 275) | ||
175 | TUPLE_STRUCT_PAT@[257; 269) | ||
176 | PATH@[257; 261) | ||
177 | PATH@[257; 258) | ||
178 | PATH_SEGMENT@[257; 258) | ||
179 | NAME_REF@[257; 258) | ||
180 | IDENT@[257; 258) "A" | ||
181 | COLONCOLON@[258; 260) | ||
182 | PATH_SEGMENT@[260; 261) | ||
183 | NAME_REF@[260; 261) | ||
184 | IDENT@[260; 261) "B" | ||
185 | L_PAREN@[261; 262) | ||
186 | LITERAL_PAT@[262; 264) | ||
187 | MINUS@[262; 263) | ||
188 | LITERAL@[263; 264) | ||
189 | INT_NUMBER@[263; 264) "1" | ||
190 | COMMA@[264; 265) | ||
191 | WHITESPACE@[265; 266) | ||
192 | LITERAL_PAT@[266; 268) | ||
193 | MINUS@[266; 267) | ||
194 | LITERAL@[267; 268) | ||
195 | INT_NUMBER@[267; 268) "1" | ||
196 | R_PAREN@[268; 269) | ||
197 | WHITESPACE@[269; 270) | ||
198 | FAT_ARROW@[270; 272) | ||
199 | WHITESPACE@[272; 273) | ||
200 | TUPLE_EXPR@[273; 275) | ||
201 | L_PAREN@[273; 274) | ||
202 | R_PAREN@[274; 275) | ||
203 | COMMA@[275; 276) | ||
204 | WHITESPACE@[276; 285) | ||
205 | MATCH_ARM@[285; 292) | ||
206 | PLACEHOLDER_PAT@[285; 286) | ||
207 | UNDERSCORE@[285; 286) | ||
208 | WHITESPACE@[286; 287) | ||
209 | FAT_ARROW@[287; 289) | ||
210 | WHITESPACE@[289; 290) | ||
211 | TUPLE_EXPR@[290; 292) | ||
212 | L_PAREN@[290; 291) | ||
213 | R_PAREN@[291; 292) | ||
214 | COMMA@[292; 293) | ||
215 | WHITESPACE@[293; 298) | ||
216 | R_CURLY@[298; 299) | ||
217 | WHITESPACE@[299; 305) | ||
218 | IF_EXPR@[305; 339) | ||
219 | IF_KW@[305; 307) | ||
220 | WHITESPACE@[307; 308) | ||
221 | CONDITION@[308; 331) | ||
222 | LET_KW@[308; 311) | ||
223 | WHITESPACE@[311; 312) | ||
224 | TUPLE_STRUCT_PAT@[312; 320) | ||
225 | PATH@[312; 316) | ||
226 | PATH_SEGMENT@[312; 316) | ||
227 | NAME_REF@[312; 316) | ||
228 | IDENT@[312; 316) "Some" | ||
229 | L_PAREN@[316; 317) | ||
230 | LITERAL_PAT@[317; 319) | ||
231 | MINUS@[317; 318) | ||
232 | LITERAL@[318; 319) | ||
233 | INT_NUMBER@[318; 319) "1" | ||
234 | R_PAREN@[319; 320) | ||
235 | WHITESPACE@[320; 321) | ||
236 | EQ@[321; 322) | ||
237 | WHITESPACE@[322; 323) | ||
238 | CALL_EXPR@[323; 331) | ||
239 | PATH_EXPR@[323; 327) | ||
240 | PATH@[323; 327) | ||
241 | PATH_SEGMENT@[323; 327) | ||
242 | NAME_REF@[323; 327) | ||
243 | IDENT@[323; 327) "Some" | ||
244 | ARG_LIST@[327; 331) | ||
245 | L_PAREN@[327; 328) | ||
246 | PREFIX_EXPR@[328; 330) | ||
247 | MINUS@[328; 329) | ||
248 | LITERAL@[329; 330) | ||
249 | INT_NUMBER@[329; 330) "1" | ||
250 | R_PAREN@[330; 331) | ||
251 | WHITESPACE@[331; 332) | ||
252 | BLOCK@[332; 339) | ||
253 | L_CURLY@[332; 333) | ||
254 | WHITESPACE@[333; 338) | ||
255 | R_CURLY@[338; 339) | ||
256 | WHITESPACE@[339; 340) | ||
257 | R_CURLY@[340; 341) | ||
258 | WHITESPACE@[341; 343) | ||
259 | ENUM_DEF@[343; 367) | ||
260 | ENUM_KW@[343; 347) | ||
261 | WHITESPACE@[347; 348) | ||
262 | NAME@[348; 349) | ||
263 | IDENT@[348; 349) "A" | ||
264 | WHITESPACE@[349; 350) | ||
265 | ENUM_VARIANT_LIST@[350; 367) | ||
266 | L_CURLY@[350; 351) | ||
267 | WHITESPACE@[351; 356) | ||
268 | ENUM_VARIANT@[356; 365) | ||
269 | NAME@[356; 357) | ||
270 | IDENT@[356; 357) "B" | ||
271 | POS_FIELD_DEF_LIST@[357; 365) | ||
272 | L_PAREN@[357; 358) | ||
273 | POS_FIELD_DEF@[358; 360) | ||
274 | PATH_TYPE@[358; 360) | ||
275 | PATH@[358; 360) | ||
276 | PATH_SEGMENT@[358; 360) | ||
277 | NAME_REF@[358; 360) | ||
278 | IDENT@[358; 360) "i8" | ||
279 | COMMA@[360; 361) | ||
280 | WHITESPACE@[361; 362) | ||
281 | POS_FIELD_DEF@[362; 364) | ||
282 | PATH_TYPE@[362; 364) | ||
283 | PATH@[362; 364) | ||
284 | PATH_SEGMENT@[362; 364) | ||
285 | NAME_REF@[362; 364) | ||
286 | IDENT@[362; 364) "i8" | ||
287 | R_PAREN@[364; 365) | ||
288 | WHITESPACE@[365; 366) | ||
289 | R_CURLY@[366; 367) | ||
290 | WHITESPACE@[367; 369) | ||
291 | FN_DEF@[369; 394) | ||
292 | FN_KW@[369; 371) | ||
293 | WHITESPACE@[371; 372) | ||
294 | NAME@[372; 375) | ||
295 | IDENT@[372; 375) "foo" | ||
296 | PARAM_LIST@[375; 391) | ||
297 | L_PAREN@[375; 376) | ||
298 | PARAM@[376; 390) | ||
299 | RANGE_PAT@[376; 386) | ||
300 | LITERAL_PAT@[376; 380) | ||
301 | MINUS@[376; 377) | ||
302 | LITERAL@[377; 380) | ||
303 | INT_NUMBER@[377; 380) "128" | ||
304 | DOTDOTEQ@[380; 383) | ||
305 | LITERAL_PAT@[383; 386) | ||
306 | LITERAL@[383; 386) | ||
307 | INT_NUMBER@[383; 386) "127" | ||
308 | COLON@[386; 387) | ||
309 | WHITESPACE@[387; 388) | ||
310 | PATH_TYPE@[388; 390) | ||
311 | PATH@[388; 390) | ||
312 | PATH_SEGMENT@[388; 390) | ||
313 | NAME_REF@[388; 390) | ||
314 | IDENT@[388; 390) "i8" | ||
315 | R_PAREN@[390; 391) | ||
316 | WHITESPACE@[391; 392) | ||
317 | BLOCK@[392; 394) | ||
318 | L_CURLY@[392; 393) | ||
319 | R_CURLY@[393; 394) | ||
320 | WHITESPACE@[394; 395) | ||
diff --git a/crates/ra_syntax/tests/data/parser/ok/0048_compound_assignment.rs b/crates/ra_syntax/tests/data/parser/ok/0048_compound_assignment.rs new file mode 100644 index 000000000..871720a49 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0048_compound_assignment.rs | |||
@@ -0,0 +1,17 @@ | |||
1 | // https://github.com/rust-analyzer/rust-analyzer/pull/983 | ||
2 | |||
3 | fn compound_assignment() { | ||
4 | let mut a = 0; | ||
5 | a += 1; | ||
6 | a -= 2; | ||
7 | a *= 3; | ||
8 | a %= 4; | ||
9 | a /= 5; | ||
10 | a |= 6; | ||
11 | a &= 7; | ||
12 | a ^= 8; | ||
13 | a <= 9; | ||
14 | a >= 10; | ||
15 | a >>= 11; | ||
16 | a <<= 12; | ||
17 | } | ||
diff --git a/crates/ra_syntax/tests/data/parser/ok/0048_compound_assignment.txt b/crates/ra_syntax/tests/data/parser/ok/0048_compound_assignment.txt new file mode 100644 index 000000000..c5ff06823 --- /dev/null +++ b/crates/ra_syntax/tests/data/parser/ok/0048_compound_assignment.txt | |||
@@ -0,0 +1,200 @@ | |||
1 | SOURCE_FILE@[0; 257) | ||
2 | COMMENT@[0; 58) | ||
3 | WHITESPACE@[58; 60) | ||
4 | FN_DEF@[60; 256) | ||
5 | FN_KW@[60; 62) | ||
6 | WHITESPACE@[62; 63) | ||
7 | NAME@[63; 82) | ||
8 | IDENT@[63; 82) "compound_assignment" | ||
9 | PARAM_LIST@[82; 84) | ||
10 | L_PAREN@[82; 83) | ||
11 | R_PAREN@[83; 84) | ||
12 | WHITESPACE@[84; 85) | ||
13 | BLOCK@[85; 256) | ||
14 | L_CURLY@[85; 86) | ||
15 | WHITESPACE@[86; 91) | ||
16 | LET_STMT@[91; 105) | ||
17 | LET_KW@[91; 94) | ||
18 | WHITESPACE@[94; 95) | ||
19 | BIND_PAT@[95; 100) | ||
20 | MUT_KW@[95; 98) | ||
21 | WHITESPACE@[98; 99) | ||
22 | NAME@[99; 100) | ||
23 | IDENT@[99; 100) "a" | ||
24 | WHITESPACE@[100; 101) | ||
25 | EQ@[101; 102) | ||
26 | WHITESPACE@[102; 103) | ||
27 | LITERAL@[103; 104) | ||
28 | INT_NUMBER@[103; 104) "0" | ||
29 | SEMI@[104; 105) | ||
30 | WHITESPACE@[105; 110) | ||
31 | EXPR_STMT@[110; 117) | ||
32 | BIN_EXPR@[110; 116) | ||
33 | PATH_EXPR@[110; 111) | ||
34 | PATH@[110; 111) | ||
35 | PATH_SEGMENT@[110; 111) | ||
36 | NAME_REF@[110; 111) | ||
37 | IDENT@[110; 111) "a" | ||
38 | WHITESPACE@[111; 112) | ||
39 | PLUSEQ@[112; 114) | ||
40 | WHITESPACE@[114; 115) | ||
41 | LITERAL@[115; 116) | ||
42 | INT_NUMBER@[115; 116) "1" | ||
43 | SEMI@[116; 117) | ||
44 | WHITESPACE@[117; 122) | ||
45 | EXPR_STMT@[122; 129) | ||
46 | BIN_EXPR@[122; 128) | ||
47 | PATH_EXPR@[122; 123) | ||
48 | PATH@[122; 123) | ||
49 | PATH_SEGMENT@[122; 123) | ||
50 | NAME_REF@[122; 123) | ||
51 | IDENT@[122; 123) "a" | ||
52 | WHITESPACE@[123; 124) | ||
53 | MINUSEQ@[124; 126) | ||
54 | WHITESPACE@[126; 127) | ||
55 | LITERAL@[127; 128) | ||
56 | INT_NUMBER@[127; 128) "2" | ||
57 | SEMI@[128; 129) | ||
58 | WHITESPACE@[129; 134) | ||
59 | EXPR_STMT@[134; 141) | ||
60 | BIN_EXPR@[134; 140) | ||
61 | PATH_EXPR@[134; 135) | ||
62 | PATH@[134; 135) | ||
63 | PATH_SEGMENT@[134; 135) | ||
64 | NAME_REF@[134; 135) | ||
65 | IDENT@[134; 135) "a" | ||
66 | WHITESPACE@[135; 136) | ||
67 | STAREQ@[136; 138) | ||
68 | WHITESPACE@[138; 139) | ||
69 | LITERAL@[139; 140) | ||
70 | INT_NUMBER@[139; 140) "3" | ||
71 | SEMI@[140; 141) | ||
72 | WHITESPACE@[141; 146) | ||
73 | EXPR_STMT@[146; 153) | ||
74 | BIN_EXPR@[146; 152) | ||
75 | PATH_EXPR@[146; 147) | ||
76 | PATH@[146; 147) | ||
77 | PATH_SEGMENT@[146; 147) | ||
78 | NAME_REF@[146; 147) | ||
79 | IDENT@[146; 147) "a" | ||
80 | WHITESPACE@[147; 148) | ||
81 | PERCENTEQ@[148; 150) | ||
82 | WHITESPACE@[150; 151) | ||
83 | LITERAL@[151; 152) | ||
84 | INT_NUMBER@[151; 152) "4" | ||
85 | SEMI@[152; 153) | ||
86 | WHITESPACE@[153; 158) | ||
87 | EXPR_STMT@[158; 165) | ||
88 | BIN_EXPR@[158; 164) | ||
89 | PATH_EXPR@[158; 159) | ||
90 | PATH@[158; 159) | ||
91 | PATH_SEGMENT@[158; 159) | ||
92 | NAME_REF@[158; 159) | ||
93 | IDENT@[158; 159) "a" | ||
94 | WHITESPACE@[159; 160) | ||
95 | SLASHEQ@[160; 162) | ||
96 | WHITESPACE@[162; 163) | ||
97 | LITERAL@[163; 164) | ||
98 | INT_NUMBER@[163; 164) "5" | ||
99 | SEMI@[164; 165) | ||
100 | WHITESPACE@[165; 170) | ||
101 | EXPR_STMT@[170; 177) | ||
102 | BIN_EXPR@[170; 176) | ||
103 | PATH_EXPR@[170; 171) | ||
104 | PATH@[170; 171) | ||
105 | PATH_SEGMENT@[170; 171) | ||
106 | NAME_REF@[170; 171) | ||
107 | IDENT@[170; 171) "a" | ||
108 | WHITESPACE@[171; 172) | ||
109 | PIPEEQ@[172; 174) | ||
110 | WHITESPACE@[174; 175) | ||
111 | LITERAL@[175; 176) | ||
112 | INT_NUMBER@[175; 176) "6" | ||
113 | SEMI@[176; 177) | ||
114 | WHITESPACE@[177; 182) | ||
115 | EXPR_STMT@[182; 189) | ||
116 | BIN_EXPR@[182; 188) | ||
117 | PATH_EXPR@[182; 183) | ||
118 | PATH@[182; 183) | ||
119 | PATH_SEGMENT@[182; 183) | ||
120 | NAME_REF@[182; 183) | ||
121 | IDENT@[182; 183) "a" | ||
122 | WHITESPACE@[183; 184) | ||
123 | AMPEQ@[184; 186) | ||
124 | WHITESPACE@[186; 187) | ||
125 | LITERAL@[187; 188) | ||
126 | INT_NUMBER@[187; 188) "7" | ||
127 | SEMI@[188; 189) | ||
128 | WHITESPACE@[189; 194) | ||
129 | EXPR_STMT@[194; 201) | ||
130 | BIN_EXPR@[194; 200) | ||
131 | PATH_EXPR@[194; 195) | ||
132 | PATH@[194; 195) | ||
133 | PATH_SEGMENT@[194; 195) | ||
134 | NAME_REF@[194; 195) | ||
135 | IDENT@[194; 195) "a" | ||
136 | WHITESPACE@[195; 196) | ||
137 | CARETEQ@[196; 198) | ||
138 | WHITESPACE@[198; 199) | ||
139 | LITERAL@[199; 200) | ||
140 | INT_NUMBER@[199; 200) "8" | ||
141 | SEMI@[200; 201) | ||
142 | WHITESPACE@[201; 206) | ||
143 | EXPR_STMT@[206; 213) | ||
144 | BIN_EXPR@[206; 212) | ||
145 | PATH_EXPR@[206; 207) | ||
146 | PATH@[206; 207) | ||
147 | PATH_SEGMENT@[206; 207) | ||
148 | NAME_REF@[206; 207) | ||
149 | IDENT@[206; 207) "a" | ||
150 | WHITESPACE@[207; 208) | ||
151 | LTEQ@[208; 210) | ||
152 | WHITESPACE@[210; 211) | ||
153 | LITERAL@[211; 212) | ||
154 | INT_NUMBER@[211; 212) "9" | ||
155 | SEMI@[212; 213) | ||
156 | WHITESPACE@[213; 218) | ||
157 | EXPR_STMT@[218; 226) | ||
158 | BIN_EXPR@[218; 225) | ||
159 | PATH_EXPR@[218; 219) | ||
160 | PATH@[218; 219) | ||
161 | PATH_SEGMENT@[218; 219) | ||
162 | NAME_REF@[218; 219) | ||
163 | IDENT@[218; 219) "a" | ||
164 | WHITESPACE@[219; 220) | ||
165 | GTEQ@[220; 222) | ||
166 | WHITESPACE@[222; 223) | ||
167 | LITERAL@[223; 225) | ||
168 | INT_NUMBER@[223; 225) "10" | ||
169 | SEMI@[225; 226) | ||
170 | WHITESPACE@[226; 231) | ||
171 | EXPR_STMT@[231; 240) | ||
172 | BIN_EXPR@[231; 239) | ||
173 | PATH_EXPR@[231; 232) | ||
174 | PATH@[231; 232) | ||
175 | PATH_SEGMENT@[231; 232) | ||
176 | NAME_REF@[231; 232) | ||
177 | IDENT@[231; 232) "a" | ||
178 | WHITESPACE@[232; 233) | ||
179 | SHREQ@[233; 236) | ||
180 | WHITESPACE@[236; 237) | ||
181 | LITERAL@[237; 239) | ||
182 | INT_NUMBER@[237; 239) "11" | ||
183 | SEMI@[239; 240) | ||
184 | WHITESPACE@[240; 245) | ||
185 | EXPR_STMT@[245; 254) | ||
186 | BIN_EXPR@[245; 253) | ||
187 | PATH_EXPR@[245; 246) | ||
188 | PATH@[245; 246) | ||
189 | PATH_SEGMENT@[245; 246) | ||
190 | NAME_REF@[245; 246) | ||
191 | IDENT@[245; 246) "a" | ||
192 | WHITESPACE@[246; 247) | ||
193 | SHLEQ@[247; 250) | ||
194 | WHITESPACE@[250; 251) | ||
195 | LITERAL@[251; 253) | ||
196 | INT_NUMBER@[251; 253) "12" | ||
197 | SEMI@[253; 254) | ||
198 | WHITESPACE@[254; 255) | ||
199 | R_CURLY@[255; 256) | ||
200 | WHITESPACE@[256; 257) | ||