diff options
| author | bors <bors@rust-lang.org> | 2023-01-02 04:32:39 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-01-02 04:32:39 +0000 |
| commit | c5cb156caa27655bc8dcf135de4d026ac4b25a4a (patch) | |
| tree | 65c7910333ba35dbd1fa6261eaa0bd6ae0fc090c /src | |
| parent | ee11bfd8a189462713ea1ede36f4796575ddf894 (diff) | |
| parent | 4cb9030a66efd6c7c10cbc7b55264c805b6dfcfd (diff) | |
| download | rust-c5cb156caa27655bc8dcf135de4d026ac4b25a4a.tar.gz rust-c5cb156caa27655bc8dcf135de4d026ac4b25a4a.zip | |
Auto merge of #106358 - TroyNeubauer:improve-foreign-orphan-error, r=estebank
Implement fix for #67535 Implements a fix for #67535 r? `@estebank`
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/ui/issues/issue-67535.rs | 22 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-67535.stderr | 39 | ||||
| -rw-r--r-- | src/tools/tidy/src/ui_tests.rs | 2 |
3 files changed, 62 insertions, 1 deletions
diff --git a/src/test/ui/issues/issue-67535.rs b/src/test/ui/issues/issue-67535.rs new file mode 100644 index 00000000000..24f50621310 --- /dev/null +++ b/src/test/ui/issues/issue-67535.rs @@ -0,0 +1,22 @@ +fn main() {} + +impl std::ops::AddAssign for () { + //~^ ERROR only traits defined in the current crate can be implemented for arbitrary types + fn add_assign(&self, other: ()) -> () { + () + } +} + +impl std::ops::AddAssign for [(); 1] { + //~^ ERROR only traits defined in the current crate can be implemented for arbitrary types + fn add_assign(&self, other: [(); 1]) -> [(); 1] { + [()] + } +} + +impl std::ops::AddAssign for &[u8] { + //~^ ERROR only traits defined in the current crate can be implemented for arbitrary types + fn add_assign(&self, other: &[u8]) -> &[u8] { + self + } +} diff --git a/src/test/ui/issues/issue-67535.stderr b/src/test/ui/issues/issue-67535.stderr new file mode 100644 index 00000000000..4d7a02a5096 --- /dev/null +++ b/src/test/ui/issues/issue-67535.stderr @@ -0,0 +1,39 @@ +error[E0117]: only traits defined in the current crate can be implemented for arbitrary types + --> $DIR/issue-67535.rs:3:1 + | +LL | impl std::ops::AddAssign for () { + | ^^^^^-------------------^^^^^-- + | | | | + | | | this is not defined in the current crate because tuples are always foreign + | | this is not defined in the current crate because this is a foreign trait + | impl doesn't use only types from inside the current crate + | + = note: define and implement a trait or new type instead + +error[E0117]: only traits defined in the current crate can be implemented for arbitrary types + --> $DIR/issue-67535.rs:10:1 + | +LL | impl std::ops::AddAssign for [(); 1] { + | ^^^^^-------------------^^^^^------- + | | | | + | | | this is not defined in the current crate because arrays are always foreign + | | this is not defined in the current crate because this is a foreign trait + | impl doesn't use only types from inside the current crate + | + = note: define and implement a trait or new type instead + +error[E0117]: only traits defined in the current crate can be implemented for arbitrary types + --> $DIR/issue-67535.rs:17:1 + | +LL | impl std::ops::AddAssign for &[u8] { + | ^^^^^-------------------^^^^^----- + | | | | + | | | this is not defined in the current crate because slices are always foreign + | | this is not defined in the current crate because this is a foreign trait + | impl doesn't use only types from inside the current crate + | + = note: define and implement a trait or new type instead + +error: aborting due to 3 previous errors + +For more information about this error, try `rustc --explain E0117`. diff --git a/src/tools/tidy/src/ui_tests.rs b/src/tools/tidy/src/ui_tests.rs index f746bdeffd7..070e72437be 100644 --- a/src/tools/tidy/src/ui_tests.rs +++ b/src/tools/tidy/src/ui_tests.rs @@ -10,7 +10,7 @@ use std::path::Path; const ENTRY_LIMIT: usize = 1000; // FIXME: The following limits should be reduced eventually. const ROOT_ENTRY_LIMIT: usize = 939; -const ISSUES_ENTRY_LIMIT: usize = 2020; +const ISSUES_ENTRY_LIMIT: usize = 2050; fn check_entries(path: &Path, bad: &mut bool) { for dir in Walk::new(&path.join("test/ui")) { |
