mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-08 13:02:50 +00:00
add test
This commit is contained in:
parent
72b3347d00
commit
29cc36f84c
30
src/test/ui/consts/issue-102117.rs
Normal file
30
src/test/ui/consts/issue-102117.rs
Normal file
@ -0,0 +1,30 @@
|
||||
#![feature(inline_const, const_type_id)]
|
||||
|
||||
use std::alloc::Layout;
|
||||
use std::any::TypeId;
|
||||
use std::mem::transmute;
|
||||
use std::ptr::drop_in_place;
|
||||
|
||||
pub struct VTable {
|
||||
layout: Layout,
|
||||
type_id: TypeId,
|
||||
drop_in_place: unsafe fn(*mut ()),
|
||||
}
|
||||
|
||||
impl VTable {
|
||||
pub fn new<T>() -> &'static Self {
|
||||
const {
|
||||
//~^ ERROR the parameter type `T` may not live long enough
|
||||
//~| ERROR the parameter type `T` may not live long enough
|
||||
&VTable {
|
||||
layout: Layout::new::<T>(),
|
||||
type_id: TypeId::of::<T>(),
|
||||
drop_in_place: unsafe {
|
||||
transmute::<unsafe fn(*mut T), unsafe fn(*mut ())>(drop_in_place::<T>)
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
37
src/test/ui/consts/issue-102117.stderr
Normal file
37
src/test/ui/consts/issue-102117.stderr
Normal file
@ -0,0 +1,37 @@
|
||||
error[E0310]: the parameter type `T` may not live long enough
|
||||
--> $DIR/issue-102117.rs:16:9
|
||||
|
|
||||
LL | / const {
|
||||
LL | |
|
||||
LL | |
|
||||
LL | | &VTable {
|
||||
... |
|
||||
LL | | }
|
||||
LL | | }
|
||||
| |_________^ ...so that the type `T` will meet its required lifetime bounds
|
||||
|
|
||||
help: consider adding an explicit lifetime bound...
|
||||
|
|
||||
LL | pub fn new<T: 'static>() -> &'static Self {
|
||||
| +++++++++
|
||||
|
||||
error[E0310]: the parameter type `T` may not live long enough
|
||||
--> $DIR/issue-102117.rs:16:9
|
||||
|
|
||||
LL | / const {
|
||||
LL | |
|
||||
LL | |
|
||||
LL | | &VTable {
|
||||
... |
|
||||
LL | | }
|
||||
LL | | }
|
||||
| |_________^ ...so that the type `T` will meet its required lifetime bounds
|
||||
|
|
||||
help: consider adding an explicit lifetime bound...
|
||||
|
|
||||
LL | pub fn new<T: 'static>() -> &'static Self {
|
||||
| +++++++++
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0310`.
|
Loading…
Reference in New Issue
Block a user