36 lines
755 B
Rust
36 lines
755 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 - '//h3[@class="code-header"]' "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() {}
|