diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/grammar.ron | 3 | ||||
-rw-r--r-- | src/parser/grammar/expressions.rs | 9 | ||||
-rw-r--r-- | src/parser/grammar/mod.rs | 2 | ||||
-rw-r--r-- | src/syntax_kinds/generated.rs | 4 |
4 files changed, 17 insertions, 1 deletions
diff --git a/src/grammar.ron b/src/grammar.ron index 5b8a9219c..f640ccb7b 100644 --- a/src/grammar.ron +++ b/src/grammar.ron | |||
@@ -151,5 +151,8 @@ Grammar( | |||
151 | "LIFETIME_PARAM", | 151 | "LIFETIME_PARAM", |
152 | "TYPE_PARAM_LIST", | 152 | "TYPE_PARAM_LIST", |
153 | "TYPE_ARG_LIST", | 153 | "TYPE_ARG_LIST", |
154 | |||
155 | "PARAM_LIST", | ||
156 | "ARG_LIST", | ||
154 | ] | 157 | ] |
155 | ) | 158 | ) |
diff --git a/src/parser/grammar/expressions.rs b/src/parser/grammar/expressions.rs index 92aaafa3d..7991b1921 100644 --- a/src/parser/grammar/expressions.rs +++ b/src/parser/grammar/expressions.rs | |||
@@ -70,6 +70,13 @@ fn tuple_expr(p: &mut Parser) -> CompletedMarker { | |||
70 | fn call_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker { | 70 | fn call_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker { |
71 | assert!(p.at(L_PAREN)); | 71 | assert!(p.at(L_PAREN)); |
72 | let m = lhs.precede(p); | 72 | let m = lhs.precede(p); |
73 | arg_list(p); | ||
74 | m.complete(p, CALL_EXPR) | ||
75 | } | ||
76 | |||
77 | fn arg_list(p: &mut Parser) { | ||
78 | assert!(p.at(L_PAREN)); | ||
79 | let m = p.start(); | ||
73 | p.bump(); | 80 | p.bump(); |
74 | while !p.at(R_PAREN) && !p.at(EOF) { | 81 | while !p.at(R_PAREN) && !p.at(EOF) { |
75 | expr(p); | 82 | expr(p); |
@@ -78,7 +85,7 @@ fn call_expr(p: &mut Parser, lhs: CompletedMarker) -> CompletedMarker { | |||
78 | } | 85 | } |
79 | } | 86 | } |
80 | p.eat(R_PAREN); | 87 | p.eat(R_PAREN); |
81 | m.complete(p, CALL_EXPR) | 88 | m.complete(p, ARG_LIST); |
82 | } | 89 | } |
83 | 90 | ||
84 | // test path_expr | 91 | // test path_expr |
diff --git a/src/parser/grammar/mod.rs b/src/parser/grammar/mod.rs index 63ad2782e..c2da775a2 100644 --- a/src/parser/grammar/mod.rs +++ b/src/parser/grammar/mod.rs | |||
@@ -99,6 +99,7 @@ fn abi(p: &mut Parser) { | |||
99 | // fn d(x: i32, y: ()) {} | 99 | // fn d(x: i32, y: ()) {} |
100 | fn fn_value_parameters(p: &mut Parser) { | 100 | fn fn_value_parameters(p: &mut Parser) { |
101 | assert!(p.at(L_PAREN)); | 101 | assert!(p.at(L_PAREN)); |
102 | let m = p.start(); | ||
102 | p.bump(); | 103 | p.bump(); |
103 | while !p.at(EOF) && !p.at(R_PAREN) { | 104 | while !p.at(EOF) && !p.at(R_PAREN) { |
104 | value_parameter(p); | 105 | value_parameter(p); |
@@ -107,6 +108,7 @@ fn fn_value_parameters(p: &mut Parser) { | |||
107 | } | 108 | } |
108 | } | 109 | } |
109 | p.expect(R_PAREN); | 110 | p.expect(R_PAREN); |
111 | m.complete(p, PARAM_LIST); | ||
110 | 112 | ||
111 | fn value_parameter(p: &mut Parser) { | 113 | fn value_parameter(p: &mut Parser) { |
112 | let m = p.start(); | 114 | let m = p.start(); |
diff --git a/src/syntax_kinds/generated.rs b/src/syntax_kinds/generated.rs index 1d0f1b724..986df7814 100644 --- a/src/syntax_kinds/generated.rs +++ b/src/syntax_kinds/generated.rs | |||
@@ -140,6 +140,8 @@ pub enum SyntaxKind { | |||
140 | LIFETIME_PARAM, | 140 | LIFETIME_PARAM, |
141 | TYPE_PARAM_LIST, | 141 | TYPE_PARAM_LIST, |
142 | TYPE_ARG_LIST, | 142 | TYPE_ARG_LIST, |
143 | PARAM_LIST, | ||
144 | ARG_LIST, | ||
143 | // Technical SyntaxKinds: they appear temporally during parsing, | 145 | // Technical SyntaxKinds: they appear temporally during parsing, |
144 | // but never end up in the final tree | 146 | // but never end up in the final tree |
145 | #[doc(hidden)] | 147 | #[doc(hidden)] |
@@ -287,6 +289,8 @@ impl SyntaxKind { | |||
287 | LIFETIME_PARAM => &SyntaxInfo { name: "LIFETIME_PARAM" }, | 289 | LIFETIME_PARAM => &SyntaxInfo { name: "LIFETIME_PARAM" }, |
288 | TYPE_PARAM_LIST => &SyntaxInfo { name: "TYPE_PARAM_LIST" }, | 290 | TYPE_PARAM_LIST => &SyntaxInfo { name: "TYPE_PARAM_LIST" }, |
289 | TYPE_ARG_LIST => &SyntaxInfo { name: "TYPE_ARG_LIST" }, | 291 | TYPE_ARG_LIST => &SyntaxInfo { name: "TYPE_ARG_LIST" }, |
292 | PARAM_LIST => &SyntaxInfo { name: "PARAM_LIST" }, | ||
293 | ARG_LIST => &SyntaxInfo { name: "ARG_LIST" }, | ||
290 | TOMBSTONE => &SyntaxInfo { name: "TOMBSTONE" }, | 294 | TOMBSTONE => &SyntaxInfo { name: "TOMBSTONE" }, |
291 | EOF => &SyntaxInfo { name: "EOF" }, | 295 | EOF => &SyntaxInfo { name: "EOF" }, |
292 | } | 296 | } |