diff options
| author | Andy Russell <arussell123@gmail.com> | 2022-03-04 16:24:13 -0500 |
|---|---|---|
| committer | Andy Russell <arussell123@gmail.com> | 2022-03-04 16:44:31 -0500 |
| commit | 49fab593ad7d91e82ec9b4a5642ec736045a365c (patch) | |
| tree | ed2cd3c5658354a819b7bc88a7770630134885ea | |
| parent | 908c17bfa6a55fc78bb9255e02bd53eebf0386dd (diff) | |
| download | rust-49fab593ad7d91e82ec9b4a5642ec736045a365c.tar.gz rust-49fab593ad7d91e82ec9b4a5642ec736045a365c.zip | |
show variadic args in hover function signature
| -rw-r--r-- | crates/hir/src/display.rs | 5 | ||||
| -rw-r--r-- | crates/ide/src/hover/tests.rs | 24 |
2 files changed, 29 insertions, 0 deletions
diff --git a/crates/hir/src/display.rs b/crates/hir/src/display.rs index d411b9d71b1..b7ea42236ee 100644 --- a/crates/hir/src/display.rs +++ b/crates/hir/src/display.rs @@ -86,6 +86,11 @@ impl HirDisplay for Function { // The former will ignore lifetime arguments currently. type_ref.hir_fmt(f)?; } + + if data.is_varargs() { + write!(f, ", ...")?; + } + write!(f, ")")?; // `FunctionData::ret_type` will be `::core::future::Future<Output = ...>` for async fns. diff --git a/crates/ide/src/hover/tests.rs b/crates/ide/src/hover/tests.rs index 9d516fdd6fc..e7fad48080d 100644 --- a/crates/ide/src/hover/tests.rs +++ b/crates/ide/src/hover/tests.rs @@ -1758,6 +1758,30 @@ fn foo() { let bar = Bar; bar.fo$0o(); } } #[test] +fn test_hover_variadic_function() { + check( + r#" +extern "C" { + pub fn foo(bar: i32, ...) -> i32; +} + +fn main() { let foo_test = unsafe { fo$0o(1, 2, 3); } } +"#, + expect![[r#" + *foo* + + ```rust + test + ``` + + ```rust + pub unsafe fn foo(bar: i32, ...) -> i32 + ``` + "#]], + ); +} + +#[test] fn test_hover_trait_has_impl_action() { check_actions( r#"trait foo$0() {}"#, |
