about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2017-05-30 02:38:18 +0000
committerbors <bors@rust-lang.org>2017-05-30 02:38:18 +0000
commit77d096a2bb3f914f33a5daf10bfe855d0011e57e (patch)
tree96a4577b21573283582d040b00e98a4f9837d90b
parent0c4fb24a077b17da1de5b77ad6b9d2c868a7b342 (diff)
parent6b84f7dd5ebcff6a43775a073c984f1b9ea13bcd (diff)
downloadrust-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.rs4
-rw-r--r--src/test/compile-fail/generic-no-mangle.rs10
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() {}