Skip to content

Commit 3bf650f

Browse files
committed
add failing test, bless incorrect output
1 parent bc4376f commit 3bf650f

File tree

4 files changed

+87
-0
lines changed

4 files changed

+87
-0
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
pub trait A {
2+
fn foo() {}
3+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
//@ aux-crate:priv:private_dep=private-dep.rs
2+
//@ compile-flags: -Zunstable-options
3+
4+
extern crate private_dep;
5+
use private_dep::A;
6+
7+
pub struct B;
8+
9+
impl A for B {
10+
fn foo() {}
11+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Don't suggest importing a function from a private dependency.
2+
// Issues: #138191, #142676
3+
4+
// Avoid suggesting traits from std-private deps
5+
//@ forbid-output: compiler_builtins
6+
//@ forbid-output: object
7+
8+
// Check a custom trait to withstand changes in above crates
9+
//@ aux-crate:public_dep=public-dep.rs
10+
//@ compile-flags: -Zunstable-options
11+
//@ forbid-output: private_dep
12+
13+
struct VecReader(Vec<u8>);
14+
15+
impl std::io::Read for VecReader {
16+
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
17+
self.0.read(buf)
18+
//~^ ERROR no method named `read` found for struct `Vec<u8>`
19+
}
20+
}
21+
22+
extern crate public_dep;
23+
use public_dep::B;
24+
25+
fn main() {
26+
let _ = u8::cast_from_lossy(9);
27+
//~^ ERROR no function or associated item named `cast_from_lossy` found for type `u8`
28+
let _ = B::foo();
29+
//~^ ERROR no function or associated item named `foo` found for struct `B`
30+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
error[E0599]: no method named `read` found for struct `Vec<u8>` in the current scope
2+
--> $DIR/dont-suggest-private-dependencies.rs:17:16
3+
|
4+
LL | self.0.read(buf)
5+
| ^^^^
6+
|
7+
= help: items from traits can only be used if the trait is in scope
8+
help: trait `ReadRef` which provides `read` is implemented but not in scope; perhaps you want to import it
9+
|
10+
LL + use object::read::read_ref::ReadRef;
11+
|
12+
help: there is a method `read_at` with a similar name
13+
|
14+
LL | self.0.read_at(buf)
15+
| +++
16+
17+
error[E0599]: no function or associated item named `cast_from_lossy` found for type `u8` in the current scope
18+
--> $DIR/dont-suggest-private-dependencies.rs:26:17
19+
|
20+
LL | let _ = u8::cast_from_lossy(9);
21+
| ^^^^^^^^^^^^^^^ function or associated item not found in `u8`
22+
|
23+
= help: items from traits can only be used if the trait is in scope
24+
help: trait `CastFrom` which provides `cast_from_lossy` is implemented but not in scope; perhaps you want to import it
25+
|
26+
LL + use compiler_builtins::math::libm_math::support::int_traits::CastFrom;
27+
|
28+
29+
error[E0599]: no function or associated item named `foo` found for struct `B` in the current scope
30+
--> $DIR/dont-suggest-private-dependencies.rs:28:16
31+
|
32+
LL | let _ = B::foo();
33+
| ^^^ function or associated item not found in `B`
34+
|
35+
= help: items from traits can only be used if the trait is in scope
36+
help: trait `A` which provides `foo` is implemented but not in scope; perhaps you want to import it
37+
|
38+
LL + use private_dep::A;
39+
|
40+
41+
error: aborting due to 3 previous errors
42+
43+
For more information about this error, try `rustc --explain E0599`.

0 commit comments

Comments
 (0)