Skip to content
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

Pretty-print always-const trait predicates correctly #119476

Merged
merged 1 commit into from
Jan 3, 2024

Conversation

fmease
Copy link
Member

@fmease fmease commented Dec 31, 2023

Follow-up to #119099.

r? fee1-dead

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Dec 31, 2023
@fmease fmease added F-const_trait_impl `#![feature(const_trait_impl)]` F-effects `#![feature(effects)]` labels Dec 31, 2023
--> $DIR/call-generic-method-nonconst.rs:23:34
|
LL | pub const EQ: bool = equals_self(&S);
| ----------- ^^ the trait `~const Foo` is not implemented for `S`
| ----------- ^^ the trait `const Foo` is not implemented for `S`
Copy link
Member Author

@fmease fmease Dec 31, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This regression is a bit unfortunate. Of course, from the perspective of the lowered code, it makes perfect sense that we register always-const trait predicate obligations in const item bodies, so technically speaking it's correct.

Still, it's bad that we're now basically saying S: const Trait is unsatisfied // required by bound ~const Trait in equals_self.

@rust-log-analyzer

This comment has been minimized.

@fmease fmease force-pushed the pp-always-const-trait-preds branch from 2d550a4 to 19e4eb2 Compare December 31, 2023 19:12
Copy link
Member

@compiler-errors compiler-errors left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

r=me unless you want a specific review

@@ -20,7 +20,8 @@ const fn equals_self<T: ~const Foo>(t: &T) -> bool {
// Calling `equals_self` with something that has a non-const impl should throw an error, despite
// it not using the impl.

// FIXME(effects): We should print `S: ~const Foo` here instead.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why? I believe that S: const Foo makes sense here, since this is in an always-const context...

Copy link
Member Author

@fmease fmease Jan 1, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It does make sense to me as I've written above, I'm just not super keen on the
diagnostic note required by this bound, *points at ~const*.
I can imagine ppl will open gh issues for that. Anyways.

Comment on lines +7 to +8
= note: expected constant `false`
found constant `true`
Copy link
Member

@compiler-errors compiler-errors Dec 31, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We may want to intercept the TypeError here and special-case it for host params (as a follow-up)...

@fmease fmease force-pushed the pp-always-const-trait-preds branch from 19e4eb2 to 01ac44a Compare January 1, 2024 13:03
@fmease
Copy link
Member Author

fmease commented Jan 1, 2024

I've removed that FIXME.

@bors r=compiler-errors rollup

@bors
Copy link
Contributor

bors commented Jan 1, 2024

📌 Commit 01ac44a has been approved by compiler-errors

It is now in the queue for this repository.

@bors
Copy link
Contributor

bors commented Jan 1, 2024

🌲 The tree is currently closed for pull requests below priority 100. This pull request will be tested once the tree is reopened.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 1, 2024
fmease added a commit to fmease/rust that referenced this pull request Jan 2, 2024
…, r=compiler-errors

Pretty-print always-const trait predicates correctly

Follow-up to rust-lang#119099.

r? fee1-dead
fmease added a commit to fmease/rust that referenced this pull request Jan 3, 2024
…, r=compiler-errors

Pretty-print always-const trait predicates correctly

Follow-up to rust-lang#119099.

r? fee1-dead
bors added a commit to rust-lang-ci/rust that referenced this pull request Jan 3, 2024
Rollup of 21 pull requests

Successful merges:

 - rust-lang#119086 (Query panic!() to useful diagnostic)
 - rust-lang#119239 (Remove unnecessary arm in `check_expr_yield`)
 - rust-lang#119298 (suppress change-tracker warnings in CI containers)
 - rust-lang#119319 (Document that File does not buffer reads/writes)
 - rust-lang#119434 (rc: Take *const T in is_dangling)
 - rust-lang#119444 (Rename `TyCtxt::is_closure` to `TyCtxt::is_closure_or_coroutine`)
 - rust-lang#119474 (Update tracking issue of naked_functions)
 - rust-lang#119476 (Pretty-print always-const trait predicates correctly)
 - rust-lang#119477 (rustdoc ui: adjust tooltip z-index to be above sidebar)
 - rust-lang#119479 (Remove two unused feature gates from rustc_query_impl)
 - rust-lang#119487 (Minor improvements in comment on `freshen.rs`)
 - rust-lang#119492 (Update books)
 - rust-lang#119494 (Deny defaults for higher-ranked generic parameters)
 - rust-lang#119498 (Update deadlinks of `strict_provenance` lints)
 - rust-lang#119505 (Don't synthesize host effect params for trait associated functions marked const)
 - rust-lang#119510 (Report I/O errors from rmeta encoding with emit_fatal)
 - rust-lang#119512 (Mark myself as back from leave)
 - rust-lang#119514 (coverage: Avoid a query stability hazard in `function_coverage_map`)
 - rust-lang#119523 (llvm: Allow `noundef` in codegen tests)
 - rust-lang#119534 (Update `thread_local` examples to use `local_key_cell_methods`)
 - rust-lang#119544 (Fix: Properly set vendor in i686-win7-windows-msvc target)

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit b41b169 into rust-lang:master Jan 3, 2024
11 checks passed
@rustbot rustbot added this to the 1.77.0 milestone Jan 3, 2024
rust-timer added a commit to rust-lang-ci/rust that referenced this pull request Jan 3, 2024
Rollup merge of rust-lang#119476 - fmease:pp-always-const-trait-preds, r=compiler-errors

Pretty-print always-const trait predicates correctly

Follow-up to rust-lang#119099.

r? fee1-dead
@fmease fmease deleted the pp-always-const-trait-preds branch January 3, 2024 20:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
F-const_trait_impl `#![feature(const_trait_impl)]` F-effects `#![feature(effects)]` S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants