aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.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/0048_path_type_with_bounds.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/0048_path_type_with_bounds.txt')
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.txt65
1 files changed, 55 insertions, 10 deletions
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.txt
index 911a27ea1..6faf4d3b9 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0048_path_type_with_bounds.txt
@@ -1,4 +1,4 @@
1SOURCE_FILE@[0; 27) 1SOURCE_FILE@[0; 58)
2 FN_DEF@[0; 26) 2 FN_DEF@[0; 26)
3 FN_KW@[0; 2) 3 FN_KW@[0; 2)
4 WHITESPACE@[2; 3) 4 WHITESPACE@[2; 3)
@@ -19,18 +19,63 @@ SOURCE_FILE@[0; 27)
19 TYPE_ARG_LIST@[15; 23) 19 TYPE_ARG_LIST@[15; 23)
20 L_ANGLE@[15; 16) 20 L_ANGLE@[15; 16)
21 TYPE_ARG@[16; 22) 21 TYPE_ARG@[16; 22)
22 PATH_TYPE@[16; 22) 22 DYN_TRAIT_TYPE@[16; 22)
23 PATH@[16; 17) 23 TYPE_BOUND_LIST@[16; 22)
24 PATH_SEGMENT@[16; 17) 24 TYPE_BOUND@[16; 17)
25 NAME_REF@[16; 17) 25 PATH_TYPE@[16; 17)
26 IDENT@[16; 17) "T" 26 PATH@[16; 17)
27 WHITESPACE@[17; 18) 27 PATH_SEGMENT@[16; 17)
28 PLUS@[18; 19) 28 NAME_REF@[16; 17)
29 WHITESPACE@[19; 20) 29 IDENT@[16; 17) "T"
30 LIFETIME@[20; 22) "'f" 30 WHITESPACE@[17; 18)
31 PLUS@[18; 19)
32 WHITESPACE@[19; 20)
33 TYPE_BOUND@[20; 22)
34 LIFETIME@[20; 22) "'f"
31 R_ANGLE@[22; 23) 35 R_ANGLE@[22; 23)
32 WHITESPACE@[23; 24) 36 WHITESPACE@[23; 24)
33 BLOCK@[24; 26) 37 BLOCK@[24; 26)
34 L_CURLY@[24; 25) 38 L_CURLY@[24; 25)
35 R_CURLY@[25; 26) 39 R_CURLY@[25; 26)
36 WHITESPACE@[26; 27) 40 WHITESPACE@[26; 27)
41 FN_DEF@[27; 57)
42 FN_KW@[27; 29)
43 WHITESPACE@[29; 30)
44 NAME@[30; 33)
45 IDENT@[30; 33) "foo"
46 PARAM_LIST@[33; 35)
47 L_PAREN@[33; 34)
48 R_PAREN@[34; 35)
49 WHITESPACE@[35; 36)
50 RET_TYPE@[36; 54)
51 THIN_ARROW@[36; 38)
52 WHITESPACE@[38; 39)
53 PATH_TYPE@[39; 54)
54 PATH@[39; 54)
55 PATH_SEGMENT@[39; 54)
56 NAME_REF@[39; 42)
57 IDENT@[39; 42) "Box"
58 TYPE_ARG_LIST@[42; 54)
59 L_ANGLE@[42; 43)
60 TYPE_ARG@[43; 53)
61 DYN_TRAIT_TYPE@[43; 53)
62 DYN_KW@[43; 46)
63 WHITESPACE@[46; 47)
64 TYPE_BOUND_LIST@[47; 53)
65 TYPE_BOUND@[47; 48)
66 PATH_TYPE@[47; 48)
67 PATH@[47; 48)
68 PATH_SEGMENT@[47; 48)
69 NAME_REF@[47; 48)
70 IDENT@[47; 48) "T"
71 WHITESPACE@[48; 49)
72 PLUS@[49; 50)
73 WHITESPACE@[50; 51)
74 TYPE_BOUND@[51; 53)
75 LIFETIME@[51; 53) "'f"
76 R_ANGLE@[53; 54)
77 WHITESPACE@[54; 55)
78 BLOCK@[55; 57)
79 L_CURLY@[55; 56)
80 R_CURLY@[56; 57)
81 WHITESPACE@[57; 58)