mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-29 02:03:53 +00:00
Rollup merge of #63487 - sd234678:remove-meaningless-comments-in-src/test-2, r=Centril
Remove meaningless comments in src/test Moved from #63411
This commit is contained in:
commit
a396434136
@ -259,8 +259,6 @@ fn _12() {
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////
|
||||
|
||||
fn foo() { }
|
||||
fn foo3(_: i32, _: (), _: ()) { }
|
||||
fn qux(_: i32) { }
|
||||
|
@ -12,30 +12,22 @@ pub trait Car : Vehicle {
|
||||
fn chip_paint(&self, c: Self::Color) { }
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
struct Black;
|
||||
struct ModelT;
|
||||
impl Vehicle for ModelT { type Color = Black; }
|
||||
impl Car for ModelT { }
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
struct Blue;
|
||||
struct ModelU;
|
||||
impl Vehicle for ModelU { type Color = Blue; }
|
||||
impl Car for ModelU { }
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
fn dent<C:Car>(c: C, color: C::Color) { c.chip_paint(color) }
|
||||
fn a() { dent(ModelT, Black); }
|
||||
fn b() { dent(ModelT, Blue); } //~ ERROR mismatched types
|
||||
fn c() { dent(ModelU, Black); } //~ ERROR mismatched types
|
||||
fn d() { dent(ModelU, Blue); }
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
fn e() { ModelT.chip_paint(Black); }
|
||||
fn f() { ModelT.chip_paint(Blue); } //~ ERROR mismatched types
|
||||
fn g() { ModelU.chip_paint(Black); } //~ ERROR mismatched types
|
||||
|
@ -1,5 +1,5 @@
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/associated-type-projection-from-supertrait.rs:33:23
|
||||
--> $DIR/associated-type-projection-from-supertrait.rs:27:23
|
||||
|
|
||||
LL | fn b() { dent(ModelT, Blue); }
|
||||
| ^^^^ expected struct `Black`, found struct `Blue`
|
||||
@ -8,7 +8,7 @@ LL | fn b() { dent(ModelT, Blue); }
|
||||
found type `Blue`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/associated-type-projection-from-supertrait.rs:34:23
|
||||
--> $DIR/associated-type-projection-from-supertrait.rs:28:23
|
||||
|
|
||||
LL | fn c() { dent(ModelU, Black); }
|
||||
| ^^^^^ expected struct `Blue`, found struct `Black`
|
||||
@ -17,7 +17,7 @@ LL | fn c() { dent(ModelU, Black); }
|
||||
found type `Black`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/associated-type-projection-from-supertrait.rs:40:28
|
||||
--> $DIR/associated-type-projection-from-supertrait.rs:32:28
|
||||
|
|
||||
LL | fn f() { ModelT.chip_paint(Blue); }
|
||||
| ^^^^ expected struct `Black`, found struct `Blue`
|
||||
@ -26,7 +26,7 @@ LL | fn f() { ModelT.chip_paint(Blue); }
|
||||
found type `Blue`
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/associated-type-projection-from-supertrait.rs:41:28
|
||||
--> $DIR/associated-type-projection-from-supertrait.rs:33:28
|
||||
|
|
||||
LL | fn g() { ModelU.chip_paint(Black); }
|
||||
| ^^^^^ expected struct `Blue`, found struct `Black`
|
||||
|
@ -11,22 +11,16 @@ pub trait Car : Vehicle {
|
||||
fn honk(&self) { }
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
struct Black;
|
||||
struct ModelT;
|
||||
impl Vehicle for ModelT { type Color = Black; }
|
||||
impl Car for ModelT { }
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
struct Blue;
|
||||
struct ModelU;
|
||||
impl Vehicle for ModelU { type Color = Blue; }
|
||||
impl Car for ModelU { }
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
fn black_car<C:Car<Color=Black>>(c: C) {
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
error[E0271]: type mismatch resolving `<ModelT as Vehicle>::Color == Blue`
|
||||
--> $DIR/associated-types-binding-to-type-defined-in-supertrait.rs:37:10
|
||||
--> $DIR/associated-types-binding-to-type-defined-in-supertrait.rs:31:10
|
||||
|
|
||||
LL | fn b() { blue_car(ModelT); }
|
||||
| ^^^^^^^^ expected struct `Black`, found struct `Blue`
|
||||
@ -7,13 +7,13 @@ LL | fn b() { blue_car(ModelT); }
|
||||
= note: expected type `Black`
|
||||
found type `Blue`
|
||||
note: required by `blue_car`
|
||||
--> $DIR/associated-types-binding-to-type-defined-in-supertrait.rs:33:1
|
||||
--> $DIR/associated-types-binding-to-type-defined-in-supertrait.rs:27:1
|
||||
|
|
||||
LL | fn blue_car<C:Car<Color=Blue>>(c: C) {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0271]: type mismatch resolving `<ModelU as Vehicle>::Color == Black`
|
||||
--> $DIR/associated-types-binding-to-type-defined-in-supertrait.rs:38:10
|
||||
--> $DIR/associated-types-binding-to-type-defined-in-supertrait.rs:32:10
|
||||
|
|
||||
LL | fn c() { black_car(ModelU); }
|
||||
| ^^^^^^^^^ expected struct `Blue`, found struct `Black`
|
||||
@ -21,7 +21,7 @@ LL | fn c() { black_car(ModelU); }
|
||||
= note: expected type `Blue`
|
||||
found type `Black`
|
||||
note: required by `black_car`
|
||||
--> $DIR/associated-types-binding-to-type-defined-in-supertrait.rs:30:1
|
||||
--> $DIR/associated-types-binding-to-type-defined-in-supertrait.rs:24:1
|
||||
|
|
||||
LL | fn black_car<C:Car<Color=Black>>(c: C) {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
@ -9,8 +9,6 @@ trait Test {
|
||||
fn test(&self, value: &Self::V) -> bool;
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
struct TesterPair<T:Test> {
|
||||
tester: T,
|
||||
value: T::V,
|
||||
@ -26,8 +24,6 @@ impl<T:Test> TesterPair<T> {
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
struct EqU32(u32);
|
||||
impl Test for EqU32 {
|
||||
type V = u32;
|
||||
|
@ -14,7 +14,6 @@ fn want_foo<T>()
|
||||
{
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Expressed as a where clause
|
||||
|
||||
struct SomeStruct<X> {
|
||||
@ -30,7 +29,6 @@ fn one() {
|
||||
want_foo::<SomeStruct<usize>>();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Expressed as shorthand
|
||||
|
||||
struct AnotherStruct<X> {
|
||||
|
@ -15,7 +15,6 @@ fn want_foo1<T>()
|
||||
{
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
// Expressed as a where clause
|
||||
|
||||
struct SomeStruct;
|
||||
|
@ -1,5 +1,5 @@
|
||||
error[E0277]: the trait bound `for<'a, 'b> SomeStruct: Foo<(&'a isize, &'b isize)>` is not satisfied
|
||||
--> $DIR/hrtb-conflate-regions.rs:28:10
|
||||
--> $DIR/hrtb-conflate-regions.rs:27:10
|
||||
|
|
||||
LL | fn b() { want_foo2::<SomeStruct>(); }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^ the trait `for<'a, 'b> Foo<(&'a isize, &'b isize)>` is not implemented for `SomeStruct`
|
||||
|
@ -8,7 +8,6 @@
|
||||
|
||||
// See issue 60414
|
||||
|
||||
/////////////////////////////////////////////
|
||||
// Reduction to `impl Trait`
|
||||
|
||||
struct Foo<T>(T);
|
||||
@ -33,7 +32,6 @@ mod impl_trait {
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////
|
||||
// Same with lifetimes in the trait
|
||||
|
||||
mod lifetimes {
|
||||
|
@ -7,7 +7,7 @@ LL | #![feature(impl_trait_in_bindings)]
|
||||
= note: `#[warn(incomplete_features)]` on by default
|
||||
|
||||
error[E0271]: type mismatch resolving `<Foo<()> as FooLike>::Output == <T as impl_trait::Trait>::Assoc`
|
||||
--> $DIR/bound-normalization-fail.rs:30:32
|
||||
--> $DIR/bound-normalization-fail.rs:29:32
|
||||
|
|
||||
LL | fn foo_fail<T: Trait>() -> impl FooLike<Output=T::Assoc> {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected (), found associated type
|
||||
@ -17,13 +17,13 @@ LL | fn foo_fail<T: Trait>() -> impl FooLike<Output=T::Assoc> {
|
||||
= note: the return type of a function must have a statically known size
|
||||
|
||||
error: `impl Trait` return type cannot contain a projection or `Self` that references lifetimes from a parent scope
|
||||
--> $DIR/bound-normalization-fail.rs:47:41
|
||||
--> $DIR/bound-normalization-fail.rs:45:41
|
||||
|
|
||||
LL | fn foo2_fail<'a, T: Trait<'a>>() -> impl FooLike<Output=T::Assoc> {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error[E0271]: type mismatch resolving `<Foo<()> as FooLike>::Output == <T as lifetimes::Trait<'static>>::Assoc`
|
||||
--> $DIR/bound-normalization-fail.rs:47:41
|
||||
--> $DIR/bound-normalization-fail.rs:45:41
|
||||
|
|
||||
LL | fn foo2_fail<'a, T: Trait<'a>>() -> impl FooLike<Output=T::Assoc> {
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ expected (), found associated type
|
||||
|
@ -8,7 +8,6 @@
|
||||
|
||||
// See issue 60414
|
||||
|
||||
/////////////////////////////////////////////
|
||||
// Reduction to `impl Trait`
|
||||
|
||||
struct Foo<T>(T);
|
||||
@ -32,7 +31,6 @@ mod impl_trait {
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////
|
||||
// Same with lifetimes in the trait
|
||||
|
||||
mod lifetimes {
|
||||
@ -59,7 +57,6 @@ mod lifetimes {
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////
|
||||
// Reduction using `impl Trait` in bindings
|
||||
|
||||
mod impl_trait_in_bindings {
|
||||
@ -80,7 +77,6 @@ mod impl_trait_in_bindings {
|
||||
}
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////
|
||||
// The same applied to `type Foo = impl Bar`s
|
||||
|
||||
mod opaque_types {
|
||||
|
@ -17,8 +17,6 @@ trait StreamHasher {
|
||||
fn stream(&self) -> Self::S;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
trait StreamHash<H: StreamHasher>: Hash<H> {
|
||||
fn input_stream(&self, stream: &mut H::S);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
error[E0284]: type annotations required: cannot resolve `<_ as StreamHasher>::S == <H as StreamHasher>::S`
|
||||
--> $DIR/issue-12028.rs:29:14
|
||||
--> $DIR/issue-12028.rs:27:14
|
||||
|
|
||||
LL | self.input_stream(&mut stream);
|
||||
| ^^^^^^^^^^^^
|
||||
|
@ -16,8 +16,6 @@ impl FnOnce<()> for Foo {
|
||||
extern "rust-call" fn call_once(mut self, _: ()) -> u32 { self.call_mut(()) }
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
impl FnMut<(u32,)> for Foo {
|
||||
extern "rust-call" fn call_mut(&mut self, (x,): (u32,)) -> u32 { self.foo + x }
|
||||
}
|
||||
@ -27,8 +25,6 @@ impl FnOnce<(u32,)> for Foo {
|
||||
extern "rust-call" fn call_once(mut self, args: (u32,)) -> u32 { self.call_mut(args) }
|
||||
}
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////
|
||||
|
||||
impl FnMut<(u32,u32)> for Foo {
|
||||
extern "rust-call" fn call_mut(&mut self, (x, y): (u32, u32)) -> u32 { self.foo + x + y }
|
||||
}
|
||||
|
@ -2,9 +2,6 @@
|
||||
// Test that we can use method notation to call methods based on a
|
||||
// projection bound from a trait. Issue #20469.
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
trait MakeString {
|
||||
fn make_string(&self) -> String;
|
||||
}
|
||||
@ -21,8 +18,6 @@ impl MakeString for usize {
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
trait Foo {
|
||||
type F: MakeString;
|
||||
|
||||
@ -33,8 +28,6 @@ fn foo<F:Foo>(f: &F) -> String {
|
||||
f.get().make_string()
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
struct SomeStruct {
|
||||
field: isize,
|
||||
}
|
||||
@ -47,8 +40,6 @@ impl Foo for SomeStruct {
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
struct SomeOtherStruct {
|
||||
field: usize,
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
error: lifetime may not live long enough
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:35:12
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:30:12
|
||||
|
|
||||
LL | fn with_assoc<'a,'b>() {
|
||||
| -- -- lifetime `'b` defined here
|
||||
@ -10,7 +10,7 @@ LL | let _: &'a WithHrAssoc<TheType<'b>> = loop { };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
|
||||
|
||||
error: lifetime may not live long enough
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:57:12
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:50:12
|
||||
|
|
||||
LL | fn with_assoc_sub<'a,'b>() {
|
||||
| -- -- lifetime `'b` defined here
|
||||
|
@ -1,33 +1,33 @@
|
||||
error[E0491]: in type `&'a WithHrAssoc<TheType<'b>>`, reference has a longer lifetime than the data it references
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:35:12
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:30:12
|
||||
|
|
||||
LL | let _: &'a WithHrAssoc<TheType<'b>> = loop { };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: the pointer is valid for the lifetime 'a as defined on the function body at 32:15
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:32:15
|
||||
note: the pointer is valid for the lifetime 'a as defined on the function body at 27:15
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:27:15
|
||||
|
|
||||
LL | fn with_assoc<'a,'b>() {
|
||||
| ^^
|
||||
note: but the referenced data is only valid for the lifetime 'b as defined on the function body at 32:18
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:32:18
|
||||
note: but the referenced data is only valid for the lifetime 'b as defined on the function body at 27:18
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:27:18
|
||||
|
|
||||
LL | fn with_assoc<'a,'b>() {
|
||||
| ^^
|
||||
|
||||
error[E0491]: in type `&'a WithHrAssocSub<TheType<'b>>`, reference has a longer lifetime than the data it references
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:57:12
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:50:12
|
||||
|
|
||||
LL | let _: &'a WithHrAssocSub<TheType<'b>> = loop { };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: the pointer is valid for the lifetime 'a as defined on the function body at 53:19
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:53:19
|
||||
note: the pointer is valid for the lifetime 'a as defined on the function body at 46:19
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:46:19
|
||||
|
|
||||
LL | fn with_assoc_sub<'a,'b>() {
|
||||
| ^^
|
||||
note: but the referenced data is only valid for the lifetime 'b as defined on the function body at 53:22
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:53:22
|
||||
note: but the referenced data is only valid for the lifetime 'b as defined on the function body at 46:22
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:46:22
|
||||
|
|
||||
LL | fn with_assoc_sub<'a,'b>() {
|
||||
| ^^
|
||||
|
@ -1,5 +1,5 @@
|
||||
error: lifetime may not live long enough
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:35:12
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:30:12
|
||||
|
|
||||
LL | fn with_assoc<'a,'b>() {
|
||||
| -- -- lifetime `'b` defined here
|
||||
@ -10,7 +10,7 @@ LL | let _: &'a WithHrAssoc<TheType<'b>> = loop { };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
|
||||
|
||||
error: lifetime may not live long enough
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:57:12
|
||||
--> $DIR/regions-outlives-projection-container-hrtb.rs:50:12
|
||||
|
|
||||
LL | fn with_assoc_sub<'a,'b>() {
|
||||
| -- -- lifetime `'b` defined here
|
||||
|
@ -6,9 +6,6 @@
|
||||
|
||||
#![allow(dead_code)]
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
pub trait TheTrait<'b> {
|
||||
type TheAssocType;
|
||||
}
|
||||
@ -21,8 +18,6 @@ impl<'a,'b> TheTrait<'a> for TheType<'b> {
|
||||
type TheAssocType = &'b ();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
pub struct WithHrAssoc<T>
|
||||
where for<'a> T : TheTrait<'a>
|
||||
{
|
||||
@ -37,8 +32,6 @@ fn with_assoc<'a,'b>() {
|
||||
//[nll]~^^ ERROR lifetime may not live long enough
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
pub trait TheSubTrait : for<'a> TheTrait<'a> {
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
error: lifetime may not live long enough
|
||||
--> $DIR/regions-outlives-projection-container-wc.rs:37:12
|
||||
--> $DIR/regions-outlives-projection-container-wc.rs:33:12
|
||||
|
|
||||
LL | fn with_assoc<'a,'b>() {
|
||||
| -- -- lifetime `'b` defined here
|
||||
|
@ -1,16 +1,16 @@
|
||||
error[E0491]: in type `&'a WithAssoc<TheType<'b>>`, reference has a longer lifetime than the data it references
|
||||
--> $DIR/regions-outlives-projection-container-wc.rs:37:12
|
||||
--> $DIR/regions-outlives-projection-container-wc.rs:33:12
|
||||
|
|
||||
LL | let _: &'a WithAssoc<TheType<'b>> = loop { };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: the pointer is valid for the lifetime 'a as defined on the function body at 31:15
|
||||
--> $DIR/regions-outlives-projection-container-wc.rs:31:15
|
||||
note: the pointer is valid for the lifetime 'a as defined on the function body at 27:15
|
||||
--> $DIR/regions-outlives-projection-container-wc.rs:27:15
|
||||
|
|
||||
LL | fn with_assoc<'a,'b>() {
|
||||
| ^^
|
||||
note: but the referenced data is only valid for the lifetime 'b as defined on the function body at 31:18
|
||||
--> $DIR/regions-outlives-projection-container-wc.rs:31:18
|
||||
note: but the referenced data is only valid for the lifetime 'b as defined on the function body at 27:18
|
||||
--> $DIR/regions-outlives-projection-container-wc.rs:27:18
|
||||
|
|
||||
LL | fn with_assoc<'a,'b>() {
|
||||
| ^^
|
||||
|
@ -1,5 +1,5 @@
|
||||
error: lifetime may not live long enough
|
||||
--> $DIR/regions-outlives-projection-container-wc.rs:37:12
|
||||
--> $DIR/regions-outlives-projection-container-wc.rs:33:12
|
||||
|
|
||||
LL | fn with_assoc<'a,'b>() {
|
||||
| -- -- lifetime `'b` defined here
|
||||
|
@ -8,8 +8,6 @@
|
||||
|
||||
#![allow(dead_code)]
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
pub trait TheTrait {
|
||||
type TheAssocType;
|
||||
}
|
||||
@ -22,8 +20,6 @@ impl<'b> TheTrait for TheType<'b> {
|
||||
type TheAssocType = &'b ();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
pub struct WithAssoc<T> where T : TheTrait {
|
||||
m: [T; 0]
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
error: lifetime may not live long enough
|
||||
--> $DIR/regions-outlives-projection-container.rs:40:13
|
||||
--> $DIR/regions-outlives-projection-container.rs:36:13
|
||||
|
|
||||
LL | fn with_assoc<'a,'b>() {
|
||||
| -- -- lifetime `'b` defined here
|
||||
@ -10,7 +10,7 @@ LL | let _x: &'a WithAssoc<TheType<'b>> = loop { };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
|
||||
|
||||
error: lifetime may not live long enough
|
||||
--> $DIR/regions-outlives-projection-container.rs:58:13
|
||||
--> $DIR/regions-outlives-projection-container.rs:54:13
|
||||
|
|
||||
LL | fn without_assoc<'a,'b>() {
|
||||
| -- -- lifetime `'b` defined here
|
||||
@ -21,7 +21,7 @@ LL | let _x: &'a WithoutAssoc<TheType<'b>> = loop { };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`
|
||||
|
||||
error: lifetime may not live long enough
|
||||
--> $DIR/regions-outlives-projection-container.rs:67:5
|
||||
--> $DIR/regions-outlives-projection-container.rs:63:5
|
||||
|
|
||||
LL | fn call_with_assoc<'a,'b>() {
|
||||
| -- -- lifetime `'b` defined here
|
||||
@ -32,7 +32,7 @@ LL | call::<&'a WithAssoc<TheType<'b>>>();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`
|
||||
|
||||
error: lifetime may not live long enough
|
||||
--> $DIR/regions-outlives-projection-container.rs:74:5
|
||||
--> $DIR/regions-outlives-projection-container.rs:70:5
|
||||
|
|
||||
LL | fn call_without_assoc<'a,'b>() {
|
||||
| -- -- lifetime `'b` defined here
|
||||
|
@ -5,8 +5,6 @@
|
||||
#![allow(dead_code)]
|
||||
#![feature(rustc_attrs)]
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
pub trait TheTrait {
|
||||
type TheAssocType;
|
||||
}
|
||||
@ -19,8 +17,6 @@ impl<'b> TheTrait for TheType<'b> {
|
||||
type TheAssocType = &'b ();
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
pub struct WithAssoc<T:TheTrait> {
|
||||
m: [T; 0]
|
||||
}
|
||||
|
@ -1,67 +1,67 @@
|
||||
error[E0491]: in type `&'a WithAssoc<TheType<'b>>`, reference has a longer lifetime than the data it references
|
||||
--> $DIR/regions-outlives-projection-container.rs:40:13
|
||||
--> $DIR/regions-outlives-projection-container.rs:36:13
|
||||
|
|
||||
LL | let _x: &'a WithAssoc<TheType<'b>> = loop { };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: the pointer is valid for the lifetime 'a as defined on the function body at 32:15
|
||||
--> $DIR/regions-outlives-projection-container.rs:32:15
|
||||
note: the pointer is valid for the lifetime 'a as defined on the function body at 28:15
|
||||
--> $DIR/regions-outlives-projection-container.rs:28:15
|
||||
|
|
||||
LL | fn with_assoc<'a,'b>() {
|
||||
| ^^
|
||||
note: but the referenced data is only valid for the lifetime 'b as defined on the function body at 32:18
|
||||
--> $DIR/regions-outlives-projection-container.rs:32:18
|
||||
note: but the referenced data is only valid for the lifetime 'b as defined on the function body at 28:18
|
||||
--> $DIR/regions-outlives-projection-container.rs:28:18
|
||||
|
|
||||
LL | fn with_assoc<'a,'b>() {
|
||||
| ^^
|
||||
|
||||
error[E0491]: in type `&'a WithoutAssoc<TheType<'b>>`, reference has a longer lifetime than the data it references
|
||||
--> $DIR/regions-outlives-projection-container.rs:58:13
|
||||
--> $DIR/regions-outlives-projection-container.rs:54:13
|
||||
|
|
||||
LL | let _x: &'a WithoutAssoc<TheType<'b>> = loop { };
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: the pointer is valid for the lifetime 'a as defined on the function body at 54:18
|
||||
--> $DIR/regions-outlives-projection-container.rs:54:18
|
||||
note: the pointer is valid for the lifetime 'a as defined on the function body at 50:18
|
||||
--> $DIR/regions-outlives-projection-container.rs:50:18
|
||||
|
|
||||
LL | fn without_assoc<'a,'b>() {
|
||||
| ^^
|
||||
note: but the referenced data is only valid for the lifetime 'b as defined on the function body at 54:21
|
||||
--> $DIR/regions-outlives-projection-container.rs:54:21
|
||||
note: but the referenced data is only valid for the lifetime 'b as defined on the function body at 50:21
|
||||
--> $DIR/regions-outlives-projection-container.rs:50:21
|
||||
|
|
||||
LL | fn without_assoc<'a,'b>() {
|
||||
| ^^
|
||||
|
||||
error[E0491]: in type `&'a WithAssoc<TheType<'b>>`, reference has a longer lifetime than the data it references
|
||||
--> $DIR/regions-outlives-projection-container.rs:67:12
|
||||
--> $DIR/regions-outlives-projection-container.rs:63:12
|
||||
|
|
||||
LL | call::<&'a WithAssoc<TheType<'b>>>();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: the pointer is valid for the lifetime 'a as defined on the function body at 62:20
|
||||
--> $DIR/regions-outlives-projection-container.rs:62:20
|
||||
note: the pointer is valid for the lifetime 'a as defined on the function body at 58:20
|
||||
--> $DIR/regions-outlives-projection-container.rs:58:20
|
||||
|
|
||||
LL | fn call_with_assoc<'a,'b>() {
|
||||
| ^^
|
||||
note: but the referenced data is only valid for the lifetime 'b as defined on the function body at 62:23
|
||||
--> $DIR/regions-outlives-projection-container.rs:62:23
|
||||
note: but the referenced data is only valid for the lifetime 'b as defined on the function body at 58:23
|
||||
--> $DIR/regions-outlives-projection-container.rs:58:23
|
||||
|
|
||||
LL | fn call_with_assoc<'a,'b>() {
|
||||
| ^^
|
||||
|
||||
error[E0491]: in type `&'a WithoutAssoc<TheType<'b>>`, reference has a longer lifetime than the data it references
|
||||
--> $DIR/regions-outlives-projection-container.rs:74:12
|
||||
--> $DIR/regions-outlives-projection-container.rs:70:12
|
||||
|
|
||||
LL | call::<&'a WithoutAssoc<TheType<'b>>>();
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: the pointer is valid for the lifetime 'a as defined on the function body at 71:23
|
||||
--> $DIR/regions-outlives-projection-container.rs:71:23
|
||||
note: the pointer is valid for the lifetime 'a as defined on the function body at 67:23
|
||||
--> $DIR/regions-outlives-projection-container.rs:67:23
|
||||
|
|
||||
LL | fn call_without_assoc<'a,'b>() {
|
||||
| ^^
|
||||
note: but the referenced data is only valid for the lifetime 'b as defined on the function body at 71:26
|
||||
--> $DIR/regions-outlives-projection-container.rs:71:26
|
||||
note: but the referenced data is only valid for the lifetime 'b as defined on the function body at 67:26
|
||||
--> $DIR/regions-outlives-projection-container.rs:67:26
|
||||
|
|
||||
LL | fn call_without_assoc<'a,'b>() {
|
||||
| ^^
|
||||
|
@ -3,9 +3,7 @@
|
||||
// Check a number of scenarios in which one impl tries to override another,
|
||||
// without correctly using `default`.
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Test 1: one layer of specialization, multiple methods, missing `default`
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
trait Foo {
|
||||
fn foo(&self);
|
||||
@ -25,9 +23,7 @@ impl Foo for u32 {
|
||||
fn bar(&self) {} //~ ERROR E0520
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Test 2: one layer of specialization, missing `default` on associated type
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
trait Bar {
|
||||
type T;
|
||||
@ -41,9 +37,7 @@ impl Bar for u8 {
|
||||
type T = (); //~ ERROR E0520
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Test 3a: multiple layers of specialization, missing interior `default`
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
trait Baz {
|
||||
fn baz(&self);
|
||||
@ -61,10 +55,8 @@ impl Baz for i32 {
|
||||
fn baz(&self) {} //~ ERROR E0520
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Test 3b: multiple layers of specialization, missing interior `default`,
|
||||
// redundant `default` in bottom layer.
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
trait Redundant {
|
||||
fn redundant(&self);
|
||||
|
@ -1,5 +1,5 @@
|
||||
error[E0520]: `foo` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||
--> $DIR/specialization-no-default.rs:22:5
|
||||
--> $DIR/specialization-no-default.rs:20:5
|
||||
|
|
||||
LL | / impl<T> Foo for T {
|
||||
LL | | fn foo(&self) {}
|
||||
@ -13,7 +13,7 @@ LL | fn foo(&self) {}
|
||||
= note: to specialize, `foo` in the parent `impl` must be marked `default`
|
||||
|
||||
error[E0520]: `bar` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||
--> $DIR/specialization-no-default.rs:25:5
|
||||
--> $DIR/specialization-no-default.rs:23:5
|
||||
|
|
||||
LL | / impl<T> Foo for T {
|
||||
LL | | fn foo(&self) {}
|
||||
@ -27,7 +27,7 @@ LL | fn bar(&self) {}
|
||||
= note: to specialize, `bar` in the parent `impl` must be marked `default`
|
||||
|
||||
error[E0520]: `T` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||
--> $DIR/specialization-no-default.rs:41:5
|
||||
--> $DIR/specialization-no-default.rs:37:5
|
||||
|
|
||||
LL | / impl<T> Bar for T {
|
||||
LL | | type T = u8;
|
||||
@ -40,7 +40,7 @@ LL | type T = ();
|
||||
= note: to specialize, `T` in the parent `impl` must be marked `default`
|
||||
|
||||
error[E0520]: `baz` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||
--> $DIR/specialization-no-default.rs:61:5
|
||||
--> $DIR/specialization-no-default.rs:55:5
|
||||
|
|
||||
LL | / impl<T: Clone> Baz for T {
|
||||
LL | | fn baz(&self) {}
|
||||
@ -53,7 +53,7 @@ LL | fn baz(&self) {}
|
||||
= note: to specialize, `baz` in the parent `impl` must be marked `default`
|
||||
|
||||
error[E0520]: `redundant` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||
--> $DIR/specialization-no-default.rs:82:5
|
||||
--> $DIR/specialization-no-default.rs:74:5
|
||||
|
|
||||
LL | / impl<T: Clone> Redundant for T {
|
||||
LL | | fn redundant(&self) {}
|
||||
|
@ -3,9 +3,7 @@
|
||||
// Check a number of scenarios in which one impl tries to override another,
|
||||
// without correctly using `default`.
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Test 1: one layer of specialization, multiple methods, missing `default`
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
trait Foo {
|
||||
fn foo(&self);
|
||||
@ -25,9 +23,7 @@ impl Foo for u32 {
|
||||
fn bar(&self) {} //~ ERROR E0520
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Test 2: one layer of specialization, missing `default` on associated type
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
trait Bar {
|
||||
type T;
|
||||
@ -41,9 +37,7 @@ impl Bar for u8 {
|
||||
type T = (); //~ ERROR E0520
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Test 3a: multiple layers of specialization, missing interior `default`
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
trait Baz {
|
||||
fn baz(&self);
|
||||
@ -61,10 +55,8 @@ impl Baz for i32 {
|
||||
fn baz(&self) {} //~ ERROR E0520
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Test 3b: multiple layers of specialization, missing interior `default`,
|
||||
// redundant `default` in bottom layer.
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
trait Redundant {
|
||||
fn redundant(&self);
|
||||
|
@ -1,5 +1,5 @@
|
||||
error[E0520]: `foo` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||
--> $DIR/specialization-no-default.rs:22:5
|
||||
--> $DIR/specialization-no-default.rs:20:5
|
||||
|
|
||||
LL | / impl<T> Foo for T {
|
||||
LL | | fn foo(&self) {}
|
||||
@ -13,7 +13,7 @@ LL | fn foo(&self) {}
|
||||
= note: to specialize, `foo` in the parent `impl` must be marked `default`
|
||||
|
||||
error[E0520]: `bar` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||
--> $DIR/specialization-no-default.rs:25:5
|
||||
--> $DIR/specialization-no-default.rs:23:5
|
||||
|
|
||||
LL | / impl<T> Foo for T {
|
||||
LL | | fn foo(&self) {}
|
||||
@ -27,7 +27,7 @@ LL | fn bar(&self) {}
|
||||
= note: to specialize, `bar` in the parent `impl` must be marked `default`
|
||||
|
||||
error[E0520]: `T` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||
--> $DIR/specialization-no-default.rs:41:5
|
||||
--> $DIR/specialization-no-default.rs:37:5
|
||||
|
|
||||
LL | / impl<T> Bar for T {
|
||||
LL | | type T = u8;
|
||||
@ -40,7 +40,7 @@ LL | type T = ();
|
||||
= note: to specialize, `T` in the parent `impl` must be marked `default`
|
||||
|
||||
error[E0520]: `baz` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||
--> $DIR/specialization-no-default.rs:61:5
|
||||
--> $DIR/specialization-no-default.rs:55:5
|
||||
|
|
||||
LL | / impl<T: Clone> Baz for T {
|
||||
LL | | fn baz(&self) {}
|
||||
@ -53,7 +53,7 @@ LL | fn baz(&self) {}
|
||||
= note: to specialize, `baz` in the parent `impl` must be marked `default`
|
||||
|
||||
error[E0520]: `redundant` specializes an item from a parent `impl`, but that item is not marked `default`
|
||||
--> $DIR/specialization-no-default.rs:82:5
|
||||
--> $DIR/specialization-no-default.rs:74:5
|
||||
|
|
||||
LL | / impl<T: Clone> Redundant for T {
|
||||
LL | | fn redundant(&self) {}
|
||||
|
@ -14,8 +14,6 @@ use go_trait::{Go, GoMut, GoOnce, go, go_mut, go_once};
|
||||
use std::rc::Rc;
|
||||
use std::cell::Cell;
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
struct SomeGoableThing {
|
||||
counter: Rc<Cell<isize>>
|
||||
}
|
||||
@ -26,8 +24,6 @@ impl Go for SomeGoableThing {
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
struct SomeGoOnceableThing {
|
||||
counter: Rc<Cell<isize>>
|
||||
}
|
||||
@ -38,8 +34,6 @@ impl GoOnce for SomeGoOnceableThing {
|
||||
}
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////
|
||||
|
||||
fn main() {
|
||||
let counter = Rc::new(Cell::new(0));
|
||||
let mut x = SomeGoableThing { counter: counter.clone() };
|
||||
|
Loading…
Reference in New Issue
Block a user