Uh oh!
There was an error while loading. Please reload this page.
Make place projections concrete. - #60441
Conversation
rust-highfive
commented
May 1, 2019
r? @eddyb (rust_highfive has picked a reviewer for you, use r? to override) |
Uh oh!
There was an error while loading. Please reload this page.
eddyb
commented
May 1, 2019
I thought this was because the MIR borrowck needs to replace the indexing values with an "abstract value" (i.e. treating |
nikomatsakis
commented
May 1, 2019
I think that capability wound up not being used |
matthewjasper
commented
May 1, 2019
There's and Line 2007 in 6cc24f2 But both of those only use ProjectionElem.This seems fine, but |
There was a problem hiding this comment.
Oh, wow, this comment has been wrong for most of MIR's existence, I think?
For reasons, Projection<...> isn't used by MIR borrowck, but ProjectionElem is (as AbstractElem).
I think that's why Projection remained parameterized as well, but I'm not sure.
vext01
commented
May 2, 2019
OK, so is there a concensus on this? If you'd like this to go in, then I'll run some tests and check for fallout.
Is there some reading material on this please. This is likely to influence what I'm doing in my fork ;) |
vext01
commented
May 2, 2019
|
Uh oh!
There was an error while loading. Please reload this page.
bors
commented
May 4, 2019
☔ The latest upstream changes (presumably #59897) made this pull request unmergeable. Please resolve the merge conflicts. |
vext01
commented
May 4, 2019
Folks, before I go down the path of resolving those conflicts, do you want this change? |
eddyb
commented
May 4, 2019
Yes, sorry for not being clearer. This is an accidental leftover that everyone forgot about because of the |
18: Implement more TIR lowerings. r=ltratt a=vext01 This is a whole load more TIR lowerings. The TIR graphs are starting to look more complete, although there's still a lot more to do. I only stopped here because the changes are getting large, and more edits can come in later PRs. There's one part of this code (which I will point out), which i'm likely to change. It involves a type-parameterised MIR struct, which I think ultimately we will make concrete in TIR. However, I want to see the outcome of this upstream PR first: rust-lang/rust#60441 There's a ykpack change to accompany this: ykjit/yk#3 Co-authored-by: Edd Barrett <vext01@gmail.com>
18: Implement more TIR lowerings. r=ltratt a=vext01 This is a whole load more TIR lowerings. The TIR graphs are starting to look more complete, although there's still a lot more to do. I only stopped here because the changes are getting large, and more edits can come in later PRs. There's one part of this code (which I will point out), which i'm likely to change. It involves a type-parameterised MIR struct, which I think ultimately we will make concrete in TIR. However, I want to see the outcome of this upstream PR first: rust-lang/rust#60441 There's a ykpack change to accompany this: ykjit/yk#3 Co-authored-by: Edd Barrett <vext01@gmail.com>
vext01
commented
May 7, 2019
synced. OK for me to squash? |
vext01
commented
May 8, 2019
Oops, I missed this. Leave it with me. |
vext01
commented
May 9, 2019
That last commit does the renaming. Quite a lot of churn. OK to squash? |
oli-obk
commented
May 10, 2019
lgtm now, squashing would be good, yes |
Uh oh!
There was an error while loading. Please reload this page.
bors
commented
May 24, 2019
☔ The latest upstream changes (presumably #60984) made this pull request unmergeable. Please resolve the merge conflicts. |
vext01
commented
May 24, 2019
If everyone is OK with a4ba4fa, I'll squash. |
rust-highfive
commented
May 24, 2019
The job Click to expand the log.I'm a bot! I can only do what humans tell me to, so if this was not helpful or you have suggestions for improvements, please ping or otherwise contact |
vext01
commented
May 24, 2019
Sorry, I screwed up the last commit. |
oli-obk
commented
May 24, 2019
Once upon a time (commit 9bd35c0) there were two kinds of projection: one for places, and one for constants. It therefore made sense to share the `Projection` struct for both. Although the different use-cases used different concrete types, sharing was made possible by type-parameterisation of `Projection`. Since then, however, the usage of projections in constants has disappeared, meaning that (forgetting lifetimes for a moment) the parameterised type is only every instantiated under one guise. So it may as well be a concrete type.
1bbff00 to
123a456Comparevext01
commented
May 24, 2019
Squashed. |
oli-obk
commented
May 24, 2019
@bors r+ |
bors
commented
May 24, 2019
📌 Commit 123a456 has been approved by |
bors
commented
May 25, 2019
Make place projections concrete. **I'm not sure if we want this. I'm raising the PR for discussion** Whilst doing some work on our Rust fork, I noticed the following: Once upon a time (commit 9bd35c0) there were two kinds of projection: one for places, and one for constants. It therefore made sense to share the `Projection` struct for both. Although the different use-cases used different concrete types, sharing was made possible by type-parameterisation of `Projection`. Since then, however, the usage of projections in constants has disappeared, meaning that (forgetting lifetimes for a moment) the parameterised type is only every instantiated under one guise. So it may as well be a concrete type. Right? What do people think? This is entirely untested, although it does check. If we *don't* want this, then we should at least update the incorrect comment against `Projection`. Thanks
bors
commented
May 25, 2019
☀️ Test successful - checks-travis, status-appveyor |
I'm not sure if we want this. I'm raising the PR for discussion
Whilst doing some work on our Rust fork, I noticed the following:
Once upon a time (commit 9bd35c0) there were two kinds of
projection: one for places, and one for constants. It therefore made
sense to share the
Projectionstruct for both. Although the differentuse-cases used different concrete types, sharing was made possible by
type-parameterisation of
Projection.Since then, however, the usage of projections in constants has
disappeared, meaning that (forgetting lifetimes for a moment) the
parameterised type is only every instantiated under one guise. So it may
as well be a concrete type. Right?
What do people think? This is entirely untested, although it does check.
If we don't want this, then we should at least update the incorrect comment against
Projection.Thanks