diff options
| author | kennytm <kennytm@gmail.com> | 2019-03-03 13:56:57 +0800 |
|---|---|---|
| committer | kennytm <kennytm@gmail.com> | 2019-03-03 13:56:57 +0800 |
| commit | 946e670bce9f1e123dffce485fc979a96edbb0b8 (patch) | |
| tree | ec62a39d585d23dc5f6b7aa794c4f11e89b0af28 | |
| parent | c835a0a94db7e68a57b6449497f74cf2f74c0256 (diff) | |
| parent | 379cd29d1c9ce06aa48fdd49208cfd7ffd3e5c07 (diff) | |
| download | rust-946e670bce9f1e123dffce485fc979a96edbb0b8.tar.gz rust-946e670bce9f1e123dffce485fc979a96edbb0b8.zip | |
Rollup merge of #58865 - dlrobertson:fix-varargs, r=alexreg
Fix C-variadic function printing There is no longer a need to append the string `", ..."` to a functions args as `...` is parsed as an argument and will appear in the functions arguments. Fixes: #58853
| -rw-r--r-- | src/libsyntax/print/pprust.rs | 3 | ||||
| -rw-r--r-- | src/test/pretty/fn-variadic.rs | 15 |
2 files changed, 15 insertions, 3 deletions
diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 942bd969391..49e3fad4af0 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -2814,9 +2814,6 @@ impl<'a> State<'a> { -> io::Result<()> { self.popen()?; self.commasep(Inconsistent, &decl.inputs, |s, arg| s.print_arg(arg, false))?; - if decl.c_variadic { - self.s.word(", ...")?; - } self.pclose()?; self.print_fn_output(decl) diff --git a/src/test/pretty/fn-variadic.rs b/src/test/pretty/fn-variadic.rs new file mode 100644 index 00000000000..d499be42460 --- /dev/null +++ b/src/test/pretty/fn-variadic.rs @@ -0,0 +1,15 @@ +// Check that `fn foo(x: i32, ...)` does not print as `fn foo(x: i32, ..., ...)`. +// See issue #58853. + +// pp-exact +#![feature(c_variadic)] + +extern "C" { + pub fn foo(x: i32, ...); +} + +pub unsafe extern "C" fn bar(_: i32, mut ap: ...) -> usize { + ap.arg::<usize>() +} + +fn main() { } |
