diff options
author | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-03-31 10:11:48 +0100 |
---|---|---|
committer | bors[bot] <bors[bot]@users.noreply.github.com> | 2019-03-31 10:11:48 +0100 |
commit | c5ca49678f129045e59438df279829902034ec71 (patch) | |
tree | 3fd54185e0c064fbd6f718ac345064ce9c559efb /crates/ra_syntax/tests/data/parser/inline/ok/0081_for_type.txt | |
parent | 23dd53eb35ff50508d0c0fc5878a55754b12d381 (diff) | |
parent | 55dcdb7d094f473c73f87ecf997b24f8e35f2a5e (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/0081_for_type.txt')
-rw-r--r-- | crates/ra_syntax/tests/data/parser/inline/ok/0081_for_type.txt | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/crates/ra_syntax/tests/data/parser/inline/ok/0081_for_type.txt b/crates/ra_syntax/tests/data/parser/inline/ok/0081_for_type.txt index 568f61fb2..36c856cd7 100644 --- a/crates/ra_syntax/tests/data/parser/inline/ok/0081_for_type.txt +++ b/crates/ra_syntax/tests/data/parser/inline/ok/0081_for_type.txt | |||
@@ -80,11 +80,13 @@ SOURCE_FILE@[0; 135) | |||
80 | IDENT@[65; 66) "T" | 80 | IDENT@[65; 66) "T" |
81 | COLON@[66; 67) | 81 | COLON@[66; 67) |
82 | WHITESPACE@[67; 68) | 82 | WHITESPACE@[67; 68) |
83 | PATH_TYPE@[68; 76) | 83 | TYPE_BOUND_LIST@[68; 76) |
84 | PATH@[68; 76) | 84 | TYPE_BOUND@[68; 76) |
85 | PATH_SEGMENT@[68; 76) | 85 | PATH_TYPE@[68; 76) |
86 | NAME_REF@[68; 76) | 86 | PATH@[68; 76) |
87 | IDENT@[68; 76) "Iterator" | 87 | PATH_SEGMENT@[68; 76) |
88 | NAME_REF@[68; 76) | ||
89 | IDENT@[68; 76) "Iterator" | ||
88 | WHITESPACE@[76; 77) | 90 | WHITESPACE@[76; 77) |
89 | BLOCK@[77; 79) | 91 | BLOCK@[77; 79) |
90 | L_CURLY@[77; 78) | 92 | L_CURLY@[77; 78) |
@@ -143,11 +145,13 @@ SOURCE_FILE@[0; 135) | |||
143 | IDENT@[120; 121) "T" | 145 | IDENT@[120; 121) "T" |
144 | COLON@[121; 122) | 146 | COLON@[121; 122) |
145 | WHITESPACE@[122; 123) | 147 | WHITESPACE@[122; 123) |
146 | PATH_TYPE@[123; 131) | 148 | TYPE_BOUND_LIST@[123; 131) |
147 | PATH@[123; 131) | 149 | TYPE_BOUND@[123; 131) |
148 | PATH_SEGMENT@[123; 131) | 150 | PATH_TYPE@[123; 131) |
149 | NAME_REF@[123; 131) | 151 | PATH@[123; 131) |
150 | IDENT@[123; 131) "Iterator" | 152 | PATH_SEGMENT@[123; 131) |
153 | NAME_REF@[123; 131) | ||
154 | IDENT@[123; 131) "Iterator" | ||
151 | WHITESPACE@[131; 132) | 155 | WHITESPACE@[131; 132) |
152 | BLOCK@[132; 134) | 156 | BLOCK@[132; 134) |
153 | L_CURLY@[132; 133) | 157 | L_CURLY@[132; 133) |