-
Notifications
You must be signed in to change notification settings - Fork 12.7k
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
Implement RFC 2052 (Epochs) #48014
Merged
bors
merged 4 commits into
rust-lang:master
from
Manishearth:stealing-chickens-on-the-internet
Feb 7, 2018
Merged
Implement RFC 2052 (Epochs) #48014
Changes from all commits
Commits
Show all changes
4 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT | ||
// file at the top-level directory of this distribution and at | ||
// http://rust-lang.org/COPYRIGHT. | ||
// | ||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or | ||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | ||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your | ||
// option. This file may not be copied, modified, or distributed | ||
// except according to those terms. | ||
|
||
// ignore-tidy-linelength | ||
// compile-flags: -Zepoch=2015 -Zunstable-options | ||
|
||
// tests that epochs work with the tyvar warning-turned-error | ||
|
||
#[deny(warnings)] | ||
fn main() { | ||
let x = 0; | ||
let y = &x as *const _; | ||
let _ = y.is_null(); | ||
//~^ error: the type of this value must be known in this context [tyvar_behind_raw_pointer] | ||
//~^^ warning: this was previously accepted | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
// Copyright 2012 The Rust Project Developers. See the COPYRIGHT | ||
// file at the top-level directory of this distribution and at | ||
// http://rust-lang.org/COPYRIGHT. | ||
// | ||
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or | ||
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license | ||
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your | ||
// option. This file may not be copied, modified, or distributed | ||
// except according to those terms. | ||
|
||
// ignore-tidy-linelength | ||
// compile-flags: -Zepoch=2018 -Zunstable-options | ||
|
||
// tests that epochs work with the tyvar warning-turned-error | ||
|
||
#[deny(warnings)] | ||
fn main() { | ||
let x = 0; | ||
let y = &x as *const _; | ||
let _ = y.is_null(); | ||
//~^ error: the type of this value must be known to call a method on a raw pointer on it [E0908] | ||
} |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we should prepare for macro compatibility here, and make this some kind of test that takes a span. I'm not sure where the method should go -- maybe put it on the tcx for now? That seems like it would definitely have access to whatever data it needs to make the determination.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think the tcx makes sense; the idea behind epoches was that most of the changes would be to stuff like parsing and all, the "language frontend". We don't have a tcx when parsing. I think we should keep this unresolved for now and when someone knowledgeable about macro stuff comes along they can look into this.
I think the Session already has a lot of the Span info that can be used here; at least "originates from macro from X crate" can be done from the Session, though the interaction of many macros may be confusing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
In the future, we plan to move so that the tcx is the first thing that is created, so that everything can be query driven. This is why I suggested tcx. However, session is also fine.
Mm, I'm not sure. I think it'll be useful to require a span so that, for any change, we are at least thinking about how to deal with it.
--
Eh. Having thought about it some more, while I'd rather lay out a "forwards compatible" API with what we will likely eventually need, I don't care enough to block on it. And there's always an argument for doing the simplest possible thing to start.