Skip to content

Commit

Permalink
Add passing & failing test for bultin dyn trait generation
Browse files Browse the repository at this point in the history
  • Loading branch information
Anthony Kalaitzis committed Jun 27, 2023
1 parent 22e9fe6 commit 09f0548
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 0 deletions.
15 changes: 15 additions & 0 deletions tests/ui/traits/ice-with-dyn-pointee-errors.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#![feature(ptr_metadata)]
// Address issue #112737 -- ICE with dyn Pointee
extern crate core;
use core::ptr::Pointee;

fn unknown_sized_object_ptr_in(_: &(impl Pointee<Metadata = ()> + ?Sized)) {}

fn raw_pointer_in(x: &dyn Pointee<Metadata = ()>) {
unknown_sized_object_ptr_in(x)
//~^ ERROR type mismatch resolving `<dyn Pointee<Metadata = ()> as Pointee>::Metadata == ()`
}

fn main() {
raw_pointer_in(&42)
}
19 changes: 19 additions & 0 deletions tests/ui/traits/ice-with-dyn-pointee-errors.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
error[E0271]: type mismatch resolving `<dyn Pointee<Metadata = ()> as Pointee>::Metadata == ()`
--> $DIR/ice-with-dyn-pointee-errors.rs:9:33
|
LL | unknown_sized_object_ptr_in(x)
| --------------------------- ^ expected `()`, found `DynMetadata<dyn Pointee<Metadata = ...>>`
| |
| required by a bound introduced by this call
|
= note: expected unit type `()`
found struct `DynMetadata<dyn Pointee<Metadata = ()>>`
note: required by a bound in `unknown_sized_object_ptr_in`
--> $DIR/ice-with-dyn-pointee-errors.rs:6:50
|
LL | fn unknown_sized_object_ptr_in(_: &(impl Pointee<Metadata = ()> + ?Sized)) {}
| ^^^^^^^^^^^^^ required by this bound in `unknown_sized_object_ptr_in`

error: aborting due to previous error

For more information about this error, try `rustc --explain E0271`.
11 changes: 11 additions & 0 deletions tests/ui/traits/ice-with-dyn-pointee.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
// run-pass
#![feature(ptr_metadata)]
// Address issue #112737 -- ICE with dyn Pointee
extern crate core;
use core::ptr::Pointee;

fn raw_pointer_in(_: &dyn Pointee<Metadata = ()>) {}

fn main() {
raw_pointer_in(&42)
}

0 comments on commit 09f0548

Please sign in to comment.