]> git.lizzy.rs Git - rust.git/blob - src/test/ui/issues/issue-30079.rs
Auto merge of #54720 - davidtwco:issue-51191, r=nikomatsakis
[rust.git] / src / test / ui / issues / issue-30079.rs
1 // Copyright 2016 The Rust Project Developers. See the COPYRIGHT
2 // file at the top-level directory of this distribution and at
3 // http://rust-lang.org/COPYRIGHT.
4 //
5 // Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6 // http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8 // option. This file may not be copied, modified, or distributed
9 // except according to those terms.
10
11 struct SemiPriv;
12
13 mod m1 {
14     struct Priv;
15     impl ::SemiPriv {
16         pub fn f(_: Priv) {} //~ WARN private type `m1::Priv` in public interface
17         //~^ WARNING hard error
18     }
19
20     impl Priv {
21         pub fn f(_: Priv) {} // ok
22     }
23 }
24
25 mod m2 {
26     struct Priv;
27     impl ::std::ops::Deref for ::SemiPriv {
28         type Target = Priv; //~ ERROR private type `m2::Priv` in public interface
29         fn deref(&self) -> &Self::Target { unimplemented!() }
30     }
31
32     impl ::std::ops::Deref for Priv {
33         type Target = Priv; // ok
34         fn deref(&self) -> &Self::Target { unimplemented!() }
35     }
36 }
37
38 trait SemiPrivTrait {
39     type Assoc;
40 }
41
42 mod m3 {
43     struct Priv;
44     impl ::SemiPrivTrait for () {
45         type Assoc = Priv; //~ ERROR private type `m3::Priv` in public interface
46     }
47 }
48
49 fn main() {}