summaryrefslogtreecommitdiffstats
path: root/src/test/ui/pub/issue-33174-restricted-type-in-public-interface.rs
blob: 67f888c5e940283f8f04f8dbd3e339a0bb6c71c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#![allow(non_camel_case_types)] // genus is always capitalized

pub(crate) struct Snail;
//~^ NOTE `Snail` declared as private

mod sea {
    pub(super) struct Turtle;
    //~^ NOTE `Turtle` declared as crate-private
}

struct Tortoise;
//~^ NOTE `Tortoise` declared as private

pub struct Shell<T> {
    pub(crate) creature: T,
}

pub type Helix_pomatia = Shell<Snail>;
//~^ ERROR private type `Snail` in public interface
//~| NOTE can't leak private type
pub type Dermochelys_coriacea = Shell<sea::Turtle>;
//~^ ERROR crate-private type `Turtle` in public interface
//~| NOTE can't leak crate-private type
pub type Testudo_graeca = Shell<Tortoise>;
//~^ ERROR private type `Tortoise` in public interface
//~| NOTE can't leak private type

fn main() {}