diff options
| author | bors <bors@rust-lang.org> | 2017-05-30 02:38:18 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2017-05-30 02:38:18 +0000 |
| commit | 77d096a2bb3f914f33a5daf10bfe855d0011e57e (patch) | |
| tree | 96a4577b21573283582d040b00e98a4f9837d90b | |
| parent | 0c4fb24a077b17da1de5b77ad6b9d2c868a7b342 (diff) | |
| parent | 6b84f7dd5ebcff6a43775a073c984f1b9ea13bcd (diff) | |
| download | rust-77d096a2bb3f914f33a5daf10bfe855d0011e57e.tar.gz rust-77d096a2bb3f914f33a5daf10bfe855d0011e57e.zip | |
Auto merge of #42282 - Mark-Simulacrum:issue-40342, r=arielb1
Don't warn on lifetime generic no_mangle functions. Fixes #40342.
| -rw-r--r-- | src/librustc_lint/builtin.rs | 4 | ||||
| -rw-r--r-- | src/test/compile-fail/generic-no-mangle.rs | 10 |
2 files changed, 10 insertions, 4 deletions
diff --git a/src/librustc_lint/builtin.rs b/src/librustc_lint/builtin.rs index 58c53c5b4b9..f1d014692a4 100644 --- a/src/librustc_lint/builtin.rs +++ b/src/librustc_lint/builtin.rs @@ -1075,10 +1075,10 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for InvalidNoMangleItems { it.name); cx.span_lint(PRIVATE_NO_MANGLE_FNS, it.span, &msg); } - if generics.is_parameterized() { + if generics.is_type_parameterized() { cx.span_lint(NO_MANGLE_GENERIC_ITEMS, it.span, - "generic functions must be mangled"); + "functions generic over types must be mangled"); } } } diff --git a/src/test/compile-fail/generic-no-mangle.rs b/src/test/compile-fail/generic-no-mangle.rs index 2cb73cf2ef7..2b4c94d281f 100644 --- a/src/test/compile-fail/generic-no-mangle.rs +++ b/src/test/compile-fail/generic-no-mangle.rs @@ -11,9 +11,15 @@ #![deny(no_mangle_generic_items)] #[no_mangle] -pub fn foo<T>() {} //~ ERROR generic functions must be mangled +pub fn foo<T>() {} //~ ERROR functions generic over types must be mangled #[no_mangle] -pub extern fn bar<T>() {} //~ ERROR generic functions must be mangled +pub extern fn bar<T>() {} //~ ERROR functions generic over types must be mangled + +#[no_mangle] +pub fn baz(x: &i32) -> &i32 { x } + +#[no_mangle] +pub fn qux<'a>(x: &'a i32) -> &i32 { x } fn main() {} |
