-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Make negative_bounds
internal & fix some of its issues
#119354
Conversation
@@ -17,4 +16,7 @@ fn test3<T: !Trait<Assoc: Send>>() {} | |||
fn test4<T>() where T: !Trait<Assoc: Send> {} | |||
//~^ ERROR associated type constraints not allowed on negative bounds | |||
|
|||
fn test5<T>() where T: !Fn() -> i32 {} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This one used to ice with no errors encountered even though `span_delayed_bug` issued
// negative trait bounds should not have bindings
.
fn weird0() -> impl Sized + !Sized {} | ||
//~^ ERROR mismatched types | ||
//~| ERROR type mismatch resolving `() == impl !Sized` | ||
fn weird1() -> impl Sized + !Sized {} | ||
//~^ ERROR mismatched types | ||
//~| ERROR type mismatch resolving `() == impl !Sized` | ||
fn weird2() -> impl !Sized + Sized {} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We elaborate !Sized
to !Sized + Sized
which is odd and which I guess we should change?
In the pretty printer, I “unelaborate” any Sized
bounds even if we have a !Sized
bound to mirror rustc_hir_analysis
's elab.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
!Sized
should opt out implicit sized bounds like ?Sized
negative_bound
's impl & mark it as internalnegative_bounds
's impl & mark it as internal
This comment was marked as resolved.
This comment was marked as resolved.
This comment has been minimized.
This comment has been minimized.
negative_bounds
's impl & mark it as internalnegative_bounds
's impl & mark the feature as internal
negative_bounds
's impl & mark the feature as internalnegative_bounds
& mark the feature as internal
1ec73ce
to
66ab625
Compare
66ab625
to
9512f23
Compare
negative_bounds
& mark the feature as internalnegative_bounds
internal & fix some of its issues
9512f23
to
0f6fc44
Compare
0f6fc44
to
977546d
Compare
// There was in fact a `?Sized` bound, return without doing anything | ||
} else { | ||
// There was no `?Sized` bound; add implicitly sized if `Sized` is available. | ||
if seen_sized_unbound || seen_negative_sized_bound { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if I should reject !Sized + ?Sized
: (kinda) “redundant ?Sized
bound” // “!Sized
already opts out of Sized
”.
@bors r+ |
@bors rollup |
…mpiler-errors Make `negative_bounds` internal & fix some of its issues r? compiler-errors
…mpiler-errors Make `negative_bounds` internal & fix some of its issues r? compiler-errors
…iaskrgr Rollup of 9 pull requests Successful merges: - rust-lang#117556 (Disallow reference to `static mut` and adding `static_mut_ref` lint) - rust-lang#119354 (Make `negative_bounds` internal & fix some of its issues) - rust-lang#119420 (Handle ForeignItem as TAIT scope.) - rust-lang#119506 (Use `resolutions(()).effective_visiblities` to avoid cycle errors in `report_object_error`) - rust-lang#119566 (Remove `-Zdump-mir-spanview`) - rust-lang#119567 (Remove `-Zreport-delayed-bugs`.) - rust-lang#119577 (Migrate memory overlap check from validator to lint) - rust-lang#119586 ([rustdoc] Fix invalid handling for static method calls in jump to definition feature) - rust-lang#119588 (Move `i586-unknown-netbsd` from tier 2 to tier 3 platform support table) r? `@ghost` `@rustbot` modify labels: rollup
…mpiler-errors Make `negative_bounds` internal & fix some of its issues r? compiler-errors
…llaumeGomez Rollup of 10 pull requests Successful merges: - rust-lang#119354 (Make `negative_bounds` internal & fix some of its issues) - rust-lang#119414 (bootstrap: Move -Clto= setting from Rustc::run to rustc_cargo) - rust-lang#119420 (Handle ForeignItem as TAIT scope.) - rust-lang#119506 (Use `resolutions(()).effective_visiblities` to avoid cycle errors in `report_object_error`) - rust-lang#119538 (Cleanup error handlers: round 5) - rust-lang#119566 (Remove `-Zdump-mir-spanview`) - rust-lang#119567 (Remove `-Zreport-delayed-bugs`.) - rust-lang#119577 (Migrate memory overlap check from validator to lint) - rust-lang#119586 ([rustdoc] Fix invalid handling for static method calls in jump to definition feature) - rust-lang#119588 (Move `i586-unknown-netbsd` from tier 2 to tier 3 platform support table) r? `@ghost` `@rustbot` modify labels: rollup
…mpiler-errors Make `negative_bounds` internal & fix some of its issues r? compiler-errors
…mpiler-errors Make `negative_bounds` internal & fix some of its issues r? compiler-errors
…iaskrgr Rollup of 8 pull requests Successful merges: - rust-lang#118680 (Add support for shell argfiles) - rust-lang#119151 (Hide foreign `#[doc(hidden)]` paths in import suggestions) - rust-lang#119350 (Imply outlives-bounds on lazy type aliases) - rust-lang#119354 (Make `negative_bounds` internal & fix some of its issues) - rust-lang#119506 (Use `resolutions(()).effective_visiblities` to avoid cycle errors in `report_object_error`) - rust-lang#119554 (Fix scoping for let chains in match guards) - rust-lang#119563 (Check yield terminator's resume type in borrowck) - rust-lang#119589 (cstore: Remove unnecessary locking from `CrateMetadata`) r? `@ghost` `@rustbot` modify labels: rollup
…iaskrgr Rollup of 8 pull requests Successful merges: - rust-lang#119151 (Hide foreign `#[doc(hidden)]` paths in import suggestions) - rust-lang#119350 (Imply outlives-bounds on lazy type aliases) - rust-lang#119354 (Make `negative_bounds` internal & fix some of its issues) - rust-lang#119506 (Use `resolutions(()).effective_visiblities` to avoid cycle errors in `report_object_error`) - rust-lang#119554 (Fix scoping for let chains in match guards) - rust-lang#119563 (Check yield terminator's resume type in borrowck) - rust-lang#119589 (cstore: Remove unnecessary locking from `CrateMetadata`) - rust-lang#119622 (never patterns: Document behavior of never patterns with macros-by-example) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of rust-lang#119354 - fmease:negative_bounds-fixes, r=compiler-errors Make `negative_bounds` internal & fix some of its issues r? compiler-errors
r? compiler-errors