aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/test_data/parser/inline/ok
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_syntax/test_data/parser/inline/ok')
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.rs1
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.txt34
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0054_record_field_attrs.txt26
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.rs1
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.txt43
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.rs2
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.txt65
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.rs6
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.txt107
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.txt26
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.txt18
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.txt54
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.txt130
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.txt36
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.txt18
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.txt50
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.txt20
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0135_first_array_member_attributes.txt18
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0136_subsequent_array_member_attributes.txt18
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.txt10
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.txt10
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0146_as_precedence.rs3
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0146_as_precedence.txt43
23 files changed, 504 insertions, 235 deletions
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.rs
index 293046a04..2f8188160 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.rs
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.rs
@@ -1,4 +1,5 @@
1fn foo() { 1fn foo() {
2 while true {}; 2 while true {};
3 while let Some(x) = it.next() {}; 3 while let Some(x) = it.next() {};
4 while { true } {};
4} 5}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.txt
index 9b43d624c..a6e14a114 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0031_while_expr.txt
@@ -1,5 +1,5 @@
1SOURCE_FILE@[0; 70) 1SOURCE_FILE@[0; 93)
2 FN_DEF@[0; 69) 2 FN_DEF@[0; 92)
3 FN_KW@[0; 2) "fn" 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
@@ -8,8 +8,8 @@ SOURCE_FILE@[0; 70)
8 L_PAREN@[6; 7) "(" 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@[8; 9) " "
11 BLOCK_EXPR@[9; 69) 11 BLOCK_EXPR@[9; 92)
12 BLOCK@[9; 69) 12 BLOCK@[9; 92)
13 L_CURLY@[9; 10) "{" 13 L_CURLY@[9; 10) "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@[10; 15) "\n "
15 EXPR_STMT@[15; 29) 15 EXPR_STMT@[15; 29)
@@ -64,6 +64,26 @@ SOURCE_FILE@[0; 70)
64 L_CURLY@[64; 65) "{" 64 L_CURLY@[64; 65) "{"
65 R_CURLY@[65; 66) "}" 65 R_CURLY@[65; 66) "}"
66 SEMI@[66; 67) ";" 66 SEMI@[66; 67) ";"
67 WHITESPACE@[67; 68) "\n" 67 WHITESPACE@[67; 72) "\n "
68 R_CURLY@[68; 69) "}" 68 EXPR_STMT@[72; 90)
69 WHITESPACE@[69; 70) "\n" 69 WHILE_EXPR@[72; 89)
70 WHILE_KW@[72; 77) "while"
71 WHITESPACE@[77; 78) " "
72 CONDITION@[78; 86)
73 BLOCK_EXPR@[78; 86)
74 BLOCK@[78; 86)
75 L_CURLY@[78; 79) "{"
76 WHITESPACE@[79; 80) " "
77 LITERAL@[80; 84)
78 TRUE_KW@[80; 84) "true"
79 WHITESPACE@[84; 85) " "
80 R_CURLY@[85; 86) "}"
81 WHITESPACE@[86; 87) " "
82 BLOCK_EXPR@[87; 89)
83 BLOCK@[87; 89)
84 L_CURLY@[87; 88) "{"
85 R_CURLY@[88; 89) "}"
86 SEMI@[89; 90) ";"
87 WHITESPACE@[90; 91) "\n"
88 R_CURLY@[91; 92) "}"
89 WHITESPACE@[92; 93) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0054_record_field_attrs.txt b/crates/ra_syntax/test_data/parser/inline/ok/0054_record_field_attrs.txt
index 56aeba768..731c31f76 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0054_record_field_attrs.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0054_record_field_attrs.txt
@@ -11,18 +11,20 @@ SOURCE_FILE@[0; 64)
11 RECORD_FIELD_DEF@[15; 60) 11 RECORD_FIELD_DEF@[15; 60)
12 ATTR@[15; 43) 12 ATTR@[15; 43)
13 POUND@[15; 16) "#" 13 POUND@[15; 16) "#"
14 TOKEN_TREE@[16; 43) 14 L_BRACK@[16; 17) "["
15 L_BRACK@[16; 17) "[" 15 PATH@[17; 22)
16 IDENT@[17; 22) "serde" 16 PATH_SEGMENT@[17; 22)
17 TOKEN_TREE@[22; 42) 17 NAME_REF@[17; 22)
18 L_PAREN@[22; 23) "(" 18 IDENT@[17; 22) "serde"
19 IDENT@[23; 27) "with" 19 TOKEN_TREE@[22; 42)
20 WHITESPACE@[27; 28) " " 20 L_PAREN@[22; 23) "("
21 EQ@[28; 29) "=" 21 IDENT@[23; 27) "with"
22 WHITESPACE@[29; 30) " " 22 WHITESPACE@[27; 28) " "
23 STRING@[30; 41) "\"url_serde\"" 23 EQ@[28; 29) "="
24 R_PAREN@[41; 42) ")" 24 WHITESPACE@[29; 30) " "
25 R_BRACK@[42; 43) "]" 25 STRING@[30; 41) "\"url_serde\""
26 R_PAREN@[41; 42) ")"
27 R_BRACK@[42; 43) "]"
26 WHITESPACE@[43; 48) "\n " 28 WHITESPACE@[43; 48) "\n "
27 VISIBILITY@[48; 51) 29 VISIBILITY@[48; 51)
28 PUB_KW@[48; 51) "pub" 30 PUB_KW@[48; 51) "pub"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.rs
index 4b0d9af89..40f227ba3 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.rs
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.rs
@@ -3,4 +3,5 @@ fn foo() {
3 if true {} else {}; 3 if true {} else {};
4 if true {} else if false {} else {}; 4 if true {} else if false {} else {};
5 if S {}; 5 if S {};
6 if { true } { } else { };
6} 7}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.txt
index 14ea91fd2..2ace3c8ee 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0064_if_expr.txt
@@ -1,5 +1,5 @@
1SOURCE_FILE@[0; 107) 1SOURCE_FILE@[0; 137)
2 FN_DEF@[0; 106) 2 FN_DEF@[0; 136)
3 FN_KW@[0; 2) "fn" 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
@@ -8,8 +8,8 @@ SOURCE_FILE@[0; 107)
8 L_PAREN@[6; 7) "(" 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@[8; 9) " "
11 BLOCK_EXPR@[9; 106) 11 BLOCK_EXPR@[9; 136)
12 BLOCK@[9; 106) 12 BLOCK@[9; 136)
13 L_CURLY@[9; 10) "{" 13 L_CURLY@[9; 10) "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@[10; 15) "\n "
15 EXPR_STMT@[15; 26) 15 EXPR_STMT@[15; 26)
@@ -98,6 +98,35 @@ SOURCE_FILE@[0; 107)
98 L_CURLY@[101; 102) "{" 98 L_CURLY@[101; 102) "{"
99 R_CURLY@[102; 103) "}" 99 R_CURLY@[102; 103) "}"
100 SEMI@[103; 104) ";" 100 SEMI@[103; 104) ";"
101 WHITESPACE@[104; 105) "\n" 101 WHITESPACE@[104; 109) "\n "
102 R_CURLY@[105; 106) "}" 102 EXPR_STMT@[109; 134)
103 WHITESPACE@[106; 107) "\n" 103 IF_EXPR@[109; 133)
104 IF_KW@[109; 111) "if"
105 WHITESPACE@[111; 112) " "
106 CONDITION@[112; 120)
107 BLOCK_EXPR@[112; 120)
108 BLOCK@[112; 120)
109 L_CURLY@[112; 113) "{"
110 WHITESPACE@[113; 114) " "
111 LITERAL@[114; 118)
112 TRUE_KW@[114; 118) "true"
113 WHITESPACE@[118; 119) " "
114 R_CURLY@[119; 120) "}"
115 WHITESPACE@[120; 121) " "
116 BLOCK_EXPR@[121; 124)
117 BLOCK@[121; 124)
118 L_CURLY@[121; 122) "{"
119 WHITESPACE@[122; 123) " "
120 R_CURLY@[123; 124) "}"
121 WHITESPACE@[124; 125) " "
122 ELSE_KW@[125; 129) "else"
123 WHITESPACE@[129; 130) " "
124 BLOCK_EXPR@[130; 133)
125 BLOCK@[130; 133)
126 L_CURLY@[130; 131) "{"
127 WHITESPACE@[131; 132) " "
128 R_CURLY@[132; 133) "}"
129 SEMI@[133; 134) ";"
130 WHITESPACE@[134; 135) "\n"
131 R_CURLY@[135; 136) "}"
132 WHITESPACE@[136; 137) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.rs b/crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.rs
index c9205dfa3..c4021dc10 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.rs
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.rs
@@ -1,4 +1,6 @@
1fn foo() { 1fn foo() {
2 match () { }; 2 match () { };
3 match S {}; 3 match S {};
4 match { } { _ => () };
5 match { S {} } {};
4} 6}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.txt
index f62b6c6d5..0af668056 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0071_match_expr.txt
@@ -1,5 +1,5 @@
1SOURCE_FILE@[0; 47) 1SOURCE_FILE@[0; 97)
2 FN_DEF@[0; 46) 2 FN_DEF@[0; 96)
3 FN_KW@[0; 2) "fn" 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
@@ -8,8 +8,8 @@ SOURCE_FILE@[0; 47)
8 L_PAREN@[6; 7) "(" 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@[8; 9) " "
11 BLOCK_EXPR@[9; 46) 11 BLOCK_EXPR@[9; 96)
12 BLOCK@[9; 46) 12 BLOCK@[9; 96)
13 L_CURLY@[9; 10) "{" 13 L_CURLY@[9; 10) "{"
14 WHITESPACE@[10; 15) "\n " 14 WHITESPACE@[10; 15) "\n "
15 EXPR_STMT@[15; 28) 15 EXPR_STMT@[15; 28)
@@ -40,6 +40,57 @@ SOURCE_FILE@[0; 47)
40 L_CURLY@[41; 42) "{" 40 L_CURLY@[41; 42) "{"
41 R_CURLY@[42; 43) "}" 41 R_CURLY@[42; 43) "}"
42 SEMI@[43; 44) ";" 42 SEMI@[43; 44) ";"
43 WHITESPACE@[44; 45) "\n" 43 WHITESPACE@[44; 49) "\n "
44 R_CURLY@[45; 46) "}" 44 EXPR_STMT@[49; 71)
45 WHITESPACE@[46; 47) "\n" 45 MATCH_EXPR@[49; 70)
46 MATCH_KW@[49; 54) "match"
47 WHITESPACE@[54; 55) " "
48 BLOCK_EXPR@[55; 58)
49 BLOCK@[55; 58)
50 L_CURLY@[55; 56) "{"
51 WHITESPACE@[56; 57) " "
52 R_CURLY@[57; 58) "}"
53 WHITESPACE@[58; 59) " "
54 MATCH_ARM_LIST@[59; 70)
55 L_CURLY@[59; 60) "{"
56 WHITESPACE@[60; 61) " "
57 MATCH_ARM@[61; 68)
58 PLACEHOLDER_PAT@[61; 62)
59 UNDERSCORE@[61; 62) "_"
60 WHITESPACE@[62; 63) " "
61 FAT_ARROW@[63; 65) "=>"
62 WHITESPACE@[65; 66) " "
63 TUPLE_EXPR@[66; 68)
64 L_PAREN@[66; 67) "("
65 R_PAREN@[67; 68) ")"
66 WHITESPACE@[68; 69) " "
67 R_CURLY@[69; 70) "}"
68 SEMI@[70; 71) ";"
69 WHITESPACE@[71; 76) "\n "
70 EXPR_STMT@[76; 94)
71 MATCH_EXPR@[76; 93)
72 MATCH_KW@[76; 81) "match"
73 WHITESPACE@[81; 82) " "
74 BLOCK_EXPR@[82; 90)
75 BLOCK@[82; 90)
76 L_CURLY@[82; 83) "{"
77 WHITESPACE@[83; 84) " "
78 RECORD_LIT@[84; 88)
79 PATH@[84; 85)
80 PATH_SEGMENT@[84; 85)
81 NAME_REF@[84; 85)
82 IDENT@[84; 85) "S"
83 WHITESPACE@[85; 86) " "
84 RECORD_FIELD_LIST@[86; 88)
85 L_CURLY@[86; 87) "{"
86 R_CURLY@[87; 88) "}"
87 WHITESPACE@[88; 89) " "
88 R_CURLY@[89; 90) "}"
89 WHITESPACE@[90; 91) " "
90 MATCH_ARM_LIST@[91; 93)
91 L_CURLY@[91; 92) "{"
92 R_CURLY@[92; 93) "}"
93 SEMI@[93; 94) ";"
94 WHITESPACE@[94; 95) "\n"
95 R_CURLY@[95; 96) "}"
96 WHITESPACE@[96; 97) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.rs b/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.rs
index c39fe8e68..e7b7cfc6b 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.rs
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.rs
@@ -1 +1,5 @@
1fn foo() { let x = 1..; } 1fn foo() {
2 let x = 1..;
3 match 1.. { _ => () };
4 match a.b()..S { _ => () };
5}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.txt b/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.txt
index f3c292f5e..9f8a6b0f6 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0080_postfix_range.txt
@@ -1,5 +1,5 @@
1SOURCE_FILE@[0; 26) 1SOURCE_FILE@[0; 89)
2 FN_DEF@[0; 25) 2 FN_DEF@[0; 88)
3 FN_KW@[0; 2) "fn" 3 FN_KW@[0; 2) "fn"
4 WHITESPACE@[2; 3) " " 4 WHITESPACE@[2; 3) " "
5 NAME@[3; 6) 5 NAME@[3; 6)
@@ -8,24 +8,89 @@ SOURCE_FILE@[0; 26)
8 L_PAREN@[6; 7) "(" 8 L_PAREN@[6; 7) "("
9 R_PAREN@[7; 8) ")" 9 R_PAREN@[7; 8) ")"
10 WHITESPACE@[8; 9) " " 10 WHITESPACE@[8; 9) " "
11 BLOCK_EXPR@[9; 25) 11 BLOCK_EXPR@[9; 88)
12 BLOCK@[9; 25) 12 BLOCK@[9; 88)
13 L_CURLY@[9; 10) "{" 13 L_CURLY@[9; 10) "{"
14 WHITESPACE@[10; 11) " " 14 WHITESPACE@[10; 15) "\n "
15 LET_STMT@[11; 23) 15 LET_STMT@[15; 27)
16 LET_KW@[11; 14) "let" 16 LET_KW@[15; 18) "let"
17 WHITESPACE@[14; 15) " "
18 BIND_PAT@[15; 16)
19 NAME@[15; 16)
20 IDENT@[15; 16) "x"
21 WHITESPACE@[16; 17) " "
22 EQ@[17; 18) "="
23 WHITESPACE@[18; 19) " " 17 WHITESPACE@[18; 19) " "
24 RANGE_EXPR@[19; 22) 18 BIND_PAT@[19; 20)
25 LITERAL@[19; 20) 19 NAME@[19; 20)
26 INT_NUMBER@[19; 20) "1" 20 IDENT@[19; 20) "x"
27 DOTDOT@[20; 22) ".." 21 WHITESPACE@[20; 21) " "
28 SEMI@[22; 23) ";" 22 EQ@[21; 22) "="
29 WHITESPACE@[23; 24) " " 23 WHITESPACE@[22; 23) " "
30 R_CURLY@[24; 25) "}" 24 RANGE_EXPR@[23; 26)
31 WHITESPACE@[25; 26) "\n" 25 LITERAL@[23; 24)
26 INT_NUMBER@[23; 24) "1"
27 DOTDOT@[24; 26) ".."
28 SEMI@[26; 27) ";"
29 WHITESPACE@[27; 32) "\n "
30 EXPR_STMT@[32; 54)
31 MATCH_EXPR@[32; 53)
32 MATCH_KW@[32; 37) "match"
33 WHITESPACE@[37; 38) " "
34 RANGE_EXPR@[38; 41)
35 LITERAL@[38; 39)
36 INT_NUMBER@[38; 39) "1"
37 DOTDOT@[39; 41) ".."
38 WHITESPACE@[41; 42) " "
39 MATCH_ARM_LIST@[42; 53)
40 L_CURLY@[42; 43) "{"
41 WHITESPACE@[43; 44) " "
42 MATCH_ARM@[44; 51)
43 PLACEHOLDER_PAT@[44; 45)
44 UNDERSCORE@[44; 45) "_"
45 WHITESPACE@[45; 46) " "
46 FAT_ARROW@[46; 48) "=>"
47 WHITESPACE@[48; 49) " "
48 TUPLE_EXPR@[49; 51)
49 L_PAREN@[49; 50) "("
50 R_PAREN@[50; 51) ")"
51 WHITESPACE@[51; 52) " "
52 R_CURLY@[52; 53) "}"
53 SEMI@[53; 54) ";"
54 WHITESPACE@[54; 59) "\n "
55 EXPR_STMT@[59; 86)
56 MATCH_EXPR@[59; 85)
57 MATCH_KW@[59; 64) "match"
58 WHITESPACE@[64; 65) " "
59 RANGE_EXPR@[65; 73)
60 METHOD_CALL_EXPR@[65; 70)
61 PATH_EXPR@[65; 66)
62 PATH@[65; 66)
63 PATH_SEGMENT@[65; 66)
64 NAME_REF@[65; 66)
65 IDENT@[65; 66) "a"
66 DOT@[66; 67) "."
67 NAME_REF@[67; 68)
68 IDENT@[67; 68) "b"
69 ARG_LIST@[68; 70)
70 L_PAREN@[68; 69) "("
71 R_PAREN@[69; 70) ")"
72 DOTDOT@[70; 72) ".."
73 PATH_EXPR@[72; 73)
74 PATH@[72; 73)
75 PATH_SEGMENT@[72; 73)
76 NAME_REF@[72; 73)
77 IDENT@[72; 73) "S"
78 WHITESPACE@[73; 74) " "
79 MATCH_ARM_LIST@[74; 85)
80 L_CURLY@[74; 75) "{"
81 WHITESPACE@[75; 76) " "
82 MATCH_ARM@[76; 83)
83 PLACEHOLDER_PAT@[76; 77)
84 UNDERSCORE@[76; 77) "_"
85 WHITESPACE@[77; 78) " "
86 FAT_ARROW@[78; 80) "=>"
87 WHITESPACE@[80; 81) " "
88 TUPLE_EXPR@[81; 83)
89 L_PAREN@[81; 82) "("
90 R_PAREN@[82; 83) ")"
91 WHITESPACE@[83; 84) " "
92 R_CURLY@[84; 85) "}"
93 SEMI@[85; 86) ";"
94 WHITESPACE@[86; 87) "\n"
95 R_CURLY@[87; 88) "}"
96 WHITESPACE@[88; 89) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.txt b/crates/ra_syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.txt
index cb6d9f76d..8fe15d8e2 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0115_tuple_field_attrs.txt
@@ -11,18 +11,20 @@ SOURCE_FILE@[0; 60)
11 TUPLE_FIELD_DEF@[15; 55) 11 TUPLE_FIELD_DEF@[15; 55)
12 ATTR@[15; 43) 12 ATTR@[15; 43)
13 POUND@[15; 16) "#" 13 POUND@[15; 16) "#"
14 TOKEN_TREE@[16; 43) 14 L_BRACK@[16; 17) "["
15 L_BRACK@[16; 17) "[" 15 PATH@[17; 22)
16 IDENT@[17; 22) "serde" 16 PATH_SEGMENT@[17; 22)
17 TOKEN_TREE@[22; 42) 17 NAME_REF@[17; 22)
18 L_PAREN@[22; 23) "(" 18 IDENT@[17; 22) "serde"
19 IDENT@[23; 27) "with" 19 TOKEN_TREE@[22; 42)
20 WHITESPACE@[27; 28) " " 20 L_PAREN@[22; 23) "("
21 EQ@[28; 29) "=" 21 IDENT@[23; 27) "with"
22 WHITESPACE@[29; 30) " " 22 WHITESPACE@[27; 28) " "
23 STRING@[30; 41) "\"url_serde\"" 23 EQ@[28; 29) "="
24 R_PAREN@[41; 42) ")" 24 WHITESPACE@[29; 30) " "
25 R_BRACK@[42; 43) "]" 25 STRING@[30; 41) "\"url_serde\""
26 R_PAREN@[41; 42) ")"
27 R_BRACK@[42; 43) "]"
26 WHITESPACE@[43; 48) "\n " 28 WHITESPACE@[43; 48) "\n "
27 VISIBILITY@[48; 51) 29 VISIBILITY@[48; 51)
28 PUB_KW@[48; 51) "pub" 30 PUB_KW@[48; 51) "pub"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.txt b/crates/ra_syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.txt
index 0ef3eeb75..0e9e9b95b 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0118_impl_inner_attributes.txt
@@ -25,14 +25,16 @@ SOURCE_FILE@[0; 94)
25 ATTR@[54; 91) 25 ATTR@[54; 91)
26 POUND@[54; 55) "#" 26 POUND@[54; 55) "#"
27 EXCL@[55; 56) "!" 27 EXCL@[55; 56) "!"
28 TOKEN_TREE@[56; 91) 28 L_BRACK@[56; 57) "["
29 L_BRACK@[56; 57) "[" 29 PATH@[57; 60)
30 IDENT@[57; 60) "doc" 30 PATH_SEGMENT@[57; 60)
31 TOKEN_TREE@[60; 90) 31 NAME_REF@[57; 60)
32 L_PAREN@[60; 61) "(" 32 IDENT@[57; 60) "doc"
33 STRING@[61; 89) "\"This is also a doc c ..." 33 TOKEN_TREE@[60; 90)
34 R_PAREN@[89; 90) ")" 34 L_PAREN@[60; 61) "("
35 R_BRACK@[90; 91) "]" 35 STRING@[61; 89) "\"This is also a doc c ..."
36 R_PAREN@[89; 90) ")"
37 R_BRACK@[90; 91) "]"
36 WHITESPACE@[91; 92) "\n" 38 WHITESPACE@[91; 92) "\n"
37 R_CURLY@[92; 93) "}" 39 R_CURLY@[92; 93) "}"
38 WHITESPACE@[93; 94) "\n" 40 WHITESPACE@[93; 94) "\n"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.txt b/crates/ra_syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.txt
index 3bbeb62bc..640e0640f 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0120_match_arms_inner_attribute.txt
@@ -25,38 +25,44 @@ SOURCE_FILE@[0; 139)
25 ATTR@[34; 60) 25 ATTR@[34; 60)
26 POUND@[34; 35) "#" 26 POUND@[34; 35) "#"
27 EXCL@[35; 36) "!" 27 EXCL@[35; 36) "!"
28 TOKEN_TREE@[36; 60) 28 L_BRACK@[36; 37) "["
29 L_BRACK@[36; 37) "[" 29 PATH@[37; 40)
30 IDENT@[37; 40) "doc" 30 PATH_SEGMENT@[37; 40)
31 TOKEN_TREE@[40; 59) 31 NAME_REF@[37; 40)
32 L_PAREN@[40; 41) "(" 32 IDENT@[37; 40) "doc"
33 STRING@[41; 58) "\"Inner attribute\"" 33 TOKEN_TREE@[40; 59)
34 R_PAREN@[58; 59) ")" 34 L_PAREN@[40; 41) "("
35 R_BRACK@[59; 60) "]" 35 STRING@[41; 58) "\"Inner attribute\""
36 R_PAREN@[58; 59) ")"
37 R_BRACK@[59; 60) "]"
36 WHITESPACE@[60; 69) "\n " 38 WHITESPACE@[60; 69) "\n "
37 ATTR@[69; 86) 39 ATTR@[69; 86)
38 POUND@[69; 70) "#" 40 POUND@[69; 70) "#"
39 EXCL@[70; 71) "!" 41 EXCL@[70; 71) "!"
40 TOKEN_TREE@[71; 86) 42 L_BRACK@[71; 72) "["
41 L_BRACK@[71; 72) "[" 43 PATH@[72; 75)
42 IDENT@[72; 75) "doc" 44 PATH_SEGMENT@[72; 75)
43 TOKEN_TREE@[75; 85) 45 NAME_REF@[72; 75)
44 L_PAREN@[75; 76) "(" 46 IDENT@[72; 75) "doc"
45 STRING@[76; 84) "\"Can be\"" 47 TOKEN_TREE@[75; 85)
46 R_PAREN@[84; 85) ")" 48 L_PAREN@[75; 76) "("
47 R_BRACK@[85; 86) "]" 49 STRING@[76; 84) "\"Can be\""
50 R_PAREN@[84; 85) ")"
51 R_BRACK@[85; 86) "]"
48 WHITESPACE@[86; 95) "\n " 52 WHITESPACE@[86; 95) "\n "
49 ATTR@[95; 113) 53 ATTR@[95; 113)
50 POUND@[95; 96) "#" 54 POUND@[95; 96) "#"
51 EXCL@[96; 97) "!" 55 EXCL@[96; 97) "!"
52 TOKEN_TREE@[97; 113) 56 L_BRACK@[97; 98) "["
53 L_BRACK@[97; 98) "[" 57 PATH@[98; 101)
54 IDENT@[98; 101) "doc" 58 PATH_SEGMENT@[98; 101)
55 TOKEN_TREE@[101; 112) 59 NAME_REF@[98; 101)
56 L_PAREN@[101; 102) "(" 60 IDENT@[98; 101) "doc"
57 STRING@[102; 111) "\"Stacked\"" 61 TOKEN_TREE@[101; 112)
58 R_PAREN@[111; 112) ")" 62 L_PAREN@[101; 102) "("
59 R_BRACK@[112; 113) "]" 63 STRING@[102; 111) "\"Stacked\""
64 R_PAREN@[111; 112) ")"
65 R_BRACK@[112; 113) "]"
60 WHITESPACE@[113; 122) "\n " 66 WHITESPACE@[113; 122) "\n "
61 MATCH_ARM@[122; 129) 67 MATCH_ARM@[122; 129)
62 PLACEHOLDER_PAT@[122; 123) 68 PLACEHOLDER_PAT@[122; 123)
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.txt b/crates/ra_syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.txt
index 5fd0adfc2..ff380b448 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0121_match_arms_outer_attributes.txt
@@ -25,18 +25,20 @@ SOURCE_FILE@[0; 259)
25 MATCH_ARM@[34; 74) 25 MATCH_ARM@[34; 74)
26 ATTR@[34; 58) 26 ATTR@[34; 58)
27 POUND@[34; 35) "#" 27 POUND@[34; 35) "#"
28 TOKEN_TREE@[35; 58) 28 L_BRACK@[35; 36) "["
29 L_BRACK@[35; 36) "[" 29 PATH@[36; 39)
30 IDENT@[36; 39) "cfg" 30 PATH_SEGMENT@[36; 39)
31 TOKEN_TREE@[39; 57) 31 NAME_REF@[36; 39)
32 L_PAREN@[39; 40) "(" 32 IDENT@[36; 39) "cfg"
33 IDENT@[40; 47) "feature" 33 TOKEN_TREE@[39; 57)
34 WHITESPACE@[47; 48) " " 34 L_PAREN@[39; 40) "("
35 EQ@[48; 49) "=" 35 IDENT@[40; 47) "feature"
36 WHITESPACE@[49; 50) " " 36 WHITESPACE@[47; 48) " "
37 STRING@[50; 56) "\"some\"" 37 EQ@[48; 49) "="
38 R_PAREN@[56; 57) ")" 38 WHITESPACE@[49; 50) " "
39 R_BRACK@[57; 58) "]" 39 STRING@[50; 56) "\"some\""
40 R_PAREN@[56; 57) ")"
41 R_BRACK@[57; 58) "]"
40 WHITESPACE@[58; 67) "\n " 42 WHITESPACE@[58; 67) "\n "
41 PLACEHOLDER_PAT@[67; 68) 43 PLACEHOLDER_PAT@[67; 68)
42 UNDERSCORE@[67; 68) "_" 44 UNDERSCORE@[67; 68) "_"
@@ -51,18 +53,20 @@ SOURCE_FILE@[0; 259)
51 MATCH_ARM@[84; 125) 53 MATCH_ARM@[84; 125)
52 ATTR@[84; 109) 54 ATTR@[84; 109)
53 POUND@[84; 85) "#" 55 POUND@[84; 85) "#"
54 TOKEN_TREE@[85; 109) 56 L_BRACK@[85; 86) "["
55 L_BRACK@[85; 86) "[" 57 PATH@[86; 89)
56 IDENT@[86; 89) "cfg" 58 PATH_SEGMENT@[86; 89)
57 TOKEN_TREE@[89; 108) 59 NAME_REF@[86; 89)
58 L_PAREN@[89; 90) "(" 60 IDENT@[86; 89) "cfg"
59 IDENT@[90; 97) "feature" 61 TOKEN_TREE@[89; 108)
60 WHITESPACE@[97; 98) " " 62 L_PAREN@[89; 90) "("
61 EQ@[98; 99) "=" 63 IDENT@[90; 97) "feature"
62 WHITESPACE@[99; 100) " " 64 WHITESPACE@[97; 98) " "
63 STRING@[100; 107) "\"other\"" 65 EQ@[98; 99) "="
64 R_PAREN@[107; 108) ")" 66 WHITESPACE@[99; 100) " "
65 R_BRACK@[108; 109) "]" 67 STRING@[100; 107) "\"other\""
68 R_PAREN@[107; 108) ")"
69 R_BRACK@[108; 109) "]"
66 WHITESPACE@[109; 118) "\n " 70 WHITESPACE@[109; 118) "\n "
67 PLACEHOLDER_PAT@[118; 119) 71 PLACEHOLDER_PAT@[118; 119)
68 UNDERSCORE@[118; 119) "_" 72 UNDERSCORE@[118; 119) "_"
@@ -77,48 +81,54 @@ SOURCE_FILE@[0; 259)
77 MATCH_ARM@[135; 249) 81 MATCH_ARM@[135; 249)
78 ATTR@[135; 159) 82 ATTR@[135; 159)
79 POUND@[135; 136) "#" 83 POUND@[135; 136) "#"
80 TOKEN_TREE@[136; 159) 84 L_BRACK@[136; 137) "["
81 L_BRACK@[136; 137) "[" 85 PATH@[137; 140)
82 IDENT@[137; 140) "cfg" 86 PATH_SEGMENT@[137; 140)
83 TOKEN_TREE@[140; 158) 87 NAME_REF@[137; 140)
84 L_PAREN@[140; 141) "(" 88 IDENT@[137; 140) "cfg"
85 IDENT@[141; 148) "feature" 89 TOKEN_TREE@[140; 158)
86 WHITESPACE@[148; 149) " " 90 L_PAREN@[140; 141) "("
87 EQ@[149; 150) "=" 91 IDENT@[141; 148) "feature"
88 WHITESPACE@[150; 151) " " 92 WHITESPACE@[148; 149) " "
89 STRING@[151; 157) "\"many\"" 93 EQ@[149; 150) "="
90 R_PAREN@[157; 158) ")" 94 WHITESPACE@[150; 151) " "
91 R_BRACK@[158; 159) "]" 95 STRING@[151; 157) "\"many\""
96 R_PAREN@[157; 158) ")"
97 R_BRACK@[158; 159) "]"
92 WHITESPACE@[159; 168) "\n " 98 WHITESPACE@[159; 168) "\n "
93 ATTR@[168; 198) 99 ATTR@[168; 198)
94 POUND@[168; 169) "#" 100 POUND@[168; 169) "#"
95 TOKEN_TREE@[169; 198) 101 L_BRACK@[169; 170) "["
96 L_BRACK@[169; 170) "[" 102 PATH@[170; 173)
97 IDENT@[170; 173) "cfg" 103 PATH_SEGMENT@[170; 173)
98 TOKEN_TREE@[173; 197) 104 NAME_REF@[170; 173)
99 L_PAREN@[173; 174) "(" 105 IDENT@[170; 173) "cfg"
100 IDENT@[174; 181) "feature" 106 TOKEN_TREE@[173; 197)
101 WHITESPACE@[181; 182) " " 107 L_PAREN@[173; 174) "("
102 EQ@[182; 183) "=" 108 IDENT@[174; 181) "feature"
103 WHITESPACE@[183; 184) " " 109 WHITESPACE@[181; 182) " "
104 STRING@[184; 196) "\"attributes\"" 110 EQ@[182; 183) "="
105 R_PAREN@[196; 197) ")" 111 WHITESPACE@[183; 184) " "
106 R_BRACK@[197; 198) "]" 112 STRING@[184; 196) "\"attributes\""
113 R_PAREN@[196; 197) ")"
114 R_BRACK@[197; 198) "]"
107 WHITESPACE@[198; 207) "\n " 115 WHITESPACE@[198; 207) "\n "
108 ATTR@[207; 233) 116 ATTR@[207; 233)
109 POUND@[207; 208) "#" 117 POUND@[207; 208) "#"
110 TOKEN_TREE@[208; 233) 118 L_BRACK@[208; 209) "["
111 L_BRACK@[208; 209) "[" 119 PATH@[209; 212)
112 IDENT@[209; 212) "cfg" 120 PATH_SEGMENT@[209; 212)
113 TOKEN_TREE@[212; 232) 121 NAME_REF@[209; 212)
114 L_PAREN@[212; 213) "(" 122 IDENT@[209; 212) "cfg"
115 IDENT@[213; 220) "feature" 123 TOKEN_TREE@[212; 232)
116 WHITESPACE@[220; 221) " " 124 L_PAREN@[212; 213) "("
117 EQ@[221; 222) "=" 125 IDENT@[213; 220) "feature"
118 WHITESPACE@[222; 223) " " 126 WHITESPACE@[220; 221) " "
119 STRING@[223; 231) "\"before\"" 127 EQ@[221; 222) "="
120 R_PAREN@[231; 232) ")" 128 WHITESPACE@[222; 223) " "
121 R_BRACK@[232; 233) "]" 129 STRING@[223; 231) "\"before\""
130 R_PAREN@[231; 232) ")"
131 R_BRACK@[232; 233) "]"
122 WHITESPACE@[233; 242) "\n " 132 WHITESPACE@[233; 242) "\n "
123 PLACEHOLDER_PAT@[242; 243) 133 PLACEHOLDER_PAT@[242; 243)
124 UNDERSCORE@[242; 243) "_" 134 UNDERSCORE@[242; 243) "_"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.txt b/crates/ra_syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.txt
index bc7b68b90..a73ff9c90 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0122_generic_lifetime_type_attribute.txt
@@ -9,14 +9,16 @@ SOURCE_FILE@[0; 64)
9 LIFETIME_PARAM@[7; 29) 9 LIFETIME_PARAM@[7; 29)
10 ATTR@[7; 26) 10 ATTR@[7; 26)
11 POUND@[7; 8) "#" 11 POUND@[7; 8) "#"
12 TOKEN_TREE@[8; 26) 12 L_BRACK@[8; 9) "["
13 L_BRACK@[8; 9) "[" 13 PATH@[9; 15)
14 IDENT@[9; 15) "derive" 14 PATH_SEGMENT@[9; 15)
15 TOKEN_TREE@[15; 25) 15 NAME_REF@[9; 15)
16 L_PAREN@[15; 16) "(" 16 IDENT@[9; 15) "derive"
17 IDENT@[16; 24) "Lifetime" 17 TOKEN_TREE@[15; 25)
18 R_PAREN@[24; 25) ")" 18 L_PAREN@[15; 16) "("
19 R_BRACK@[25; 26) "]" 19 IDENT@[16; 24) "Lifetime"
20 R_PAREN@[24; 25) ")"
21 R_BRACK@[25; 26) "]"
20 WHITESPACE@[26; 27) " " 22 WHITESPACE@[26; 27) " "
21 LIFETIME@[27; 29) "\'a" 23 LIFETIME@[27; 29) "\'a"
22 COMMA@[29; 30) "," 24 COMMA@[29; 30) ","
@@ -24,14 +26,16 @@ SOURCE_FILE@[0; 64)
24 TYPE_PARAM@[31; 48) 26 TYPE_PARAM@[31; 48)
25 ATTR@[31; 46) 27 ATTR@[31; 46)
26 POUND@[31; 32) "#" 28 POUND@[31; 32) "#"
27 TOKEN_TREE@[32; 46) 29 L_BRACK@[32; 33) "["
28 L_BRACK@[32; 33) "[" 30 PATH@[33; 39)
29 IDENT@[33; 39) "derive" 31 PATH_SEGMENT@[33; 39)
30 TOKEN_TREE@[39; 45) 32 NAME_REF@[33; 39)
31 L_PAREN@[39; 40) "(" 33 IDENT@[33; 39) "derive"
32 IDENT@[40; 44) "Type" 34 TOKEN_TREE@[39; 45)
33 R_PAREN@[44; 45) ")" 35 L_PAREN@[39; 40) "("
34 R_BRACK@[45; 46) "]" 36 IDENT@[40; 44) "Type"
37 R_PAREN@[44; 45) ")"
38 R_BRACK@[45; 46) "]"
35 WHITESPACE@[46; 47) " " 39 WHITESPACE@[46; 47) " "
36 NAME@[47; 48) 40 NAME@[47; 48)
37 IDENT@[47; 48) "T" 41 IDENT@[47; 48) "T"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.txt
index 37cc438d9..a36c3df0e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0125_record_literal_field_with_attr.txt
@@ -24,14 +24,16 @@ SOURCE_FILE@[0; 46)
24 RECORD_FIELD@[20; 41) 24 RECORD_FIELD@[20; 41)
25 ATTR@[20; 32) 25 ATTR@[20; 32)
26 POUND@[20; 21) "#" 26 POUND@[20; 21) "#"
27 TOKEN_TREE@[21; 32) 27 L_BRACK@[21; 22) "["
28 L_BRACK@[21; 22) "[" 28 PATH@[22; 25)
29 IDENT@[22; 25) "cfg" 29 PATH_SEGMENT@[22; 25)
30 TOKEN_TREE@[25; 31) 30 NAME_REF@[22; 25)
31 L_PAREN@[25; 26) "(" 31 IDENT@[22; 25) "cfg"
32 IDENT@[26; 30) "test" 32 TOKEN_TREE@[25; 31)
33 R_PAREN@[30; 31) ")" 33 L_PAREN@[25; 26) "("
34 R_BRACK@[31; 32) "]" 34 IDENT@[26; 30) "test"
35 R_PAREN@[30; 31) ")"
36 R_BRACK@[31; 32) "]"
35 WHITESPACE@[32; 33) " " 37 WHITESPACE@[32; 33) " "
36 NAME_REF@[33; 38) 38 NAME_REF@[33; 38)
37 IDENT@[33; 38) "field" 39 IDENT@[33; 38) "field"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.txt b/crates/ra_syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.txt
index 6bc0db077..5c311d18a 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0126_attr_on_expr_stmt.txt
@@ -15,10 +15,12 @@ SOURCE_FILE@[0; 82)
15 EXPR_STMT@[15; 26) 15 EXPR_STMT@[15; 26)
16 ATTR@[15; 19) 16 ATTR@[15; 19)
17 POUND@[15; 16) "#" 17 POUND@[15; 16) "#"
18 TOKEN_TREE@[16; 19) 18 L_BRACK@[16; 17) "["
19 L_BRACK@[16; 17) "[" 19 PATH@[17; 18)
20 IDENT@[17; 18) "A" 20 PATH_SEGMENT@[17; 18)
21 R_BRACK@[18; 19) "]" 21 NAME_REF@[17; 18)
22 IDENT@[17; 18) "A"
23 R_BRACK@[18; 19) "]"
22 WHITESPACE@[19; 20) " " 24 WHITESPACE@[19; 20) " "
23 CALL_EXPR@[20; 25) 25 CALL_EXPR@[20; 25)
24 PATH_EXPR@[20; 23) 26 PATH_EXPR@[20; 23)
@@ -34,10 +36,12 @@ SOURCE_FILE@[0; 82)
34 EXPR_STMT@[31; 42) 36 EXPR_STMT@[31; 42)
35 ATTR@[31; 35) 37 ATTR@[31; 35)
36 POUND@[31; 32) "#" 38 POUND@[31; 32) "#"
37 TOKEN_TREE@[32; 35) 39 L_BRACK@[32; 33) "["
38 L_BRACK@[32; 33) "[" 40 PATH@[33; 34)
39 IDENT@[33; 34) "B" 41 PATH_SEGMENT@[33; 34)
40 R_BRACK@[34; 35) "]" 42 NAME_REF@[33; 34)
43 IDENT@[33; 34) "B"
44 R_BRACK@[34; 35) "]"
41 WHITESPACE@[35; 36) " " 45 WHITESPACE@[35; 36) " "
42 MACRO_CALL@[36; 42) 46 MACRO_CALL@[36; 42)
43 PATH@[36; 39) 47 PATH@[36; 39)
@@ -52,17 +56,21 @@ SOURCE_FILE@[0; 82)
52 EXPR_STMT@[47; 59) 56 EXPR_STMT@[47; 59)
53 ATTR@[47; 51) 57 ATTR@[47; 51)
54 POUND@[47; 48) "#" 58 POUND@[47; 48) "#"
55 TOKEN_TREE@[48; 51) 59 L_BRACK@[48; 49) "["
56 L_BRACK@[48; 49) "[" 60 PATH@[49; 50)
57 IDENT@[49; 50) "C" 61 PATH_SEGMENT@[49; 50)
58 R_BRACK@[50; 51) "]" 62 NAME_REF@[49; 50)
63 IDENT@[49; 50) "C"
64 R_BRACK@[50; 51) "]"
59 WHITESPACE@[51; 52) " " 65 WHITESPACE@[51; 52) " "
60 ATTR@[52; 56) 66 ATTR@[52; 56)
61 POUND@[52; 53) "#" 67 POUND@[52; 53) "#"
62 TOKEN_TREE@[53; 56) 68 L_BRACK@[53; 54) "["
63 L_BRACK@[53; 54) "[" 69 PATH@[54; 55)
64 IDENT@[54; 55) "D" 70 PATH_SEGMENT@[54; 55)
65 R_BRACK@[55; 56) "]" 71 NAME_REF@[54; 55)
72 IDENT@[54; 55) "D"
73 R_BRACK@[55; 56) "]"
66 WHITESPACE@[56; 57) " " 74 WHITESPACE@[56; 57) " "
67 BLOCK_EXPR@[57; 59) 75 BLOCK_EXPR@[57; 59)
68 BLOCK@[57; 59) 76 BLOCK@[57; 59)
@@ -72,10 +80,12 @@ SOURCE_FILE@[0; 82)
72 EXPR_STMT@[64; 79) 80 EXPR_STMT@[64; 79)
73 ATTR@[64; 68) 81 ATTR@[64; 68)
74 POUND@[64; 65) "#" 82 POUND@[64; 65) "#"
75 TOKEN_TREE@[65; 68) 83 L_BRACK@[65; 66) "["
76 L_BRACK@[65; 66) "[" 84 PATH@[66; 67)
77 IDENT@[66; 67) "D" 85 PATH_SEGMENT@[66; 67)
78 R_BRACK@[67; 68) "]" 86 NAME_REF@[66; 67)
87 IDENT@[66; 67) "D"
88 R_BRACK@[67; 68) "]"
79 WHITESPACE@[68; 69) " " 89 WHITESPACE@[68; 69) " "
80 RETURN_EXPR@[69; 78) 90 RETURN_EXPR@[69; 78)
81 RETURN_KW@[69; 75) "return" 91 RETURN_KW@[69; 75) "return"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.txt b/crates/ra_syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.txt
index c201196ec..21f49690a 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0127_attr_on_last_expr_in_block.txt
@@ -20,10 +20,12 @@ SOURCE_FILE@[0; 47)
20 TRY_EXPR@[17; 29) 20 TRY_EXPR@[17; 29)
21 ATTR@[17; 21) 21 ATTR@[17; 21)
22 POUND@[17; 18) "#" 22 POUND@[17; 18) "#"
23 TOKEN_TREE@[18; 21) 23 L_BRACK@[18; 19) "["
24 L_BRACK@[18; 19) "[" 24 PATH@[19; 20)
25 IDENT@[19; 20) "A" 25 PATH_SEGMENT@[19; 20)
26 R_BRACK@[20; 21) "]" 26 NAME_REF@[19; 20)
27 IDENT@[19; 20) "A"
28 R_BRACK@[20; 21) "]"
27 WHITESPACE@[21; 22) " " 29 WHITESPACE@[21; 22) " "
28 MACRO_CALL@[22; 28) 30 MACRO_CALL@[22; 28)
29 PATH@[22; 25) 31 PATH@[22; 25)
@@ -41,10 +43,12 @@ SOURCE_FILE@[0; 47)
41 REF_EXPR@[36; 44) 43 REF_EXPR@[36; 44)
42 ATTR@[36; 40) 44 ATTR@[36; 40)
43 POUND@[36; 37) "#" 45 POUND@[36; 37) "#"
44 TOKEN_TREE@[37; 40) 46 L_BRACK@[37; 38) "["
45 L_BRACK@[37; 38) "[" 47 PATH@[38; 39)
46 IDENT@[38; 39) "B" 48 PATH_SEGMENT@[38; 39)
47 R_BRACK@[39; 40) "]" 49 NAME_REF@[38; 39)
50 IDENT@[38; 39) "B"
51 R_BRACK@[39; 40) "]"
48 WHITESPACE@[40; 41) " " 52 WHITESPACE@[40; 41) " "
49 AMP@[41; 42) "&" 53 AMP@[41; 42) "&"
50 TUPLE_EXPR@[42; 44) 54 TUPLE_EXPR@[42; 44)
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0135_first_array_member_attributes.txt b/crates/ra_syntax/test_data/parser/inline/ok/0135_first_array_member_attributes.txt
index eac4f6f30..8f2e91bdf 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0135_first_array_member_attributes.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0135_first_array_member_attributes.txt
@@ -29,14 +29,16 @@ SOURCE_FILE@[0; 56)
29 WHITESPACE@[24; 28) "\n " 29 WHITESPACE@[24; 28) "\n "
30 ATTR@[28; 40) 30 ATTR@[28; 40)
31 POUND@[28; 29) "#" 31 POUND@[28; 29) "#"
32 TOKEN_TREE@[29; 40) 32 L_BRACK@[29; 30) "["
33 L_BRACK@[29; 30) "[" 33 PATH@[30; 33)
34 IDENT@[30; 33) "cfg" 34 PATH_SEGMENT@[30; 33)
35 TOKEN_TREE@[33; 39) 35 NAME_REF@[30; 33)
36 L_PAREN@[33; 34) "(" 36 IDENT@[30; 33) "cfg"
37 IDENT@[34; 38) "test" 37 TOKEN_TREE@[33; 39)
38 R_PAREN@[38; 39) ")" 38 L_PAREN@[33; 34) "("
39 R_BRACK@[39; 40) "]" 39 IDENT@[34; 38) "test"
40 R_PAREN@[38; 39) ")"
41 R_BRACK@[39; 40) "]"
40 WHITESPACE@[40; 44) "\n " 42 WHITESPACE@[40; 44) "\n "
41 LITERAL@[44; 45) 43 LITERAL@[44; 45)
42 INT_NUMBER@[44; 45) "1" 44 INT_NUMBER@[44; 45) "1"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0136_subsequent_array_member_attributes.txt b/crates/ra_syntax/test_data/parser/inline/ok/0136_subsequent_array_member_attributes.txt
index 6fa1b42d9..41914eb8e 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0136_subsequent_array_member_attributes.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0136_subsequent_array_member_attributes.txt
@@ -33,14 +33,16 @@ SOURCE_FILE@[0; 56)
33 WHITESPACE@[30; 34) "\n " 33 WHITESPACE@[30; 34) "\n "
34 ATTR@[34; 46) 34 ATTR@[34; 46)
35 POUND@[34; 35) "#" 35 POUND@[34; 35) "#"
36 TOKEN_TREE@[35; 46) 36 L_BRACK@[35; 36) "["
37 L_BRACK@[35; 36) "[" 37 PATH@[36; 39)
38 IDENT@[36; 39) "cfg" 38 PATH_SEGMENT@[36; 39)
39 TOKEN_TREE@[39; 45) 39 NAME_REF@[36; 39)
40 L_PAREN@[39; 40) "(" 40 IDENT@[36; 39) "cfg"
41 IDENT@[40; 44) "test" 41 TOKEN_TREE@[39; 45)
42 R_PAREN@[44; 45) ")" 42 L_PAREN@[39; 40) "("
43 R_BRACK@[45; 46) "]" 43 IDENT@[40; 44) "test"
44 R_PAREN@[44; 45) ")"
45 R_BRACK@[45; 46) "]"
44 WHITESPACE@[46; 50) "\n " 46 WHITESPACE@[46; 50) "\n "
45 LITERAL@[50; 51) 47 LITERAL@[50; 51)
46 INT_NUMBER@[50; 51) "2" 48 INT_NUMBER@[50; 51) "2"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.txt b/crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.txt
index 708fa4773..e627b9746 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0138_self_param_outer_attr.txt
@@ -8,10 +8,12 @@ SOURCE_FILE@[0; 26)
8 L_PAREN@[4; 5) "(" 8 L_PAREN@[4; 5) "("
9 ATTR@[5; 16) 9 ATTR@[5; 16)
10 POUND@[5; 6) "#" 10 POUND@[5; 6) "#"
11 TOKEN_TREE@[6; 16) 11 L_BRACK@[6; 7) "["
12 L_BRACK@[6; 7) "[" 12 PATH@[7; 15)
13 IDENT@[7; 15) "must_use" 13 PATH_SEGMENT@[7; 15)
14 R_BRACK@[15; 16) "]" 14 NAME_REF@[7; 15)
15 IDENT@[7; 15) "must_use"
16 R_BRACK@[15; 16) "]"
15 WHITESPACE@[16; 17) " " 17 WHITESPACE@[16; 17) " "
16 SELF_PARAM@[17; 21) 18 SELF_PARAM@[17; 21)
17 SELF_KW@[17; 21) "self" 19 SELF_KW@[17; 21) "self"
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.txt b/crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.txt
index 9c0a0d20b..cf202c94b 100644
--- a/crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.txt
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0139_param_outer_arg.txt
@@ -8,10 +8,12 @@ SOURCE_FILE@[0; 28)
8 L_PAREN@[4; 5) "(" 8 L_PAREN@[4; 5) "("
9 ATTR@[5; 13) 9 ATTR@[5; 13)
10 POUND@[5; 6) "#" 10 POUND@[5; 6) "#"
11 TOKEN_TREE@[6; 13) 11 L_BRACK@[6; 7) "["
12 L_BRACK@[6; 7) "[" 12 PATH@[7; 12)
13 IDENT@[7; 12) "attr1" 13 PATH_SEGMENT@[7; 12)
14 R_BRACK@[12; 13) "]" 14 NAME_REF@[7; 12)
15 IDENT@[7; 12) "attr1"
16 R_BRACK@[12; 13) "]"
15 WHITESPACE@[13; 14) " " 17 WHITESPACE@[13; 14) " "
16 PARAM@[14; 23) 18 PARAM@[14; 23)
17 BIND_PAT@[14; 17) 19 BIND_PAT@[14; 17)
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0146_as_precedence.rs b/crates/ra_syntax/test_data/parser/inline/ok/0146_as_precedence.rs
new file mode 100644
index 000000000..a06dec1fa
--- /dev/null
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0146_as_precedence.rs
@@ -0,0 +1,3 @@
1fn foo() {
2 let _ = &1 as *const i32;
3}
diff --git a/crates/ra_syntax/test_data/parser/inline/ok/0146_as_precedence.txt b/crates/ra_syntax/test_data/parser/inline/ok/0146_as_precedence.txt
new file mode 100644
index 000000000..9e3767fb7
--- /dev/null
+++ b/crates/ra_syntax/test_data/parser/inline/ok/0146_as_precedence.txt
@@ -0,0 +1,43 @@
1SOURCE_FILE@[0; 43)
2 FN_DEF@[0; 42)
3 FN_KW@[0; 2) "fn"
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; 9) " "
11 BLOCK_EXPR@[9; 42)
12 BLOCK@[9; 42)
13 L_CURLY@[9; 10) "{"
14 WHITESPACE@[10; 15) "\n "
15 LET_STMT@[15; 40)
16 LET_KW@[15; 18) "let"
17 WHITESPACE@[18; 19) " "
18 PLACEHOLDER_PAT@[19; 20)
19 UNDERSCORE@[19; 20) "_"
20 WHITESPACE@[20; 21) " "
21 EQ@[21; 22) "="
22 WHITESPACE@[22; 23) " "
23 CAST_EXPR@[23; 39)
24 REF_EXPR@[23; 25)
25 AMP@[23; 24) "&"
26 LITERAL@[24; 25)
27 INT_NUMBER@[24; 25) "1"
28 WHITESPACE@[25; 26) " "
29 AS_KW@[26; 28) "as"
30 WHITESPACE@[28; 29) " "
31 POINTER_TYPE@[29; 39)
32 STAR@[29; 30) "*"
33 CONST_KW@[30; 35) "const"
34 WHITESPACE@[35; 36) " "
35 PATH_TYPE@[36; 39)
36 PATH@[36; 39)
37 PATH_SEGMENT@[36; 39)
38 NAME_REF@[36; 39)
39 IDENT@[36; 39) "i32"
40 SEMI@[39; 40) ";"
41 WHITESPACE@[40; 41) "\n"
42 R_CURLY@[41; 42) "}"
43 WHITESPACE@[42; 43) "\n"