From 90ed188c148181434e1055b9256107917a0c98eb Mon Sep 17 00:00:00 2001 From: Lee Jeffery Date: Thu, 20 Aug 2015 18:27:53 +0100 Subject: [PATCH] Show variadic args in rustdoc output. --- src/librustdoc/clean/mod.rs | 5 +++++ src/librustdoc/html/format.rs | 6 +++++- src/test/rustdoc/variadic.rs | 14 ++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 src/test/rustdoc/variadic.rs diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index 04b1f8ee1b1d3..c976b7cc6c29d 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -999,6 +999,7 @@ impl Clean for ast::MethodSig { values: inputs.clean(cx), }, output: self.decl.output.clean(cx), + variadic: false, attrs: Vec::new() }; Method { @@ -1032,6 +1033,7 @@ impl Clean for ast::MethodSig { values: inputs.clean(cx), }, output: self.decl.output.clean(cx), + variadic: false, attrs: Vec::new() }; TyMethod { @@ -1098,6 +1100,7 @@ impl Clean for doctree::Function { pub struct FnDecl { pub inputs: Arguments, pub output: FunctionRetTy, + pub variadic: bool, pub attrs: Vec, } @@ -1113,6 +1116,7 @@ impl Clean for ast::FnDecl { values: self.inputs.clean(cx), }, output: self.output.clean(cx), + variadic: self.variadic, attrs: Vec::new() } } @@ -1141,6 +1145,7 @@ impl<'a, 'tcx> Clean for (ast::DefId, &'a ty::PolyFnSig<'tcx>) { FnDecl { output: Return(sig.0.output.clean(cx)), attrs: Vec::new(), + variadic: sig.0.variadic, inputs: Arguments { values: sig.0.inputs.iter().map(|t| { Argument { diff --git a/src/librustdoc/html/format.rs b/src/librustdoc/html/format.rs index 7d86a547e94e9..b50e50ddce6be 100644 --- a/src/librustdoc/html/format.rs +++ b/src/librustdoc/html/format.rs @@ -579,7 +579,11 @@ impl fmt::Display for clean::FunctionRetTy { impl fmt::Display for clean::FnDecl { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { - write!(f, "({args}){arrow}", args = self.inputs, arrow = self.output) + if self.variadic { + write!(f, "({args}, ...){arrow}", args = self.inputs, arrow = self.output) + } else { + write!(f, "({args}){arrow}", args = self.inputs, arrow = self.output) + } } } diff --git a/src/test/rustdoc/variadic.rs b/src/test/rustdoc/variadic.rs new file mode 100644 index 0000000000000..1b60c2a334fa5 --- /dev/null +++ b/src/test/rustdoc/variadic.rs @@ -0,0 +1,14 @@ +// Copyright 2015 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +extern "C" { + // @has variadic/fn.foo.html //pre 'pub unsafe extern fn foo(x: i32, ...)' + pub fn foo(x: i32, ...); +}