aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--crates/parser/src/grammar/expressions/atom.rs8
-rw-r--r--crates/syntax/test_data/parser/inline/ok/0154_tuple_attrs.rast50
-rw-r--r--crates/syntax/test_data/parser/inline/ok/0154_tuple_attrs.rs1
3 files changed, 56 insertions, 3 deletions
diff --git a/crates/parser/src/grammar/expressions/atom.rs b/crates/parser/src/grammar/expressions/atom.rs
index 18b63feb7..e897d5a52 100644
--- a/crates/parser/src/grammar/expressions/atom.rs
+++ b/crates/parser/src/grammar/expressions/atom.rs
@@ -156,11 +156,13 @@ fn tuple_expr(p: &mut Parser) -> CompletedMarker {
156 let mut saw_expr = false; 156 let mut saw_expr = false;
157 while !p.at(EOF) && !p.at(T![')']) { 157 while !p.at(EOF) && !p.at(T![')']) {
158 saw_expr = true; 158 saw_expr = true;
159 if !p.at_ts(EXPR_FIRST) { 159
160 p.error("expected expression"); 160 // test tuple_attrs
161 // const A: (i64, i64) = (1, #[cfg(test)] 2);
162 if !expr_with_attrs(p) {
161 break; 163 break;
162 } 164 }
163 expr(p); 165
164 if !p.at(T![')']) { 166 if !p.at(T![')']) {
165 saw_comma = true; 167 saw_comma = true;
166 p.expect(T![,]); 168 p.expect(T![,]);
diff --git a/crates/syntax/test_data/parser/inline/ok/0154_tuple_attrs.rast b/crates/syntax/test_data/parser/inline/ok/0154_tuple_attrs.rast
new file mode 100644
index 000000000..d34b21abe
--- /dev/null
+++ b/crates/syntax/test_data/parser/inline/ok/0154_tuple_attrs.rast
@@ -0,0 +1,50 @@
1SOURCE_FILE@0..43
2 CONST@0..42
3 CONST_KW@0..5 "const"
4 WHITESPACE@5..6 " "
5 NAME@6..7
6 IDENT@6..7 "A"
7 COLON@7..8 ":"
8 WHITESPACE@8..9 " "
9 TUPLE_TYPE@9..19
10 L_PAREN@9..10 "("
11 PATH_TYPE@10..13
12 PATH@10..13
13 PATH_SEGMENT@10..13
14 NAME_REF@10..13
15 IDENT@10..13 "i64"
16 COMMA@13..14 ","
17 WHITESPACE@14..15 " "
18 PATH_TYPE@15..18
19 PATH@15..18
20 PATH_SEGMENT@15..18
21 NAME_REF@15..18
22 IDENT@15..18 "i64"
23 R_PAREN@18..19 ")"
24 WHITESPACE@19..20 " "
25 EQ@20..21 "="
26 WHITESPACE@21..22 " "
27 TUPLE_EXPR@22..41
28 L_PAREN@22..23 "("
29 LITERAL@23..24
30 INT_NUMBER@23..24 "1"
31 COMMA@24..25 ","
32 WHITESPACE@25..26 " "
33 LITERAL@26..40
34 ATTR@26..38
35 POUND@26..27 "#"
36 L_BRACK@27..28 "["
37 PATH@28..31
38 PATH_SEGMENT@28..31
39 NAME_REF@28..31
40 IDENT@28..31 "cfg"
41 TOKEN_TREE@31..37
42 L_PAREN@31..32 "("
43 IDENT@32..36 "test"
44 R_PAREN@36..37 ")"
45 R_BRACK@37..38 "]"
46 WHITESPACE@38..39 " "
47 INT_NUMBER@39..40 "2"
48 R_PAREN@40..41 ")"
49 SEMICOLON@41..42 ";"
50 WHITESPACE@42..43 "\n"
diff --git a/crates/syntax/test_data/parser/inline/ok/0154_tuple_attrs.rs b/crates/syntax/test_data/parser/inline/ok/0154_tuple_attrs.rs
new file mode 100644
index 000000000..f84b7ab31
--- /dev/null
+++ b/crates/syntax/test_data/parser/inline/ok/0154_tuple_attrs.rs
@@ -0,0 +1 @@
const A: (i64, i64) = (1, #[cfg(test)] 2);