aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.txt
diff options
context:
space:
mode:
authorbors[bot] <bors[bot]@users.noreply.github.com>2019-03-31 10:11:48 +0100
committerbors[bot] <bors[bot]@users.noreply.github.com>2019-03-31 10:11:48 +0100
commitc5ca49678f129045e59438df279829902034ec71 (patch)
tree3fd54185e0c064fbd6f718ac345064ce9c559efb /crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.txt
parent23dd53eb35ff50508d0c0fc5878a55754b12d381 (diff)
parent55dcdb7d094f473c73f87ecf997b24f8e35f2a5e (diff)
Merge #1077
1077: Improve parsing of type bounds r=matklad a=vipentti This adds new TYPE_BOUND_LIST and TYPE_BOUND syntax kinds. These are now used when parsing type bounds. In addition parsing paths inside a bound now does not recursively parse paths, rather they are treated as separate bounds, separated by +. Basically now the generic params `struct S<T: 'a + ?Sized + (Copy)>;` in will be parsed as ``` TYPE_PARAM_LIST@[8; 33) L_ANGLE@[8; 9) TYPE_PARAM@[9; 32) NAME@[9; 10) IDENT@[9; 10) "T" COLON@[10; 11) WHITESPACE@[11; 12) TYPE_BOUND_LIST@[12; 32) TYPE_BOUND@[12; 14) LIFETIME@[12; 14) "'a" WHITESPACE@[14; 15) PLUS@[15; 16) WHITESPACE@[16; 17) TYPE_BOUND@[17; 23) QUESTION@[17; 18) PATH_TYPE@[18; 23) PATH@[18; 23) PATH_SEGMENT@[18; 23) NAME_REF@[18; 23) IDENT@[18; 23) "Sized" WHITESPACE@[23; 24) PLUS@[24; 25) WHITESPACE@[25; 26) TYPE_BOUND@[26; 32) L_PAREN@[26; 27) PATH_TYPE@[27; 31) PATH@[27; 31) PATH_SEGMENT@[27; 31) NAME_REF@[27; 31) IDENT@[27; 31) "Copy" R_PAREN@[31; 32) R_ANGLE@[32; 33) ``` Previously it was parsed, with the paths nested: ``` TYPE_PARAM_LIST@[8; 33) L_ANGLE@[8; 9) TYPE_PARAM@[9; 32) NAME@[9; 10) IDENT@[9; 10) "T" COLON@[10; 11) WHITESPACE@[11; 12) LIFETIME@[12; 14) "'a" WHITESPACE@[14; 15) PLUS@[15; 16) WHITESPACE@[16; 17) QUESTION@[17; 18) PATH_TYPE@[18; 32) PATH@[18; 23) PATH_SEGMENT@[18; 23) NAME_REF@[18; 23) IDENT@[18; 23) "Sized" WHITESPACE@[23; 24) PLUS@[24; 25) WHITESPACE@[25; 26) L_PAREN@[26; 27) PATH_TYPE@[27; 31) PATH@[27; 31) PATH_SEGMENT@[27; 31) NAME_REF@[27; 31) IDENT@[27; 31) "Copy" R_PAREN@[31; 32) R_ANGLE@[32; 33) ``` Looking for feedback. Co-authored-by: Ville Penttinen <[email protected]>
Diffstat (limited to 'crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.txt')
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.txt108
1 files changed, 92 insertions, 16 deletions
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.txt
index 333a737ec..56cfea5b3 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0041_trait_item.txt
@@ -1,4 +1,4 @@
1SOURCE_FILE@[0; 42) 1SOURCE_FILE@[0; 101)
2 TRAIT_DEF@[0; 41) 2 TRAIT_DEF@[0; 41)
3 TRAIT_KW@[0; 5) 3 TRAIT_KW@[0; 5)
4 WHITESPACE@[5; 6) 4 WHITESPACE@[5; 6)
@@ -12,19 +12,22 @@ SOURCE_FILE@[0; 42)
12 R_ANGLE@[9; 10) 12 R_ANGLE@[9; 10)
13 COLON@[10; 11) 13 COLON@[10; 11)
14 WHITESPACE@[11; 12) 14 WHITESPACE@[11; 12)
15 PATH_TYPE@[12; 24) 15 TYPE_BOUND_LIST@[12; 24)
16 PATH@[12; 16) 16 TYPE_BOUND@[12; 16)
17 PATH_SEGMENT@[12; 16) 17 PATH_TYPE@[12; 16)
18 NAME_REF@[12; 16) 18 PATH@[12; 16)
19 IDENT@[12; 16) "Hash" 19 PATH_SEGMENT@[12; 16)
20 NAME_REF@[12; 16)
21 IDENT@[12; 16) "Hash"
20 WHITESPACE@[16; 17) 22 WHITESPACE@[16; 17)
21 PLUS@[17; 18) 23 PLUS@[17; 18)
22 WHITESPACE@[18; 19) 24 WHITESPACE@[18; 19)
23 PATH_TYPE@[19; 24) 25 TYPE_BOUND@[19; 24)
24 PATH@[19; 24) 26 PATH_TYPE@[19; 24)
25 PATH_SEGMENT@[19; 24) 27 PATH@[19; 24)
26 NAME_REF@[19; 24) 28 PATH_SEGMENT@[19; 24)
27 IDENT@[19; 24) "Clone" 29 NAME_REF@[19; 24)
30 IDENT@[19; 24) "Clone"
28 WHITESPACE@[24; 25) 31 WHITESPACE@[24; 25)
29 WHERE_CLAUSE@[25; 38) 32 WHERE_CLAUSE@[25; 38)
30 WHERE_KW@[25; 30) 33 WHERE_KW@[25; 30)
@@ -37,13 +40,86 @@ SOURCE_FILE@[0; 42)
37 IDENT@[31; 32) "U" 40 IDENT@[31; 32) "U"
38 COLON@[32; 33) 41 COLON@[32; 33)
39 WHITESPACE@[33; 34) 42 WHITESPACE@[33; 34)
40 PATH_TYPE@[34; 38) 43 TYPE_BOUND_LIST@[34; 38)
41 PATH@[34; 38) 44 TYPE_BOUND@[34; 38)
42 PATH_SEGMENT@[34; 38) 45 PATH_TYPE@[34; 38)
43 NAME_REF@[34; 38) 46 PATH@[34; 38)
44 IDENT@[34; 38) "Copy" 47 PATH_SEGMENT@[34; 38)
48 NAME_REF@[34; 38)
49 IDENT@[34; 38) "Copy"
45 WHITESPACE@[38; 39) 50 WHITESPACE@[38; 39)
46 ITEM_LIST@[39; 41) 51 ITEM_LIST@[39; 41)
47 L_CURLY@[39; 40) 52 L_CURLY@[39; 40)
48 R_CURLY@[40; 41) 53 R_CURLY@[40; 41)
49 WHITESPACE@[41; 42) 54 WHITESPACE@[41; 42)
55 TRAIT_DEF@[42; 100)
56 TRAIT_KW@[42; 47)
57 WHITESPACE@[47; 48)
58 NAME@[48; 49)
59 IDENT@[48; 49) "X"
60 TYPE_PARAM_LIST@[49; 69)
61 L_ANGLE@[49; 50)
62 TYPE_PARAM@[50; 68)
63 NAME@[50; 51)
64 IDENT@[50; 51) "U"
65 COLON@[51; 52)
66 WHITESPACE@[52; 53)
67 TYPE_BOUND_LIST@[53; 68)
68 TYPE_BOUND@[53; 58)
69 PATH_TYPE@[53; 58)
70 PATH@[53; 58)
71 PATH_SEGMENT@[53; 58)
72 NAME_REF@[53; 58)
73 IDENT@[53; 58) "Debug"
74 WHITESPACE@[58; 59)
75 PLUS@[59; 60)
76 WHITESPACE@[60; 61)
77 TYPE_BOUND@[61; 68)
78 PATH_TYPE@[61; 68)
79 PATH@[61; 68)
80 PATH_SEGMENT@[61; 68)
81 NAME_REF@[61; 68)
82 IDENT@[61; 68) "Display"
83 R_ANGLE@[68; 69)
84 COLON@[69; 70)
85 WHITESPACE@[70; 71)
86 TYPE_BOUND_LIST@[71; 83)
87 TYPE_BOUND@[71; 75)
88 PATH_TYPE@[71; 75)
89 PATH@[71; 75)
90 PATH_SEGMENT@[71; 75)
91 NAME_REF@[71; 75)
92 IDENT@[71; 75) "Hash"
93 WHITESPACE@[75; 76)
94 PLUS@[76; 77)
95 WHITESPACE@[77; 78)
96 TYPE_BOUND@[78; 83)
97 PATH_TYPE@[78; 83)
98 PATH@[78; 83)
99 PATH_SEGMENT@[78; 83)
100 NAME_REF@[78; 83)
101 IDENT@[78; 83) "Clone"
102 WHITESPACE@[83; 84)
103 WHERE_CLAUSE@[84; 97)
104 WHERE_KW@[84; 89)
105 WHITESPACE@[89; 90)
106 WHERE_PRED@[90; 97)
107 PATH_TYPE@[90; 91)
108 PATH@[90; 91)
109 PATH_SEGMENT@[90; 91)
110 NAME_REF@[90; 91)
111 IDENT@[90; 91) "U"
112 COLON@[91; 92)
113 WHITESPACE@[92; 93)
114 TYPE_BOUND_LIST@[93; 97)
115 TYPE_BOUND@[93; 97)
116 PATH_TYPE@[93; 97)
117 PATH@[93; 97)
118 PATH_SEGMENT@[93; 97)
119 NAME_REF@[93; 97)
120 IDENT@[93; 97) "Copy"
121 WHITESPACE@[97; 98)
122 ITEM_LIST@[98; 100)
123 L_CURLY@[98; 99)
124 R_CURLY@[99; 100)
125 WHITESPACE@[100; 101)