// Straight list expansion:
type _T0 = dyn _1;
-//~^ ERROR at least one non-builtin trait is required for an object type [E0224]
+//~^ ERROR at least one trait is required for an object type [E0224]
// Twice:
trait _2 = _1 + _1;
type _T1 = dyn _2;
-//~^ ERROR at least one non-builtin trait is required for an object type [E0224]
+//~^ ERROR at least one trait is required for an object type [E0224]
fn main() {}
m!(dyn Copy + Send + 'static);
//~^ ERROR the trait `std::marker::Copy` cannot be made into an object
m!(dyn 'static + Send);
- m!(dyn 'static +); //~ ERROR at least one non-builtin trait is required for an object type
+ m!(dyn 'static +); //~ ERROR at least one trait is required for an object type
}
fn g() where
'static: 'static,
dyn 'static +: 'static + Copy,
- //~^ ERROR at least one non-builtin trait is required for an object type
+ //~^ ERROR at least one trait is required for an object type
{}
fn main() {}
// `'static` is a lifetime argument, `'static +` is a type argument
let _: S<'static, u8>;
let _: S<'static, dyn 'static +>;
- //~^ at least one non-builtin trait is required for an object type
+ //~^ at least one trait is required for an object type
let _: S<'static, 'static>;
//~^ ERROR wrong number of lifetime arguments: expected 1, found 2
//~| ERROR wrong number of type arguments: expected 1, found 0
let _: S<dyn 'static +, 'static>;
//~^ ERROR lifetime arguments must be declared prior to type arguments
- //~| ERROR at least one non-builtin trait is required for an object type
+ //~| ERROR at least one trait is required for an object type
}
// Test that `dyn ?Sized` (i.e., a trait object with only a maybe buond) is not allowed.
type _0 = dyn ?Sized;
-//~^ ERROR at least one non-builtin trait is required for an object type [E0224]
+//~^ ERROR at least one trait is required for an object type [E0224]
//~| ERROR ?Trait` is not permitted in trait object types
fn main() {}