-
Notifications
You must be signed in to change notification settings - Fork 12.8k
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
Expand the "givens" set to cover transitive relations. #24527
Conversation
Expand the "givens" set to cover transitive relations. The givens array stores relationships like `'c <= '0` (where `'c` is a free region and `'0` is an inference variable) that are derived from closure arguments. These are (rather hackily) ignored for purposes of inference, preventing spurious errors. The current code did not handle transitive cases like `'c <= '0` and `'0 <= '1`. Fixes #24085. r? @pnkfelix cc @bkoropoff *But* I am not sure whether this fix will have a compile-time hit. I'd like to push to try branch observe cycle times.
💔 Test failed - try-bsd |
@nikomatsakis what timing info were you hoping to extract from the try run? |
☔ The latest upstream changes (presumably #24209) made this pull request unmergeable. Please resolve the merge conflicts. |
@pnkfelix I guess just an overall cycle time effect. |
Is this PR still valid/needed/wanted? |
Although I worked around the bug, I would like it to be fixed. On Fri, Jun 12, 2015 at 2:41 PM Steve Klabnik notifications@github.com
|
stores relationships like `'c <= '0` (where `'c` is a free region and `'0` is an inference variable) that are derived from closure arguments. These are (rather hackily) ignored for purposes of inference, preventing spurious errors. The current code did not handle transitive cases like `'c <= '0` and `'0 <= '1`. Fixes rust-lang#24085.
OK, I rebased this branch, and compared it's effect on compilaton time. It seems to be negligible to non-existent, at least when building rustc. |
11720a1
to
29c8653
Compare
@bors r+ |
📌 Commit 29c8653 has been approved by |
For reference, using this branch, compiling librustc and all descendants spent 34.962s in type-checking. On master it took 35.013s. |
Expand the "givens" set to cover transitive relations. The givens array stores relationships like `'c <= '0` (where `'c` is a free region and `'0` is an inference variable) that are derived from closure arguments. These are (rather hackily) ignored for purposes of inference, preventing spurious errors. The current code did not handle transitive cases like `'c <= '0` and `'0 <= '1`. Fixes #24085. r? @pnkfelix cc @bkoropoff *But* I am not sure whether this fix will have a compile-time hit. I'd like to push to try branch observe cycle times.
Expand the "givens" set to cover transitive relations. The givens array
stores relationships like
'c <= '0
(where'c
is a free region and'0
is an inference variable) that are derived from closurearguments. These are (rather hackily) ignored for purposes of inference,
preventing spurious errors. The current code did not handle transitive
cases like
'c <= '0
and'0 <= '1
. Fixes #24085.r? @pnkfelix
cc @bkoropoff
But I am not sure whether this fix will have a compile-time hit. I'd like to push to try branch observe cycle times.