Closed
Description
Tracking issue for rust-lang/rfcs#1214
- ICE: Encountered error
Unimplemented
... (trait objects & associated type bounds) #26406 -
Mismatched assumptions for interaction between associated type and lifetime in trait #24622 -
associated type does not live long enough #23442 -
&[Trait] should probably not be allowed #21748 -
[[T]] is allowed in structs #25692 -
declaration of non-object-safe trait object type should be invalid #21953 -
format_args! returned from a closure causes corruption/crash #27592 - Just take implied bounds from arguments. Implementing this probably requires improving
check_method
-
Apparent regression in implied bounds #27583 - Clarify WF checking for negative impls
- WF checking for object fragments where
Self
is not needed - static methods should be able to assume that
Self
is WF, I believe (at least in trait impls) - WF for trait objects should include the trait bounds
- object-safe traits can have associated types with unchecked bounds #27675: object-safe traits can have associated types with unchecked bounds (unsoundness bug)
After warning cycle is complete
- Remove old WF check
- Remove RFC1214 origins and warnings
- Remove special treatment of
ReEmpty
in the outlives relation
Testing chart
Subject | Tests | Issues |
---|---|---|
OutlivesScalar | regions-outlives-scalar.rs | |
OutlivesNominalType | regions-outlives-nominal-type-struct.rs | |
regions-outlives-nominal-type-enum.rs | ||
OutlivesReference | all of the other tests | |
OutlivesObject | compile-fail/wf-in-obj-type-static.rs | |
OutlivesProjectionEnv | compile-fail/wf-in-obj-type-static.rs | |
WfObject, lifetime bounds | compile-fail/regions-wf-trait-object.rs | |
WfSlice | compile-file/wf-array-elem-sized.rs | |
const | wf-const-type.rs | |
struct, bound | wf-struct-bound.rs | |
struct, field | ...many other tests... | |
enum, bound | wf-enum-bound.rs | |
enum, field | ...many other tests... | |
trait, bound | wf-trait-bound.rs | |
trait, assoc type default | wf-trait-associated-type-trait.rs | |
wf-trait-associated-type-region.rs | ||
trait, assoc type bound | wf-trait-associated-type-bound.rs | |
trait, default fn, arg | wf-trait-default-fn-arg.rs | |
trait, default fn, return | wf-trait-default-fn-ret.rs | |
trait, default fn, where clause | wf-trait-default-fn-where-clause.rs | |
trait, fn, arg | wf-trait-fn-arg.rs | |
trait, fn, return | wf-trait-fn-ret.rs | |
trait, fn, where clause | wf-trait-fn-where-clause.rs | |
fn item, argument type | wf-in-fn-arg.rs | |
fn item, return type | wf-in-fn-ret.rs | |
fn item, where clause | wf-in-fn-where-clause.rs | |
inherent impl, where clause | wf-inherent-impl-where-clause.rs | |
inherent impl, fn, where clause | wf-inherent-impl-method-where-clause.rs | |
impl, assoc type default | wf-impl-associated-type-region.rs | |
wf-impl-associated-type-trait.rs | ||
fn type, argument type | wf-in-fn-type-arg.rs | |
fn type, return type | wf-in-fn-type-ret.rs | |
wf-in-fn-type-static.rs | ||
object type arg | compile-fail/wf-in-obj-type-static.rs | |
compile-fail/wf-in-obj-type-region.rs | ||
object safety | compile-fail/wf-object-safe.rs | #21953 |
fn(T): 'a affects T |
compile-fail/wf-outlives-ty-in-fn-or-trait.rs | |
OutlivesProjection* | compile-fail/associated-types-outlives.rs | #24622 |
OutlivesProjection* | compile-fail/regions-assoc-type-outlives-container*.rs | |
OutlivesProjectionComponents | compile-fail/regions-close-associated-type-into-object.rs | |
implied bounds projection gap | compile-fail/regions-implied-bounds-projection-gap*rs |
Metadata
Metadata
Assignees
Labels
Area: Type systemBlocker: Approved by a merged RFC but not yet implemented.Category: An issue tracking the progress of sth. like the implementation of an RFCStatus: It's hard to tell what's been done and what hasn't! Someone should do some investigation.Relevant to the compiler team, which will review and decide on the PR/issue.Relevant to the language team, which will review and decide on the PR/issue.Working group: Traits, https://internals.rust-lang.org/t/announcing-traits-working-group/6804