aboutsummaryrefslogtreecommitdiff
path: root/src/parser/grammar/type_args.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/parser/grammar/type_args.rs')
-rw-r--r--src/parser/grammar/type_args.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/parser/grammar/type_args.rs b/src/parser/grammar/type_args.rs
new file mode 100644
index 000000000..20e75b4b0
--- /dev/null
+++ b/src/parser/grammar/type_args.rs
@@ -0,0 +1,26 @@
1use super::*;
2
3pub(super) fn list(p: &mut Parser, colon_colon_required: bool) {
4 let m;
5 match (colon_colon_required, p.nth(0), p.nth(1)) {
6 (_, COLONCOLON, L_ANGLE) => {
7 m = p.start();
8 p.bump();
9 p.bump();
10 }
11 (false, L_ANGLE, _) => {
12 m = p.start();
13 p.bump();
14 }
15 _ => return
16 };
17
18 while !p.at(EOF) && !p.at(R_ANGLE) {
19 types::type_(p);
20 if !p.at(R_ANGLE) && !p.expect(COMMA) {
21 break;
22 }
23 }
24 p.expect(R_ANGLE);
25 m.complete(p, TYPE_ARG_LIST);
26}