From a99b1db49f9040f2aec9e72b2c68ec8153210b49 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Mon, 4 Mar 2019 14:34:59 +0300 Subject: allow vararg functions --- crates/ra_parser/src/grammar/params.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'crates/ra_parser/src') diff --git a/crates/ra_parser/src/grammar/params.rs b/crates/ra_parser/src/grammar/params.rs index 185386569..a70f067f9 100644 --- a/crates/ra_parser/src/grammar/params.rs +++ b/crates/ra_parser/src/grammar/params.rs @@ -43,7 +43,7 @@ fn list_(p: &mut Parser, flavor: Flavor) { if flavor.type_required() { opt_self_param(p); } - while !p.at(EOF) && !p.at(ket) { + while !p.at(EOF) && !p.at(ket) && !(flavor == Flavor::Normal && p.at(DOTDOTDOT)) { if !p.at_ts(VALUE_PARAMETER_FIRST) { p.error("expected value parameter"); break; @@ -53,6 +53,11 @@ fn list_(p: &mut Parser, flavor: Flavor) { p.expect(COMMA); } } + // test param_list_vararg + // extern "C" { fn printf(format: *const i8, ...) -> i32; } + if flavor == Flavor::Normal { + p.eat(DOTDOTDOT); + } p.expect(ket); m.complete(p, PARAM_LIST); } -- cgit v1.2.3