Skip to content

Commit

Permalink
Rollup merge of rust-lang#33712 - jseyfried:fix_expanded_expr_span_bu…
Browse files Browse the repository at this point in the history
…g, r=nrc

Fix bug in macro expression spans

Fix a bug in macro expression spans.
r? @nrc
  • Loading branch information
Manishearth committed May 19, 2016
2 parents 14661ae + f630419 commit 8b4b3a8
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 28 deletions.
8 changes: 1 addition & 7 deletions src/libsyntax/ext/expand.rs
Original file line number Diff line number Diff line change
Expand Up @@ -70,15 +70,9 @@ pub fn expand_expr(e: P<ast::Expr>, fld: &mut MacroExpander) -> P<ast::Expr> {

// Keep going, outside-in.
let fully_expanded = fld.fold_expr(expanded_expr);
let span = fld.new_span(span);
fld.cx.bt_pop();

fully_expanded.map(|e| ast::Expr {
id: ast::DUMMY_NODE_ID,
node: e.node,
span: span,
attrs: e.attrs,
})
fully_expanded
}

ast::ExprKind::InPlace(placer, value_expr) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

// error-pattern: borrowed value does not live long enough

struct defer<'a> {
x: &'a [&'a str],
}
Expand All @@ -28,6 +30,5 @@ fn defer<'r>(x: &'r [&'r str]) -> defer<'r> {

fn main() {
let x = defer(&vec!("Goodbye", "world!"));
//~^ ERROR borrowed value does not live long enough
x.x[0];
}
12 changes: 8 additions & 4 deletions src/test/compile-fail/issue-15167.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,22 +11,26 @@
// macro f should not be able to inject a reference to 'n'.

macro_rules! f { () => (n) }
//~^ ERROR unresolved name `n`
//~| ERROR unresolved name `n`
//~| ERROR unresolved name `n`
//~| ERROR unresolved name `n`

fn main() -> (){
for n in 0..1 {
println!("{}", f!()); //~ ERROR unresolved name `n`
println!("{}", f!());
}

if let Some(n) = None {
println!("{}", f!()); //~ ERROR unresolved name `n`
println!("{}", f!());
}

if false {
} else if let Some(n) = None {
println!("{}", f!()); //~ ERROR unresolved name `n`
println!("{}", f!());
}

while let Some(n) = None {
println!("{}", f!()); //~ ERROR unresolved name `n`
println!("{}", f!());
}
}
10 changes: 4 additions & 6 deletions src/test/compile-fail/macro-backtrace-invalid-internals.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,13 @@ macro_rules! fake_method_expr {

macro_rules! fake_field_expr {
() => {
1.fake
1.fake //~ ERROR no field with that name
}
}

macro_rules! fake_anon_field_expr {
() => {
(1).0
(1).0 //~ ERROR type was not a tuple
}
}

Expand All @@ -52,8 +52,6 @@ fn main() {
fake_anon_field_stmt!(); //~ NOTE in this expansion of

let _ = fake_method_expr!(); //~ NOTE in this expansion of
let _ = fake_field_expr!(); //~ ERROR no field with that name
//~^ NOTE in this expansion of
let _ = fake_anon_field_expr!(); //~ ERROR type was not a tuple
//~^ NOTE in this expansion of
let _ = fake_field_expr!(); //~ NOTE in this expansion of
let _ = fake_anon_field_expr!(); //~ NOTE in this expansion of
}
11 changes: 5 additions & 6 deletions src/test/compile-fail/macro-backtrace-nested.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,19 @@
// we replace the span of the expanded expression with that of the call site.

macro_rules! nested_expr {
() => (fake)
() => (fake) //~ ERROR unresolved name
//~^ ERROR unresolved name
}

macro_rules! call_nested_expr {
() => (nested_expr!())
() => (nested_expr!()) //~ NOTE in this expansion of nested_expr!
}

macro_rules! call_nested_expr_sum {
() => { 1 + nested_expr!(); } //~ ERROR unresolved name
//~^ NOTE in this expansion of nested_expr!
() => { 1 + nested_expr!(); } //~ NOTE in this expansion of nested_expr!
}

fn main() {
1 + call_nested_expr!(); //~ ERROR unresolved name
//~^ NOTE in this expansion of call_nested_expr!
1 + call_nested_expr!(); //~ NOTE in this expansion of call_nested_expr!
call_nested_expr_sum!(); //~ NOTE in this expansion of
}
8 changes: 4 additions & 4 deletions src/test/compile-fail/macro-backtrace-println.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,11 @@ macro_rules! myprint {
}

macro_rules! myprintln {
($fmt:expr) => (myprint!(concat!($fmt, "\n"))); //~ ERROR invalid reference to argument `0`
//~^ NOTE in this expansion of myprint!
//~^^ NOTE in this expansion of concat!
($fmt:expr) => (myprint!(concat!($fmt, "\n"))); //~ NOTE in this expansion of myprint!
//~^ NOTE in this expansion of concat!
}

fn main() {
myprintln!("{}"); //~ NOTE in this expansion of
myprintln!("{}"); //~ ERROR invalid reference to argument `0`
//~^ NOTE in this expansion of
}

0 comments on commit 8b4b3a8

Please sign in to comment.