Use hygiene to access the injected crate (core or std) from builtin macros.

This commit is contained in:
Jeffrey Seyfried
2017-12-06 10:50:55 -08:00
parent 8db163e53d
commit 9c7969d3df
20 changed files with 99 additions and 102 deletions

View File

@@ -8,6 +8,7 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.
use deriving::path_std;
use deriving::generic::*;
use deriving::generic::ty::*;
@@ -24,13 +25,13 @@ pub fn expand_deriving_debug(cx: &mut ExtCtxt,
item: &Annotatable,
push: &mut FnMut(Annotatable)) {
// &mut ::std::fmt::Formatter
let fmtr = Ptr(Box::new(Literal(path_std!(cx, core::fmt::Formatter))),
let fmtr = Ptr(Box::new(Literal(path_std!(cx, fmt::Formatter))),
Borrowed(None, ast::Mutability::Mutable));
let trait_def = TraitDef {
span,
attributes: Vec::new(),
path: path_std!(cx, core::fmt::Debug),
path: path_std!(cx, fmt::Debug),
additional_bounds: Vec::new(),
generics: LifetimeBounds::empty(),
is_unsafe: false,
@@ -40,7 +41,7 @@ pub fn expand_deriving_debug(cx: &mut ExtCtxt,
generics: LifetimeBounds::empty(),
explicit_self: borrowed_explicit_self(),
args: vec![fmtr],
ret_ty: Literal(path_std!(cx, core::fmt::Result)),
ret_ty: Literal(path_std!(cx, fmt::Result)),
attributes: Vec::new(),
is_unsafe: false,
unify_fieldless_variants: false,