Skip to content

rustc_typeck: construct {Closure,Generator}Substs more directly. #74314

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Merged
merged 1 commit into from
Aug 16, 2020

Conversation

eddyb
Copy link
Member

@eddyb eddyb commented Jul 14, 2020

We've previously not had a way to create {Closure,Generator}Substs other than instantiating all generics as inference variables and unifying the inference types (extracted using the regular {Closure,Generator}Substs accessors), with the actual types.

With this PR, those hacks, and assumptions about the order of closure/generator-specific components, are replaced with a simple API where the base Substs are combined with the additional information into a {Closure,Generator}Substs.
This might also be faster than relying inference, although probably not by much.

r? @nikomatsakis cc #53488 @blitzerr

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jul 14, 2020
@eddyb
Copy link
Member Author

eddyb commented Jul 14, 2020

@bors try @rust-timer queue

@rust-timer
Copy link
Collaborator

Awaiting bors try build completion

@bors
Copy link
Collaborator

bors commented Jul 14, 2020

⌛ Trying commit 5533705 with merge 994616d7663772c32c9ad592d445f68a21fcc155...

@bors
Copy link
Collaborator

bors commented Jul 14, 2020

☀️ Try build successful - checks-actions, checks-azure
Build commit: 994616d7663772c32c9ad592d445f68a21fcc155 (994616d7663772c32c9ad592d445f68a21fcc155)

@rust-timer
Copy link
Collaborator

Queued 994616d7663772c32c9ad592d445f68a21fcc155 with parent 9d09331, future comparison URL.

@rust-timer
Copy link
Collaborator

Finished benchmarking try commit (994616d7663772c32c9ad592d445f68a21fcc155): comparison url.

@eddyb
Copy link
Member Author

eddyb commented Jul 14, 2020

Yeah, it's neutral, no big surprise there.

@eddyb
Copy link
Member Author

eddyb commented Jul 16, 2020

Just noticed #69749 adds "parent substs" to the Split{Closure,Generator}Generics, I should do that for this and #74341.

Copy link
Contributor

@nikomatsakis nikomatsakis left a comment

Choose a reason for hiding this comment

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

This seems like a more readable version. r=me if you fix your own FIXMEs to rename things, but did you want to hold off to avoid conflicting with @davidtwco's polymorphization PR?

@eddyb
Copy link
Member Author

eddyb commented Jul 19, 2020

@nikomatsakis Yeah, let's land polymorphization first, it's slightly cleaner than this PR anyway.

@Muirrum Muirrum added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Aug 6, 2020
@Dylan-DPC-zz Dylan-DPC-zz added S-blocked Status: Blocked on something else such as an RFC or other implementation work. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Aug 6, 2020
@Dylan-DPC-zz
Copy link

marking it blocked based on author's comment

@eddyb
Copy link
Member Author

eddyb commented Aug 16, 2020

@Dylan-DPC #69749 had already landed by the time the label was added.

@eddyb eddyb added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-blocked Status: Blocked on something else such as an RFC or other implementation work. labels Aug 16, 2020
@eddyb eddyb force-pushed the closure-substs-direct branch from 5533705 to 3ad05c2 Compare August 16, 2020 18:01
@Dylan-DPC-zz
Copy link

ah sweet race condition :D

@eddyb eddyb force-pushed the closure-substs-direct branch from 3ad05c2 to f5a0896 Compare August 16, 2020 18:18
@eddyb eddyb force-pushed the closure-substs-direct branch from f5a0896 to 5d44d54 Compare August 16, 2020 18:34
@eddyb
Copy link
Member Author

eddyb commented Aug 16, 2020

@bors r=nikomatsakis

@bors
Copy link
Collaborator

bors commented Aug 16, 2020

📌 Commit 5d44d54 has been approved by nikomatsakis

@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-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Aug 16, 2020
Dylan-DPC-zz pushed a commit to Dylan-DPC-zz/rust that referenced this pull request Aug 16, 2020
…matsakis

rustc_typeck: construct {Closure,Generator}Substs more directly.

We've previously not had a way to create `{Closure,Generator}Substs` other than instantiating all generics as inference variables and unifying the inference types (extracted using the regular `{Closure,Generator}Substs` accessors), with the actual types.

With this PR, those hacks, and assumptions about the order of closure/generator-specific components, are replaced with a simple API where the base `Substs` are combined with the additional information into a `{Closure,Generator}Substs`.
This might also be faster than relying inference, although probably not by much.

r? @nikomatsakis cc rust-lang#53488 @blitzerr
bors added a commit to rust-lang-ci/rust that referenced this pull request Aug 16, 2020
Rollup of 10 pull requests

Successful merges:

 - rust-lang#74204 (Don't visit foreign function bodies when lowering ast to hir)
 - rust-lang#74314 (rustc_typeck: construct {Closure,Generator}Substs more directly.)
 - rust-lang#74346 (Use LocalDefId instead of HirId for reachable_set elements.)
 - rust-lang#74399 (Move DelaySpanBugEmitted to ty::context)
 - rust-lang#75177 (Add regression test for issue-66768)
 - rust-lang#75223 (Add #[track_caller] to `Session::delay_span_bug`)
 - rust-lang#75423 (Move to intra-doc links for /library/core/src/hint.rs)
 - rust-lang#75485 (pin docs: add some forward references)
 - rust-lang#75569 (Bump minor version of emsdk to 1.38.47)
 - rust-lang#75596 (Switch to intra-doc links in /sys/windows/ext/{ffi,fs,process}.rs)

Failed merges:

r? @ghost
@bors bors merged commit c518347 into rust-lang:master Aug 16, 2020
@eddyb eddyb deleted the closure-substs-direct branch August 17, 2020 02:20
@cuviper cuviper added this to the 1.47.0 milestone May 2, 2024
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants