Check that the types in return position impl Trait in traits are well-formed#101676
Merged
bors merged 1 commit intorust-lang:masterfrom Sep 12, 2022
Merged
Check that the types in return position impl Trait in traits are well-formed#101676bors merged 1 commit intorust-lang:masterfrom
impl Trait in traits are well-formed#101676bors merged 1 commit intorust-lang:masterfrom
Conversation
Contributor
|
r? @lcnr (rust-highfive has picked a reviewer for you, use r? to override) |
lcnr
reviewed
Sep 12, 2022
| && tcx.def_kind(proj.item_def_id) == DefKind::ImplTraitPlaceholder | ||
| && tcx.impl_trait_in_trait_parent(proj.item_def_id) == fn_def_id.to_def_id() | ||
| { | ||
| let bounds = wfcx.tcx().explicit_item_bounds(proj.item_def_id); |
Contributor
There was a problem hiding this comment.
do we prove the actual item bounds somewhere else? do we already have a test for
#![feature(return_position_impl_trait_in_trait)]
trait Trait {
fn foo() -> impl Copy { String::new() }
}this is currently still broken as the following also has the same error 😁
#![feature(return_position_impl_trait_in_trait)]
trait Trait {
fn foo() -> impl Copy { 3u8 }
}idk if that's already known
Contributor
Author
There was a problem hiding this comment.
That is already known, and fixed by another PR
Contributor
|
@bors r+ rollup |
Collaborator
bors
added a commit
to rust-lang-ci/rust
that referenced
this pull request
Sep 12, 2022
Rollup of 9 pull requests Successful merges: - rust-lang#100293 (Add inline-llvm option for disabling/enabling LLVM inlining) - rust-lang#100767 (Remove manual <[u8]>::escape_ascii) - rust-lang#101668 (Suggest pub instead of public for const type item) - rust-lang#101671 (Fix naming format of IEEE 754 standard) - rust-lang#101676 (Check that the types in return position `impl Trait` in traits are well-formed) - rust-lang#101681 (Deny return-position `impl Trait` in traits for object safety) - rust-lang#101693 (Update browser UI test 0 10) - rust-lang#101701 (Rustdoc-Json: Add tests for trait impls.) - rust-lang#101706 (rustdoc: remove no-op `#search`) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This effectively duplicates
check_associated_type_bounds, but that shouldn't be for long, since we're going to remove it once we refactor RPITITs into regular associated items.Fixes #101663
We don't check
currently, but that's for a different reason, which is that we don't currently check that a trait function's return type is sized (i.e.
fn bar() -> [u8]also works in a trait).