aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_syntax/tests/data/parser/inline/ok/0028_impl_trait_type.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/0028_impl_trait_type.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/0028_impl_trait_type.txt')
-rw-r--r--crates/ra_syntax/tests/data/parser/inline/ok/0028_impl_trait_type.txt49
1 files changed, 26 insertions, 23 deletions
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0028_impl_trait_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0028_impl_trait_type.txt
index 3b676fb4c..31dbbe96c 100644
--- a/crates/ra_syntax/tests/data/parser/inline/ok/0028_impl_trait_type.txt
+++ b/crates/ra_syntax/tests/data/parser/inline/ok/0028_impl_trait_type.txt
@@ -10,31 +10,34 @@ SOURCE_FILE@[0; 43)
10 IMPL_TRAIT_TYPE@[9; 41) 10 IMPL_TRAIT_TYPE@[9; 41)
11 IMPL_KW@[9; 13) 11 IMPL_KW@[9; 13)
12 WHITESPACE@[13; 14) 12 WHITESPACE@[13; 14)
13 PATH_TYPE@[14; 41) 13 TYPE_BOUND_LIST@[14; 41)
14 PATH@[14; 36) 14 TYPE_BOUND@[14; 36)
15 PATH_SEGMENT@[14; 36) 15 PATH_TYPE@[14; 36)
16 NAME_REF@[14; 22) 16 PATH@[14; 36)
17 IDENT@[14; 22) "Iterator" 17 PATH_SEGMENT@[14; 36)
18 TYPE_ARG_LIST@[22; 36) 18 NAME_REF@[14; 22)
19 L_ANGLE@[22; 23) 19 IDENT@[14; 22) "Iterator"
20 ASSOC_TYPE_ARG@[23; 35) 20 TYPE_ARG_LIST@[22; 36)
21 NAME_REF@[23; 27) 21 L_ANGLE@[22; 23)
22 IDENT@[23; 27) "Item" 22 ASSOC_TYPE_ARG@[23; 35)
23 EQ@[27; 28) 23 NAME_REF@[23; 27)
24 PATH_TYPE@[28; 35) 24 IDENT@[23; 27) "Item"
25 PATH@[28; 35) 25 EQ@[27; 28)
26 PATH_SEGMENT@[28; 35) 26 PATH_TYPE@[28; 35)
27 NAME_REF@[28; 31) 27 PATH@[28; 35)
28 IDENT@[28; 31) "Foo" 28 PATH_SEGMENT@[28; 35)
29 TYPE_ARG_LIST@[31; 35) 29 NAME_REF@[28; 31)
30 L_ANGLE@[31; 32) 30 IDENT@[28; 31) "Foo"
31 LIFETIME_ARG@[32; 34) 31 TYPE_ARG_LIST@[31; 35)
32 LIFETIME@[32; 34) "'a" 32 L_ANGLE@[31; 32)
33 R_ANGLE@[34; 35) 33 LIFETIME_ARG@[32; 34)
34 R_ANGLE@[35; 36) 34 LIFETIME@[32; 34) "'a"
35 R_ANGLE@[34; 35)
36 R_ANGLE@[35; 36)
35 WHITESPACE@[36; 37) 37 WHITESPACE@[36; 37)
36 PLUS@[37; 38) 38 PLUS@[37; 38)
37 WHITESPACE@[38; 39) 39 WHITESPACE@[38; 39)
38 LIFETIME@[39; 41) "'a" 40 TYPE_BOUND@[39; 41)
41 LIFETIME@[39; 41) "'a"
39 SEMI@[41; 42) 42 SEMI@[41; 42)
40 WHITESPACE@[42; 43) 43 WHITESPACE@[42; 43)