Skip to content

Commit

Permalink
Rollup merge of rust-lang#69896 - petrochenkov:reqname2, r=Centril
Browse files Browse the repository at this point in the history
parse: Tweak the function parameter edition check

Follow-up to rust-lang#69801.

Edition of a code fragment is inferred from "the place where the code is written".
For individual tokens like edition-specific keywords it may be the span of the token itself ("uninterpolated" span), but for larger code fragments it's probably not, in the test example the trait method is obviously written in "2015 edition code".

r? @Centril
  • Loading branch information
Centril committed Mar 11, 2020
2 parents 63464c2 + 6b27e8d commit 4e34e15
Show file tree
Hide file tree
Showing 8 changed files with 23 additions and 3 deletions.
4 changes: 1 addition & 3 deletions src/librustc_parse/parser/item.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1544,9 +1544,7 @@ impl<'a> Parser<'a> {

let is_name_required = match self.token.kind {
token::DotDotDot => false,
// FIXME: Consider using interpolated token for this edition check,
// it should match the intent of edition hygiene better.
_ => req_name(self.token.uninterpolate().span.edition()),
_ => req_name(self.token.span.edition()),
};
let (pat, ty) = if is_name_required || self.is_named_param() {
debug!("parse_param_general parse_pat (is_name_required:{})", is_name_required);
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
10 changes: 10 additions & 0 deletions src/test/ui/anon-params/anon-params-edition-hygiene.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// check-pass
// edition:2018
// aux-build:anon-params-edition-hygiene.rs

#[macro_use]
extern crate anon_params_edition_hygiene;

generate_trait_2015!(u8);

fn main() {}
12 changes: 12 additions & 0 deletions src/test/ui/anon-params/auxiliary/anon-params-edition-hygiene.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
// edition:2015

#[macro_export]
macro_rules! generate_trait_2015 {
($Type: ident) => {
trait Trait {
fn method($Type) {}
}
};
}

fn main() {}

0 comments on commit 4e34e15

Please sign in to comment.