diff options
| author | bors <bors@rust-lang.org> | 2025-07-06 10:20:27 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-07-06 10:20:27 +0000 |
| commit | c83e217d268d25960a0c79c6941bcb3917a6a0af (patch) | |
| tree | 5fd07b0e7aacf90ba97a22a7254478e0a3b115b4 /tests | |
| parent | e804cd4a5f1a5b658ddca245c80bef96a576c018 (diff) | |
| parent | 097efc07cc13d8f6a3e04fe2a045b8a3ad6fd576 (diff) | |
| download | rust-c83e217d268d25960a0c79c6941bcb3917a6a0af.tar.gz rust-c83e217d268d25960a0c79c6941bcb3917a6a0af.zip | |
Auto merge of #143521 - matthiaskrgr:rollup-kpv1og3, r=matthiaskrgr
Rollup of 6 pull requests Successful merges: - rust-lang/rust#143416 (mbe: Defer checks for `compile_error!` until reporting an unused macro rule) - rust-lang/rust#143470 (std: sys: net: uefi: tcp4: Implement read) - rust-lang/rust#143477 (use `is_multiple_of` and `div_ceil`) - rust-lang/rust#143484 (distinguish the duplicate item of rpitit) - rust-lang/rust#143493 (tidy: use --bless for tidy spellcheck instead of spellcheck:fix) - rust-lang/rust#143504 (compiletest: print slightly more information on fs::write failure) r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/ui/impl-trait/in-trait/rpitit-duplicate-associated-fn.rs | 30 | ||||
| -rw-r--r-- | tests/ui/impl-trait/in-trait/rpitit-duplicate-associated-fn.stderr | 53 |
2 files changed, 83 insertions, 0 deletions
diff --git a/tests/ui/impl-trait/in-trait/rpitit-duplicate-associated-fn.rs b/tests/ui/impl-trait/in-trait/rpitit-duplicate-associated-fn.rs new file mode 100644 index 00000000000..4fddd7c4ac8 --- /dev/null +++ b/tests/ui/impl-trait/in-trait/rpitit-duplicate-associated-fn.rs @@ -0,0 +1,30 @@ +// issue#140796 + +trait Bar { + fn method() -> impl Sized; + fn method() -> impl Sized; //~ ERROR: the name `method` is defined multiple times +} + +impl Bar for () { //~ ERROR: not all trait items implemented, missing: `method` + fn method() -> impl Sized { + 42 + } + fn method() -> impl Sized { //~ ERROR: duplicate definitions with name `method` + 42 + } +} + +trait T { + fn method() -> impl Sized; +} + +impl T for () { + fn method() -> impl Sized { + 42 + } + fn method() -> impl Sized { //~ ERROR: duplicate definitions with name `method` + 42 + } +} + +fn main() {} diff --git a/tests/ui/impl-trait/in-trait/rpitit-duplicate-associated-fn.stderr b/tests/ui/impl-trait/in-trait/rpitit-duplicate-associated-fn.stderr new file mode 100644 index 00000000000..b58e8136479 --- /dev/null +++ b/tests/ui/impl-trait/in-trait/rpitit-duplicate-associated-fn.stderr @@ -0,0 +1,53 @@ +error[E0428]: the name `method` is defined multiple times + --> $DIR/rpitit-duplicate-associated-fn.rs:5:5 + | +LL | fn method() -> impl Sized; + | -------------------------- previous definition of the value `method` here +LL | fn method() -> impl Sized; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ `method` redefined here + | + = note: `method` must be defined only once in the value namespace of this trait + +error[E0201]: duplicate definitions with name `method`: + --> $DIR/rpitit-duplicate-associated-fn.rs:12:5 + | +LL | fn method() -> impl Sized; + | -------------------------- item in trait +... +LL | / fn method() -> impl Sized { +LL | | 42 +LL | | } + | |_____- previous definition here +LL | / fn method() -> impl Sized { +LL | | 42 +LL | | } + | |_____^ duplicate definition + +error[E0201]: duplicate definitions with name `method`: + --> $DIR/rpitit-duplicate-associated-fn.rs:25:5 + | +LL | fn method() -> impl Sized; + | -------------------------- item in trait +... +LL | / fn method() -> impl Sized { +LL | | 42 +LL | | } + | |_____- previous definition here +LL | / fn method() -> impl Sized { +LL | | 42 +LL | | } + | |_____^ duplicate definition + +error[E0046]: not all trait items implemented, missing: `method` + --> $DIR/rpitit-duplicate-associated-fn.rs:8:1 + | +LL | fn method() -> impl Sized; + | -------------------------- `method` from trait +... +LL | impl Bar for () { + | ^^^^^^^^^^^^^^^ missing `method` in implementation + +error: aborting due to 4 previous errors + +Some errors have detailed explanations: E0046, E0201, E0428. +For more information about an error, try `rustc --explain E0046`. |
