2018-07-28 17:34:52 +02:00
|
|
|
#![warn(clippy::missing_inline_in_public_items)]
|
2018-07-04 16:39:52 +02:00
|
|
|
#![crate_type = "dylib"]
|
2018-07-04 10:51:04 +02:00
|
|
|
// When denying at the crate level, be sure to not get random warnings from the
|
|
|
|
// injected intrinsics by the compiler.
|
|
|
|
#![allow(dead_code, non_snake_case)]
|
|
|
|
|
|
|
|
type Typedef = String;
|
|
|
|
pub type PubTypedef = String;
|
|
|
|
|
|
|
|
struct Foo {} // ok
|
2018-12-09 23:26:16 +01:00
|
|
|
pub struct PubFoo {} // ok
|
2018-07-04 10:51:04 +02:00
|
|
|
enum FooE {} // ok
|
|
|
|
pub enum PubFooE {} // ok
|
|
|
|
|
|
|
|
mod module {} // ok
|
|
|
|
pub mod pub_module {} // ok
|
|
|
|
|
|
|
|
fn foo() {}
|
|
|
|
pub fn pub_foo() {} // missing #[inline]
|
2018-12-09 23:26:16 +01:00
|
|
|
#[inline]
|
|
|
|
pub fn pub_foo_inline() {} // ok
|
|
|
|
#[inline(always)]
|
|
|
|
pub fn pub_foo_inline_always() {} // ok
|
2018-07-04 10:51:04 +02:00
|
|
|
|
2018-07-28 17:34:52 +02:00
|
|
|
#[allow(clippy::missing_inline_in_public_items)]
|
2018-07-04 10:51:04 +02:00
|
|
|
pub fn pub_foo_no_inline() {}
|
|
|
|
|
|
|
|
trait Bar {
|
|
|
|
fn Bar_a(); // ok
|
|
|
|
fn Bar_b() {} // ok
|
|
|
|
}
|
|
|
|
|
|
|
|
pub trait PubBar {
|
|
|
|
fn PubBar_a(); // ok
|
|
|
|
fn PubBar_b() {} // missing #[inline]
|
2018-12-09 23:26:16 +01:00
|
|
|
#[inline]
|
|
|
|
fn PubBar_c() {} // ok
|
2018-07-04 10:51:04 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
// none of these need inline because Foo is not exported
|
|
|
|
impl PubBar for Foo {
|
|
|
|
fn PubBar_a() {} // ok
|
|
|
|
fn PubBar_b() {} // ok
|
|
|
|
fn PubBar_c() {} // ok
|
|
|
|
}
|
|
|
|
|
|
|
|
// all of these need inline because PubFoo is exported
|
|
|
|
impl PubBar for PubFoo {
|
|
|
|
fn PubBar_a() {} // missing #[inline]
|
|
|
|
fn PubBar_b() {} // missing #[inline]
|
|
|
|
fn PubBar_c() {} // missing #[inline]
|
|
|
|
}
|
|
|
|
|
|
|
|
// do not need inline because Foo is not exported
|
|
|
|
impl Foo {
|
|
|
|
fn FooImpl() {} // ok
|
|
|
|
}
|
|
|
|
|
|
|
|
// need inline because PubFoo is exported
|
|
|
|
impl PubFoo {
|
|
|
|
pub fn PubFooImpl() {} // missing #[inline]
|
|
|
|
}
|
2019-12-01 13:26:33 +01:00
|
|
|
|
|
|
|
// do not lint this since users cannot control the external code
|
|
|
|
#[derive(Debug)]
|
|
|
|
pub struct S {}
|