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

Add test for NLL: unexpected "free region `` does not outlive" error #52793

Merged
merged 1 commit into from
Aug 1, 2018

Conversation

davidtwco
Copy link
Member

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jul 27, 2018
@pnkfelix
Copy link
Member

@davidtwco Since the test uses #[rustc_regions], which is definitely very specific to the internals of NLL, I think the test should live underneath src/test/ui/nll/closure-requirements/.

(that is, I don't want someone who's idly skimming src/test/ui to run into something like this.)

@pnkfelix
Copy link
Member

Actually ... why are you using #[rustc_regions] ?

My interpretation of our request for a test is that we want one that reflects the end user's experience.

We don't need to be exploring the internals of the region requirements here.

@pnkfelix pnkfelix 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 Jul 31, 2018
@davidtwco
Copy link
Member Author

@pnkfelix I've updated the test to remove #![rustc_regions].

@pnkfelix
Copy link
Member

pnkfelix commented Aug 1, 2018

@bors r+ rollup

@bors
Copy link
Contributor

bors commented Aug 1, 2018

📌 Commit 4488d5530a840f442543c8c144fa46e973e23d9b has been approved by pnkfelix

@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 1, 2018
@pnkfelix
Copy link
Member

pnkfelix commented Aug 1, 2018

@bors r-

@bors bors 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-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Aug 1, 2018
@pnkfelix
Copy link
Member

pnkfelix commented Aug 1, 2018

@davidtwco so you can tell that I changed my mind about something here.

This test represents a case where NLL could break old code that was accepted by the AST-borrowck.

Its exactly the kind of case where I think the right approach is not to use #![feature(nll)], but instead to make the test encode both of the behaviors in the distinct borrow-checkers, so that we can immediately see (when we compare the diffs) that this is a scenario where the move to NLL is going to break people's code.

At the very least, I would remove the #![feature(nll)] from the test, and add #[rustc_error] to the fn main. This will force the compiler to error out even when the test is accepted under the AST-borrowck.

// option. This file may not be copied, modified, or distributed
// except according to those terms.

#![feature(rustc_attrs)]
Copy link
Member

Choose a reason for hiding this comment

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

please add a comment noting that this test is checking a problem that only arises in NLL mode, and maybe a pointer to the issue-49824.nll.stderr file, just so someone who looks over these tests in the futures doesn't think that this test is a no-op.

Copy link
Member Author

Choose a reason for hiding this comment

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

Fixed.

@pnkfelix
Copy link
Member

pnkfelix commented Aug 1, 2018

@bors r+ rollup

@bors
Copy link
Contributor

bors commented Aug 1, 2018

📌 Commit 8bbf042 has been approved by pnkfelix

@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 1, 2018
pietroalbini added a commit to pietroalbini/rust that referenced this pull request Aug 1, 2018
Add test for NLL: unexpected "free region `` does not outlive" error

Fixes rust-lang#49824.

r? @pnkfelix @nikomatsakis
bors added a commit that referenced this pull request Aug 1, 2018
Rollup of 15 pull requests

Successful merges:

 - #52793 (Add test for NLL: unexpected "free region `` does not outlive" error )
 - #52799 (Use BitVector for global sets of AttrId)
 - #52809 (Add test for unexpected region for local data ReStatic)
 - #52834 ([NLL] Allow conflicting borrows of promoted length zero arrays)
 - #52835 (Fix Alias intra doc ICE)
 - #52854 (fix memrchr in miri)
 - #52899 (tests/ui: Add missing mips{64} ignores)
 - #52908 (Use SetLenOnDrop in Vec::truncate())
 - #52915 (Don't count MIR locals as borrowed after StorageDead when finding locals live across a yield terminator)
 - #52926 (rustc: Trim down the `rust_2018_idioms` lint group)
 - #52930 (rustc_resolve: record single-segment extern crate import resolutions.)
 - #52939 (Make io::Read::read_to_end consider io::Take::limit)
 - #52942 (Another SmallVec.extend optimization)
 - #52947 (1.27 actually added the `armv5te-unknown-linux-musleabi` target)
 - #52954 (async can begin expressions)

Failed merges:

r? @ghost
@bors bors merged commit 8bbf042 into rust-lang:master Aug 1, 2018
@davidtwco davidtwco deleted the issue-49824 branch August 8, 2018 11:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in 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.

4 participants