use std::vec;
use syntax::ast;
use syntax::attr;
-use syntax::codemap::dummy_sp;
+use syntax::codemap::DUMMY_SP;
use syntax::codemap;
use syntax::fold::ast_fold;
use syntax::fold;
use syntax::opt_vec;
use syntax::util::small_vector::SmallVector;
-static STD_VERSION: &'static str = "0.9-pre";
+pub static VERSION: &'static str = "0.9-pre";
pub fn maybe_inject_libstd_ref(sess: Session, crate: ast::Crate)
-> ast::Crate {
fn spanned<T>(x: T) -> codemap::Spanned<T> {
codemap::Spanned {
node: x,
- span: dummy_sp(),
+ span: DUMMY_SP,
}
}
}
impl fold::ast_fold for StandardLibraryInjector {
- fn fold_crate(&self, crate: ast::Crate) -> ast::Crate {
- let version = STD_VERSION.to_managed();
- let vers_item = attr::mk_name_value_item_str(@"vers", version);
+ fn fold_crate(&mut self, crate: ast::Crate) -> ast::Crate {
let mut vis = ~[ast::view_item {
node: ast::view_item_extern_mod(self.sess.ident_of("std"),
- None,
- ~[vers_item.clone()],
+ Some((format!("std\\#{}", VERSION).to_managed(),
+ ast::CookedStr)),
ast::DUMMY_NODE_ID),
attrs: ~[],
vis: ast::private,
- span: dummy_sp()
+ span: DUMMY_SP
}];
if use_uv(&crate) && !self.sess.building_library.get() {
vis.push(ast::view_item {
node: ast::view_item_extern_mod(self.sess.ident_of("green"),
- None,
- ~[vers_item],
+ Some((format!("green\\#{}", VERSION).to_managed(),
+ ast::CookedStr)),
ast::DUMMY_NODE_ID),
attrs: ~[],
vis: ast::private,
- span: dummy_sp()
+ span: DUMMY_SP
});
vis.push(ast::view_item {
node: ast::view_item_extern_mod(self.sess.ident_of("rustuv"),
- None,
- ~[vers_item],
+ Some((format!("rustuv\\#{}", VERSION).to_managed(),
+ ast::CookedStr)),
ast::DUMMY_NODE_ID),
attrs: ~[],
vis: ast::private,
- span: dummy_sp()
+ span: DUMMY_SP
});
}
}
}
- fn fold_item(&self, item: @ast::item) -> SmallVector<@ast::item> {
+ fn fold_item(&mut self, item: @ast::item) -> SmallVector<@ast::item> {
if !no_prelude(item.attrs) {
// only recur if there wasn't `#[no_implicit_prelude];`
// on this item, i.e. this means that the prelude is not
}
}
- fn fold_mod(&self, module: &ast::_mod) -> ast::_mod {
+ fn fold_mod(&mut self, module: &ast::_mod) -> ast::_mod {
let prelude_path = ast::Path {
- span: dummy_sp(),
+ span: DUMMY_SP,
global: false,
segments: ~[
ast::PathSegment {
node: ast::view_item_use(~[vp]),
attrs: ~[],
vis: ast::private,
- span: dummy_sp(),
+ span: DUMMY_SP,
};
let vis = vec::append(~[vi2], module.view_items);
}
fn inject_libstd_ref(sess: Session, crate: ast::Crate) -> ast::Crate {
- let fold = StandardLibraryInjector {
+ let mut fold = StandardLibraryInjector {
sess: sess,
};
fold.fold_crate(crate)