diff options
| author | Nick Cameron <ncameron@mozilla.com> | 2017-01-10 11:02:26 +1300 |
|---|---|---|
| committer | Nick Cameron <ncameron@mozilla.com> | 2017-01-10 14:06:30 +1300 |
| commit | 3be6991099d612088c34eeed7cbfd5eaee3873a8 (patch) | |
| tree | 04f163aa662bab8d90c51b501a7949224fc1fc63 /src/libsyntax_ext | |
| parent | 7265b938425135702fb2aea9874afca1d3b4c5be (diff) | |
| download | rust-3be6991099d612088c34eeed7cbfd5eaee3873a8.tar.gz rust-3be6991099d612088c34eeed7cbfd5eaee3873a8.zip | |
Give custom derive spans an expansion ID
Diffstat (limited to 'src/libsyntax_ext')
| -rw-r--r-- | src/libsyntax_ext/deriving/mod.rs | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/src/libsyntax_ext/deriving/mod.rs b/src/libsyntax_ext/deriving/mod.rs index 2573690d153..096f6dfd5d8 100644 --- a/src/libsyntax_ext/deriving/mod.rs +++ b/src/libsyntax_ext/deriving/mod.rs @@ -90,10 +90,10 @@ fn allow_unstable(cx: &mut ExtCtxt, span: Span, attr_name: &str) -> Span { } pub fn expand_derive(cx: &mut ExtCtxt, - span: Span, - mitem: &MetaItem, - annotatable: Annotatable) - -> Vec<Annotatable> { + span: Span, + mitem: &MetaItem, + annotatable: Annotatable) + -> Vec<Annotatable> { debug!("expand_derive: span = {:?}", span); debug!("expand_derive: mitem = {:?}", mitem); debug!("expand_derive: annotatable input = {:?}", annotatable); @@ -235,8 +235,21 @@ pub fn expand_derive(cx: &mut ExtCtxt, let titem = cx.meta_list_item_word(titem.span, titem.name().unwrap()); let mitem = cx.meta_list(titem.span, derive, vec![titem]); let item = Annotatable::Item(item); + + let span = Span { + expn_id: cx.codemap().record_expansion(codemap::ExpnInfo { + call_site: mitem.span, + callee: codemap::NameAndSpan { + format: codemap::MacroAttribute(Symbol::intern(&format!("derive({})", tname))), + span: None, + allow_internal_unstable: false, + }, + }), + ..mitem.span + }; + if let SyntaxExtension::CustomDerive(ref ext) = *ext { - return ext.expand(cx, mitem.span, &mitem, item); + return ext.expand(cx, span, &mitem, item); } else { unreachable!() } @@ -285,8 +298,8 @@ pub fn expand_derive(cx: &mut ExtCtxt, expn_id: cx.codemap().record_expansion(codemap::ExpnInfo { call_site: titem.span, callee: codemap::NameAndSpan { - format: codemap::MacroAttribute(Symbol::intern(&format!("derive({})", tname))), - span: Some(titem.span), + format: codemap::MacroAttribute(name), + span: None, allow_internal_unstable: true, }, }), |
