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.
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
Use only ty::Unevaluated<'tcx, ()> in type system #98588
Use only ty::Unevaluated<'tcx, ()> in type system #98588
Changes from all commits
a4bbb8d
2554fa1
a7735cd
0726265
372c4fd
bea0a6d
db9a2d2
29c0364
ba00189
6af8fb7
d77248e
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
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.
again only
ConstKind::Value
should be possibleThere 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.
No, we can still have
ConstKind::Unevaluated
here.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.
that seems wrong? the constant should be evaluated in
monomorphize
🤔maybe we should return an
Err
here if this fails to evaluaterust/compiler/rustc_trait_selection/src/traits/query/normalize.rs
Lines 327 to 328 in 4045ce6
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.
It's also not clear to me why we would want to error here if we can't evaluate yet, this is called all the time during typecheck, isn't it?
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.
no, the normalize query isn't used during typeck, it's only used afterwards.
i guess it's fine to keep this for now 🤷 will be easier to fix this once your pr has landed
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 is a strange check. Why would CTFE care whether the constant is a valid valtree? What if
uv
has a type that does not even allow valtree construction, like a raw pointer?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.
Oh, this is specifically for
mir::ConstantKind::Ty
, which I guess must always be valtree-constructible.But then IMO it would make most sense to have a function that evaluates a
ty::Const
to aValtree
, and always go through that. Doesn't that exist as a query or so?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 will do that in #104317