]> git.lizzy.rs Git - rust.git/commit
use static as object-lifetime default for type XX in `Foo<Item=XX>`
authorNiko Matsakis <niko@alum.mit.edu>
Mon, 12 Aug 2019 14:41:05 +0000 (10:41 -0400)
committerNiko Matsakis <niko@alum.mit.edu>
Mon, 19 Aug 2019 17:50:44 +0000 (13:50 -0400)
commit832199ee767004091d083affb5e641502f6d39bc
tree5438aca5137e1ab3f97ac88731ff4109ca019ad5
parentaf86fb1959b520ae0256272899df5c43b11df2a7
use static as object-lifetime default for type XX in `Foo<Item=XX>`

Currently the default is "inherited" from context, so e.g.  `&impl
Foo<Item = dyn Bar>` would default to `&'x impl Foo<Item = dyn Bar +
'x>`, but this triggers an ICE and is not very consistent.

This patch doesn't implement what I expect would be the correct
semantics, because those are likely too complex. Instead, it handles
what I'd expect to be the common case -- where the trait has no
lifetime parameters.
src/librustc/middle/resolve_lifetime.rs
src/test/ui/impl-trait/dyn-trait-elided-two-inputs-ref-assoc.rs [new file with mode: 0644]
src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic1.rs [new file with mode: 0644]
src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic1.stderr [new file with mode: 0644]
src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic2.rs [new file with mode: 0644]
src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic2.stderr [new file with mode: 0644]
src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic3.rs [new file with mode: 0644]
src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-nonstatic3.stderr [new file with mode: 0644]
src/test/ui/object-lifetime/object-lifetime-default-dyn-binding-static.rs [new file with mode: 0644]