Skip to content

Commit 7387c7f

Browse files
committed
---
yaml --- r: 80782 b: refs/heads/try c: 524c190 h: refs/heads/master v: v3
1 parent c7bbf31 commit 7387c7f

File tree

3 files changed

+33
-2
lines changed

3 files changed

+33
-2
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
refs/heads/master: 4c6bf4872012c010f84dc7fa2cdfe87522533f89
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: cbd1eefbd350797b783df119fed7956d7e1c74ad
5-
refs/heads/try: bca015d9ffd94c36fc8e1b4f30727f71e5ce579f
5+
refs/heads/try: 524c190565c0dbafdb7f27bc3c27c0952f32c2f9
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b
88
refs/heads/try2: 147ecfdd8221e4a4d4e090486829a06da1e0ca3c

branches/try/src/libsyntax/ext/expand.rs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,26 @@ pub fn expand_expr(extsbox: @mut SyntaxEnv,
7676
// mark before:
7777
let marked_before = mark_tts(*tts,fm);
7878
let marked_ctxt = new_mark(fm, ctxt);
79+
80+
// The span that we pass to the expanders we want to
81+
// be the root of the call stack. That's the most
82+
// relevant span and it's the actual invocation of
83+
// the macro.
84+
let mut relevant_info = cx.backtrace();
85+
let mut einfo = relevant_info.unwrap();
86+
loop {
87+
match relevant_info {
88+
None => { break }
89+
Some(e) => {
90+
einfo = e;
91+
relevant_info = einfo.call_site.expn_info;
92+
}
93+
}
94+
}
95+
7996
let expanded =
80-
match expandfun(cx, mac.span, marked_before, marked_ctxt) {
97+
match expandfun(cx, einfo.call_site,
98+
marked_before, marked_ctxt) {
8199
MRExpr(e) => e,
82100
MRAny(expr_maker,_,_) => expr_maker(),
83101
_ => {
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
fn main() {
12+
debug!("%s %s", 3); //~ ERROR: not enough arguments
13+
}

0 commit comments

Comments
 (0)