aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/tests/data/parser/inline/ok/0056_where_clause.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/0056_where_clause.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/0056_where_clause.txt')
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0056_where_clause.txt38
1 files changed, 23 insertions, 15 deletions
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0056_where_clause.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0056_where_clause.txt
index 68485dc0b..e04b61eb3 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0056_where_clause.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0056_where_clause.txt
@@ -30,22 +30,26 @@ SOURCE_FILE@[0; 116)
30 IDENT@[34; 35) "T" 30 IDENT@[34; 35) "T"
31 COLON@[35; 36) 31 COLON@[35; 36)
32 WHITESPACE@[36; 37) 32 WHITESPACE@[36; 37)
33 PATH_TYPE@[37; 59) 33 TYPE_BOUND_LIST@[37; 59)
34 PATH@[37; 42) 34 TYPE_BOUND@[37; 42)
35 PATH_SEGMENT@[37; 42) 35 PATH_TYPE@[37; 42)
36 NAME_REF@[37; 42) 36 PATH@[37; 42)
37 IDENT@[37; 42) "Clone" 37 PATH_SEGMENT@[37; 42)
38 NAME_REF@[37; 42)
39 IDENT@[37; 42) "Clone"
38 WHITESPACE@[42; 43) 40 WHITESPACE@[42; 43)
39 PLUS@[43; 44) 41 PLUS@[43; 44)
40 WHITESPACE@[44; 45) 42 WHITESPACE@[44; 45)
41 PATH_TYPE@[45; 59) 43 TYPE_BOUND@[45; 49)
42 PATH@[45; 49) 44 PATH_TYPE@[45; 49)
43 PATH_SEGMENT@[45; 49) 45 PATH@[45; 49)
44 NAME_REF@[45; 49) 46 PATH_SEGMENT@[45; 49)
45 IDENT@[45; 49) "Copy" 47 NAME_REF@[45; 49)
46 WHITESPACE@[49; 50) 48 IDENT@[45; 49) "Copy"
47 PLUS@[50; 51) 49 WHITESPACE@[49; 50)
48 WHITESPACE@[51; 52) 50 PLUS@[50; 51)
51 WHITESPACE@[51; 52)
52 TYPE_BOUND@[52; 59)
49 LIFETIME@[52; 59) "'static" 53 LIFETIME@[52; 59) "'static"
50 COMMA@[59; 60) 54 COMMA@[59; 60)
51 WHITESPACE@[60; 64) 55 WHITESPACE@[60; 64)
@@ -62,7 +66,9 @@ SOURCE_FILE@[0; 116)
62 IDENT@[74; 78) "Item" 66 IDENT@[74; 78) "Item"
63 COLON@[78; 79) 67 COLON@[78; 79)
64 WHITESPACE@[79; 80) 68 WHITESPACE@[79; 80)
65 LIFETIME@[80; 82) "'a" 69 TYPE_BOUND_LIST@[80; 82)
70 TYPE_BOUND@[80; 82)
71 LIFETIME@[80; 82) "'a"
66 COMMA@[82; 83) 72 COMMA@[82; 83)
67 WHITESPACE@[83; 87) 73 WHITESPACE@[83; 87)
68 WHERE_PRED@[87; 112) 74 WHERE_PRED@[87; 112)
@@ -91,7 +97,9 @@ SOURCE_FILE@[0; 116)
91 IDENT@[104; 108) "Item" 97 IDENT@[104; 108) "Item"
92 COLON@[108; 109) 98 COLON@[108; 109)
93 WHITESPACE@[109; 110) 99 WHITESPACE@[109; 110)
94 LIFETIME@[110; 112) "'a" 100 TYPE_BOUND_LIST@[110; 112)
101 TYPE_BOUND@[110; 112)
102 LIFETIME@[110; 112) "'a"
95 WHITESPACE@[112; 113) 103 WHITESPACE@[112; 113)
96 BLOCK@[113; 115) 104 BLOCK@[113; 115)
97 L_CURLY@[113; 114) 105 L_CURLY@[113; 114)