mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-29 03:27:44 +00:00
36 lines
735 B
Rust
36 lines
735 B
Rust
![]() |
// Tests that we don't fail with an overflow error for certain
|
||
|
// strange types
|
||
|
// See https://github.com/rust-lang/rust/pull/72936#issuecomment-643676915
|
||
|
|
||
|
pub trait Interner {
|
||
|
type InternedType;
|
||
|
}
|
||
|
|
||
|
struct RustInterner<'tcx> {
|
||
|
foo: &'tcx ()
|
||
|
}
|
||
|
|
||
|
impl<'tcx> Interner for RustInterner<'tcx> {
|
||
|
type InternedType = Box<TyData<Self>>;
|
||
|
}
|
||
|
|
||
|
enum TyData<I: Interner> {
|
||
|
FnDef(I::InternedType)
|
||
|
}
|
||
|
|
||
|
struct VariableKind<I: Interner>(I::InternedType);
|
||
|
|
||
|
// @has overflow/struct.BoundVarsCollector.html
|
||
|
// @has - '//code' "impl<'tcx> Send for BoundVarsCollector<'tcx>"
|
||
|
pub struct BoundVarsCollector<'tcx> {
|
||
|
val: VariableKind<RustInterner<'tcx>>
|
||
|
}
|
||
|
|
||
|
fn is_send<T: Send>() {}
|
||
|
|
||
|
struct MyInterner<'tcx> {
|
||
|
val: &'tcx ()
|
||
|
}
|
||
|
|
||
|
fn main() {}
|