Skip to content

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

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 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
Collaborator

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
Collaborator

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
# 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.

4 participants