diff options
author | John Hodge <tpg@mutabah.net> | 2016-05-24 21:55:06 +0800 |
---|---|---|
committer | John Hodge <tpg@mutabah.net> | 2016-05-24 21:55:06 +0800 |
commit | 23cba420f497b5da5b0a63f078cea2ef2291078a (patch) | |
tree | 96d60ee57ac0014f3a359b94a0ae3db94bae7acd /src/expand | |
parent | 74868acb8e3db00cbab565abd6fbd76cbf763674 (diff) | |
download | mrust-23cba420f497b5da5b0a63f078cea2ef2291078a.tar.gz |
AST - Spans, spans everywhere!
Diffstat (limited to 'src/expand')
-rw-r--r-- | src/expand/cfg.cpp | 18 | ||||
-rw-r--r-- | src/expand/concat.cpp | 2 | ||||
-rw-r--r-- | src/expand/derive.cpp | 14 | ||||
-rw-r--r-- | src/expand/file_line.cpp | 4 | ||||
-rw-r--r-- | src/expand/format_args.cpp | 8 | ||||
-rw-r--r-- | src/expand/lang_item.cpp | 8 | ||||
-rw-r--r-- | src/expand/macro_rules.cpp | 8 | ||||
-rw-r--r-- | src/expand/mod.cpp | 54 | ||||
-rw-r--r-- | src/expand/std_prelude.cpp | 8 | ||||
-rw-r--r-- | src/expand/stringify.cpp | 2 |
10 files changed, 63 insertions, 63 deletions
diff --git a/src/expand/cfg.cpp b/src/expand/cfg.cpp index 345c46ab..70ac6ac1 100644 --- a/src/expand/cfg.cpp +++ b/src/expand/cfg.cpp @@ -82,7 +82,7 @@ class CCfgExpander: { bool expand_early() const override { return true; } - ::std::unique_ptr<TokenStream> expand(Span sp, const ::AST::Crate& crate, const ::std::string& ident, const TokenTree& tt, AST::Module& mod) override + ::std::unique_ptr<TokenStream> expand(const Span& sp, const ::AST::Crate& crate, const ::std::string& ident, const TokenTree& tt, AST::Module& mod) override { if( ident != "" ) { ERROR(sp, E0000, "cfg! doesn't take an identifier"); @@ -108,36 +108,36 @@ class CCfgHandler: AttrStage stage() const override { return AttrStage::EarlyPre; } - void handle(const AST::MetaItem& mi, ::AST::Crate& crate, AST::MacroInvocation& mac) const override { + void handle(const Span& sp, const AST::MetaItem& mi, ::AST::Crate& crate, AST::MacroInvocation& mac) const override { DEBUG("#[cfg] mac! - " << mi); - if( check_cfg(mac.span(), mi) ) { + if( check_cfg(sp, mi) ) { // Leave as is } else { mac.clear(); } } - void handle(const AST::MetaItem& mi, ::AST::Crate& crate, const AST::Path& path, AST::Module& mod, AST::Item&i) const override { + void handle(const Span& sp, const AST::MetaItem& mi, ::AST::Crate& crate, const AST::Path& path, AST::Module& mod, AST::Item&i) const override { DEBUG("#[cfg] item - " << mi); - if( check_cfg(Span(), mi) ) { + if( check_cfg(sp, mi) ) { // Leave } else { i = AST::Item::make_None({}); } } - void handle(const AST::MetaItem& mi, ::AST::Crate& crate, ::std::unique_ptr<AST::ExprNode>& expr) const override { + void handle(const Span& sp, const AST::MetaItem& mi, ::AST::Crate& crate, ::std::unique_ptr<AST::ExprNode>& expr) const override { DEBUG("#[cfg] expr - " << mi); - if( check_cfg(Span(expr->get_pos()), mi) ) { + if( check_cfg(sp, mi) ) { // Leave } else { expr.reset(); } } - void handle(const AST::MetaItem& mi, AST::Crate& crate, const AST::Module& mod, AST::ImplDef& impl) const override { + void handle(const Span& sp, const AST::MetaItem& mi, AST::Crate& crate, const AST::Module& mod, AST::ImplDef& impl) const override { DEBUG("#[cfg] impl - " << mi); - if( check_cfg(Span(), mi) ) { + if( check_cfg(sp, mi) ) { // Leave } else { diff --git a/src/expand/concat.cpp b/src/expand/concat.cpp index c7da73a1..1838df30 100644 --- a/src/expand/concat.cpp +++ b/src/expand/concat.cpp @@ -11,7 +11,7 @@ class CConcatExpander: { bool expand_early() const override { return true; } - ::std::unique_ptr<TokenStream> expand(Span sp, const AST::Crate& crate, const ::std::string& ident, const TokenTree& tt, AST::Module& mod) override + ::std::unique_ptr<TokenStream> expand(const Span& sp, const AST::Crate& crate, const ::std::string& ident, const TokenTree& tt, AST::Module& mod) override { Token tok; diff --git a/src/expand/derive.cpp b/src/expand/derive.cpp index 0270eaa6..06369787 100644 --- a/src/expand/derive.cpp +++ b/src/expand/derive.cpp @@ -50,9 +50,9 @@ public: // TODO: be correct herhe and use "core" as the crate name // - Requires handling the crate_name crate attribute correctly const AST::Path debug_trait("", { AST::PathNode("fmt", {}), AST::PathNode("Debug", {}) }); - const TypeRef ret_type(Span(), AST::Path("", {AST::PathNode("fmt",{}), AST::PathNode("Result",{})}) ); - const TypeRef f_type(TypeRef::TagReference(), Span(), true, - TypeRef(Span(), AST::Path("", {AST::PathNode("fmt",{}), AST::PathNode("Formatter", {})})) + const TypeRef ret_type(sp, AST::Path("", {AST::PathNode("fmt",{}), AST::PathNode("Result",{})}) ); + const TypeRef f_type(TypeRef::TagReference(), sp, true, + TypeRef(sp, AST::Path("", {AST::PathNode("fmt",{}), AST::PathNode("Formatter", {})})) ); const ::std::string& name = type.path().nodes().back().name(); @@ -112,7 +112,7 @@ public: AST::GenericParams(), ret_type, vec$( - ::std::make_pair( AST::Pattern(AST::Pattern::TagBind(), "self"), TypeRef(TypeRef::TagReference(), Span(), false, TypeRef("Self")) ), + ::std::make_pair( AST::Pattern(AST::Pattern::TagBind(), "self"), TypeRef(TypeRef::TagReference(), sp, false, TypeRef("Self")) ), ::std::make_pair( AST::Pattern(AST::Pattern::TagBind(), "f"), f_type ) ) ); @@ -148,7 +148,7 @@ static void derive_item(const Span& sp, AST::Module& mod, const AST::MetaItem& a bool fail = false; const auto& params = item.params(); - TypeRef type(Span(), path); + TypeRef type(sp, path); for( const auto& param : params.ty_params() ) type.path().nodes().back().args().push_back( TypeRef(TypeRef::TagArg(), param.name()) ); @@ -175,13 +175,13 @@ class Decorator_Derive: { public: AttrStage stage() const override { return AttrStage::LatePost; } - void handle(const AST::MetaItem& attr, ::AST::Crate& crate, const AST::Path& path, AST::Module& mod, AST::Item& i) const override + void handle(const Span& sp, const AST::MetaItem& attr, ::AST::Crate& crate, const AST::Path& path, AST::Module& mod, AST::Item& i) const override { TU_MATCH_DEF(::AST::Item, (i), (e), ( ), (Struct, - derive_item(i.span, mod, attr, path, e); + derive_item(sp, mod, attr, path, e); ) ) } diff --git a/src/expand/file_line.cpp b/src/expand/file_line.cpp index 2532613f..75ce5679 100644 --- a/src/expand/file_line.cpp +++ b/src/expand/file_line.cpp @@ -8,7 +8,7 @@ class CExpanderFile: { bool expand_early() const override { return true; } - ::std::unique_ptr<TokenStream> expand(Span sp, const AST::Crate& crate, const ::std::string& ident, const TokenTree& tt, AST::Module& mod) override + ::std::unique_ptr<TokenStream> expand(const Span& sp, const AST::Crate& crate, const ::std::string& ident, const TokenTree& tt, AST::Module& mod) override { return box$( TTStreamO(TokenTree(Token(TOK_STRING, sp.filename.c_str()))) ); } @@ -19,7 +19,7 @@ class CExpanderLine: { bool expand_early() const override { return true; } - ::std::unique_ptr<TokenStream> expand(Span sp, const AST::Crate& crate, const ::std::string& ident, const TokenTree& tt, AST::Module& mod) override + ::std::unique_ptr<TokenStream> expand(const Span& sp, const AST::Crate& crate, const ::std::string& ident, const TokenTree& tt, AST::Module& mod) override { return box$( TTStreamO(TokenTree(Token((uint64_t)sp.start_line, CORETYPE_I32))) ); } diff --git a/src/expand/format_args.cpp b/src/expand/format_args.cpp index 6a3665ec..ab320e3f 100644 --- a/src/expand/format_args.cpp +++ b/src/expand/format_args.cpp @@ -11,7 +11,7 @@ class CFormatArgsExpander: { bool expand_early() const override { return true; } - ::std::unique_ptr<TokenStream> expand(Span sp, const ::AST::Crate& crate, const ::std::string& ident, const TokenTree& tt, AST::Module& mod) override + ::std::unique_ptr<TokenStream> expand(const Span& sp, const ::AST::Crate& crate, const ::std::string& ident, const TokenTree& tt, AST::Module& mod) override { Token tok; @@ -45,9 +45,9 @@ class CFormatArgsExpander: } // TODO: Expand format_args! - ::std::vector<TokenTree> toks; - toks.push_back( TokenTree(TOK_PAREN_OPEN) ); - toks.push_back( TokenTree(TOK_PAREN_CLOSE) ); + ::std::vector<TokenTree> toks; + toks.push_back( TokenTree(TOK_PAREN_OPEN) ); + toks.push_back( TokenTree(TOK_PAREN_CLOSE) ); return box$( TTStreamO(TokenTree(mv$(toks))) ); } }; diff --git a/src/expand/lang_item.cpp b/src/expand/lang_item.cpp index f794bb32..d381d17c 100644 --- a/src/expand/lang_item.cpp +++ b/src/expand/lang_item.cpp @@ -101,11 +101,11 @@ class Decorator_LangItem: { public: AttrStage stage() const override { return AttrStage::EarlyPost; } - void handle(const AST::MetaItem& attr, AST::Crate& crate, const AST::Path& path, AST::Module& mod, AST::Item& i) const override + void handle(const Span& sp, const AST::MetaItem& attr, AST::Crate& crate, const AST::Path& path, AST::Module& mod, AST::Item& i) const override { TU_MATCH_DEF(::AST::Item, (i), (e), ( - TODO(Span(), "Unknown item type with #[lang=\""<<attr<<"\"] attached at " << path); + TODO(sp, "Unknown item type with #[lang=\""<<attr<<"\"] attached at " << path); ), (Function, handle_lang_item(crate, path, attr.string(), AST::ITEM_FN); @@ -119,7 +119,7 @@ public: ) } - void handle(const AST::MetaItem& mi, AST::Crate& crate, const AST::Module& mod, AST::ImplDef& impl) const override { + void handle(const Span& sp, const AST::MetaItem& mi, AST::Crate& crate, const AST::Module& mod, AST::ImplDef& impl) const override { const ::std::string& name = mi.string(); if( name == "i8" ) {} @@ -135,7 +135,7 @@ public: else if( name == "const_ptr" ) {} else if( name == "mut_ptr" ) {} else { - throw CompileError::Generic(FMT("Unknown lang item '" << name << "' on impl")); + ERROR(sp, E0000, "Unknown lang item '" << name << "' on impl"); } } }; diff --git a/src/expand/macro_rules.cpp b/src/expand/macro_rules.cpp index 1689746c..4f5d33cf 100644 --- a/src/expand/macro_rules.cpp +++ b/src/expand/macro_rules.cpp @@ -11,7 +11,7 @@ class CMacroRulesExpander: { bool expand_early() const override { return true; } - ::std::unique_ptr<TokenStream> expand(Span sp, const ::AST::Crate& crate, const ::std::string& ident, const TokenTree& tt, AST::Module& mod) override + ::std::unique_ptr<TokenStream> expand(const Span& sp, const ::AST::Crate& crate, const ::std::string& ident, const TokenTree& tt, AST::Module& mod) override { if( ident == "" ) ERROR(sp, E0000, "macro_rules! requires an identifier" ); @@ -30,11 +30,11 @@ class CMacroUseHandler: { AttrStage stage() const override { return AttrStage::EarlyPost; } - void handle(const AST::MetaItem& mi, ::AST::Crate& crate, const AST::Path& path, AST::Module& mod, AST::Item& i) const override + void handle(const Span& sp, const AST::MetaItem& mi, ::AST::Crate& crate, const AST::Path& path, AST::Module& mod, AST::Item& i) const override { TRACE_FUNCTION_F("path=" << path); if( !i.is_Module() ) - throw ::std::runtime_error("ERROR: Use of #[macro_use] on non-module"); + ERROR(sp, E0000, "Use of #[macro_use] on non-module"); const auto& submod = i.as_Module(); @@ -59,7 +59,7 @@ class CMacroUseHandler: goto _good; } } - ERROR(Span(), E0000, "Couldn't find macro " << name); + ERROR(sp, E0000, "Couldn't find macro " << name); _good: (void)0; } diff --git a/src/expand/mod.cpp b/src/expand/mod.cpp index 0cb2c9c7..c46c7d84 100644 --- a/src/expand/mod.cpp +++ b/src/expand/mod.cpp @@ -26,9 +26,9 @@ void Register_Synext_Macro(::std::string name, ::std::unique_ptr<ExpandProcMacro } -void ExpandDecorator::unexpected(const AST::MetaItem& mi, const char* loc_str) const +void ExpandDecorator::unexpected(const Span& sp, const AST::MetaItem& mi, const char* loc_str) const { - ERROR(Span(), E0000, "Unexpected attribute " << mi.name() << " on " << loc_str); + ERROR(sp, E0000, "Unexpected attribute " << mi.name() << " on " << loc_str); } namespace { @@ -40,38 +40,38 @@ namespace { } } -void Expand_Attr(const ::AST::MetaItem& a, AttrStage stage, ::std::function<void(const ExpandDecorator& d,const ::AST::MetaItem& a)> f) +void Expand_Attr(const Span& sp, const ::AST::MetaItem& a, AttrStage stage, ::std::function<void(const Span& sp, const ExpandDecorator& d,const ::AST::MetaItem& a)> f) { for( auto& d : g_decorators ) { if( d.first == a.name() ) { DEBUG("#[" << d.first << "] " << (int)d.second->stage() << "-" << (int)stage); if( d.second->stage() == stage ) { - f(*d.second, a); + f(sp, *d.second, a); } } } } -void Expand_Attrs(const ::AST::MetaItems& attrs, AttrStage stage, ::std::function<void(const ExpandDecorator& d,const ::AST::MetaItem& a)> f) +void Expand_Attrs(const ::AST::MetaItems& attrs, AttrStage stage, ::std::function<void(const Span& sp, const ExpandDecorator& d,const ::AST::MetaItem& a)> f) { for( auto& a : attrs.m_items ) { if( a.name() == "cfg_attr" ) { - if( check_cfg(Span(), a.items().at(0)) ) { - Expand_Attr(a.items().at(1), stage, f); + if( check_cfg(attrs.m_span, a.items().at(0)) ) { + Expand_Attr(attrs.m_span, a.items().at(1), stage, f); } } else { - Expand_Attr(a, stage, f); + Expand_Attr(attrs.m_span, a, stage, f); } } } void Expand_Attrs(const ::AST::MetaItems& attrs, AttrStage stage, ::AST::Crate& crate, const ::AST::Path& path, ::AST::Module& mod, ::AST::Item& item) { - Expand_Attrs(attrs, stage, [&](const auto& d, const auto& a){ d.handle(a, crate, path, mod, item); }); + Expand_Attrs(attrs, stage, [&](const auto& sp, const auto& d, const auto& a){ d.handle(sp, a, crate, path, mod, item); }); } void Expand_Attrs(const ::AST::MetaItems& attrs, AttrStage stage, ::AST::Crate& crate, ::AST::Module& mod, ::AST::ImplDef& impl) { - Expand_Attrs(attrs, stage, [&](const auto& d, const auto& a){ d.handle(a, crate, mod, impl); }); + Expand_Attrs(attrs, stage, [&](const auto& sp, const auto& d, const auto& a){ d.handle(sp, a, crate, mod, impl); }); } ::std::unique_ptr<TokenStream> Expand_Macro( @@ -245,7 +245,7 @@ struct CExpandExpr: void visit(::std::unique_ptr<AST::ExprNode>& cnode) { if(cnode.get()) - Expand_Attrs(cnode->attrs(), stage_pre(is_early), [&](const auto& d, const auto& a){ d.handle(a, this->crate, cnode); }); + Expand_Attrs(cnode->attrs(), stage_pre(is_early), [&](const auto& sp, const auto& d, const auto& a){ d.handle(sp, a, this->crate, cnode); }); if(cnode.get()) { cnode->visit(*this); @@ -261,7 +261,7 @@ struct CExpandExpr: } if(cnode.get()) - Expand_Attrs(cnode->attrs(), stage_post(is_early), [&](const auto& d, const auto& a){ d.handle(a, this->crate, cnode); }); + Expand_Attrs(cnode->attrs(), stage_post(is_early), [&](const auto& sp, const auto& d, const auto& a){ d.handle(sp, a, this->crate, cnode); }); assert( ! this->replacement ); } void visit_nodelete(const ::AST::ExprNode& parent, ::std::unique_ptr<AST::ExprNode>& cnode) { @@ -409,7 +409,7 @@ struct CExpandExpr: this->visit_nodelete(node, node.m_val); for(auto& arm : node.m_arms) { - Expand_Attrs(arm.m_attrs, stage_pre (is_early), [&](const auto& d, const auto& a){ d.handle(a, crate, arm); }); + Expand_Attrs(arm.m_attrs, stage_pre (is_early), [&](const auto& sp, const auto& d, const auto& a){ d.handle(sp, a, crate, arm); }); if( arm.m_patterns.size() == 0 ) continue ; for(auto& pat : arm.m_patterns) { @@ -417,7 +417,7 @@ struct CExpandExpr: } this->visit_nodelete(node, arm.m_cond); this->visit_nodelete(node, arm.m_code); - Expand_Attrs(arm.m_attrs, stage_post(is_early), [&](const auto& d, const auto& a){ d.handle(a, crate, arm); }); + Expand_Attrs(arm.m_attrs, stage_post(is_early), [&](const auto& sp, const auto& d, const auto& a){ d.handle(sp, a, crate, arm); }); } // Prune deleted arms for(auto it = node.m_arms.begin(); it != node.m_arms.end(); ) { @@ -560,13 +560,13 @@ void Expand_Mod(bool is_early, ::AST::Crate& crate, LList<const AST::Module*> mo auto mi_owned = mv$(mi); auto& attrs = mi_owned.attrs(); - Expand_Attrs(attrs, stage_pre(is_early), [&](const auto& d, const auto& a){ d.handle(a, crate, mi_owned); }); + Expand_Attrs(attrs, stage_pre(is_early), [&](const auto& sp, const auto& d, const auto& a){ d.handle(sp, a, crate, mi_owned); }); auto ttl = Expand_Macro(is_early, crate, modstack, mod, mi_owned); if( ! ttl.get() ) { - Expand_Attrs(attrs, stage_post(is_early), [&](const auto& d, const auto& a){ d.handle(a, crate, mi_owned); }); + Expand_Attrs(attrs, stage_post(is_early), [&](const auto& sp, const auto& d, const auto& a){ d.handle(sp, a, crate, mi_owned); }); // - Return ownership to the list mod.macro_invs()[i] = mv$(mi_owned); } @@ -608,9 +608,9 @@ void Expand_Mod(bool is_early, ::AST::Crate& crate, LList<const AST::Module*> mo (Struct, for(auto it = sd.ents.begin(); it != sd.ents.end(); ) { auto& si = *it; - Expand_Attrs(si.m_attrs, stage_pre (is_early), [&](const auto& d, const auto& a){ d.handle(a, crate, si); }); + Expand_Attrs(si.m_attrs, stage_pre (is_early), [&](const auto& sp, const auto& d, const auto& a){ d.handle(sp, a, crate, si); }); Expand_Type(is_early, crate, modstack, mod, si.m_type); - Expand_Attrs(si.m_attrs, stage_post(is_early), [&](const auto& d, const auto& a){ d.handle(a, crate, si); }); + Expand_Attrs(si.m_attrs, stage_post(is_early), [&](const auto& sp, const auto& d, const auto& a){ d.handle(sp, a, crate, si); }); if( si.m_name == "" ) it = sd.ents.erase(it); @@ -621,9 +621,9 @@ void Expand_Mod(bool is_early, ::AST::Crate& crate, LList<const AST::Module*> mo (Tuple, for(auto it = sd.ents.begin(); it != sd.ents.end(); ) { auto& si = *it; - Expand_Attrs(si.m_attrs, stage_pre (is_early), [&](const auto& d, const auto& a){ d.handle(a, crate, si); }); + Expand_Attrs(si.m_attrs, stage_pre (is_early), [&](const auto& sp, const auto& d, const auto& a){ d.handle(sp, a, crate, si); }); Expand_Type(is_early, crate, modstack, mod, si.m_type); - Expand_Attrs(si.m_attrs, stage_post(is_early), [&](const auto& d, const auto& a){ d.handle(a, crate, si); }); + Expand_Attrs(si.m_attrs, stage_post(is_early), [&](const auto& sp, const auto& d, const auto& a){ d.handle(sp, a, crate, si); }); if( ! si.m_type.is_valid() ) it = sd.ents.erase(it); @@ -635,7 +635,7 @@ void Expand_Mod(bool is_early, ::AST::Crate& crate, LList<const AST::Module*> mo ), (Enum, for(auto& var : e.variants()) { - Expand_Attrs(var.m_attrs, stage_pre (is_early), [&](const auto& d, const auto& a){ d.handle(a, crate, var); }); + Expand_Attrs(var.m_attrs, stage_pre (is_early), [&](const auto& sp, const auto& d, const auto& a){ d.handle(sp, a, crate, var); }); TU_MATCH(::AST::EnumVariantData, (var.m_data), (e), (Value, Expand_Expr(is_early, crate, modstack, e.m_value); @@ -648,9 +648,9 @@ void Expand_Mod(bool is_early, ::AST::Crate& crate, LList<const AST::Module*> mo (Struct, for(auto it = e.m_fields.begin(); it != e.m_fields.end(); ) { auto& si = *it; - Expand_Attrs(si.m_attrs, stage_pre (is_early), [&](const auto& d, const auto& a){ d.handle(a, crate, si); }); + Expand_Attrs(si.m_attrs, stage_pre (is_early), [&](const auto& sp, const auto& d, const auto& a){ d.handle(sp, a, crate, si); }); Expand_Type(is_early, crate, modstack, mod, si.m_type); - Expand_Attrs(si.m_attrs, stage_post(is_early), [&](const auto& d, const auto& a){ d.handle(a, crate, si); }); + Expand_Attrs(si.m_attrs, stage_post(is_early), [&](const auto& sp, const auto& d, const auto& a){ d.handle(sp, a, crate, si); }); if( si.m_name == "" ) it = e.m_fields.erase(it); @@ -659,7 +659,7 @@ void Expand_Mod(bool is_early, ::AST::Crate& crate, LList<const AST::Module*> mo } ) ) - Expand_Attrs(var.m_attrs, stage_post(is_early), [&](const auto& d, const auto& a){ d.handle(a, crate, var); }); + Expand_Attrs(var.m_attrs, stage_post(is_early), [&](const auto& sp, const auto& d, const auto& a){ d.handle(sp, a, crate, var); }); } ), (Trait, @@ -819,7 +819,7 @@ void Expand(::AST::Crate& crate) auto modstack = LList<const ::AST::Module*>(nullptr, &crate.m_root_module); // 1. Crate attributes - Expand_Attrs(crate.m_attrs, AttrStage::EarlyPre, [&](const auto& d, const auto& a){ d.handle(a, crate); }); + Expand_Attrs(crate.m_attrs, AttrStage::EarlyPre, [&](const auto& sp, const auto& d, const auto& a){ d.handle(sp, a, crate); }); // Load libstd/libcore switch( crate.m_load_std ) @@ -827,12 +827,12 @@ void Expand(::AST::Crate& crate) case ::AST::Crate::LOAD_STD: if( crate.m_prelude_path != AST::Path() ) crate.m_prelude_path = AST::Path("std", {AST::PathNode("prelude"), AST::PathNode("v1")}); - TODO(Span(), "Load libstd"); + TODO(Span("",0,0,0,0), "Load libstd"); break; case ::AST::Crate::LOAD_CORE: if( crate.m_prelude_path != AST::Path() ) crate.m_prelude_path = AST::Path("core", {AST::PathNode("prelude")}); - TODO(Span(), "Load libcore"); + TODO(Span("",0,0,0,0), "Load libcore"); break; case ::AST::Crate::LOAD_NONE: break; diff --git a/src/expand/std_prelude.cpp b/src/expand/std_prelude.cpp index c8ad6471..b7493570 100644 --- a/src/expand/std_prelude.cpp +++ b/src/expand/std_prelude.cpp @@ -9,9 +9,9 @@ class Decorator_NoStd: public: AttrStage stage() const override { return AttrStage::EarlyPre; } - void handle(const AST::MetaItem& mi, AST::Crate& crate) const override { + void handle(const Span& sp, const AST::MetaItem& mi, AST::Crate& crate) const override { if( crate.m_load_std != AST::Crate::LOAD_STD ) { - ERROR(Span()/*mi.span()*/, E0000, "Invalid use of #![no_std] with itself or #![no_core]"); + ERROR(sp, E0000, "Invalid use of #![no_std] with itself or #![no_core]"); } crate.m_load_std = AST::Crate::LOAD_CORE; } @@ -22,9 +22,9 @@ class Decorator_NoCore: public: AttrStage stage() const override { return AttrStage::EarlyPre; } - void handle(const AST::MetaItem& mi, AST::Crate& crate) const override { + void handle(const Span& sp, const AST::MetaItem& mi, AST::Crate& crate) const override { if( crate.m_load_std != AST::Crate::LOAD_STD ) { - ERROR(Span()/*mi.span()*/, E0000, "Invalid use of #![no_core] with itself or #![no_std]"); + ERROR(sp, E0000, "Invalid use of #![no_core] with itself or #![no_std]"); } crate.m_load_std = AST::Crate::LOAD_NONE; } diff --git a/src/expand/stringify.cpp b/src/expand/stringify.cpp index e4abb99b..ea54a6f6 100644 --- a/src/expand/stringify.cpp +++ b/src/expand/stringify.cpp @@ -8,7 +8,7 @@ class CExpander: { bool expand_early() const override { return true; } - ::std::unique_ptr<TokenStream> expand(Span sp, const AST::Crate& crate, const ::std::string& ident, const TokenTree& tt, AST::Module& mod) override + ::std::unique_ptr<TokenStream> expand(const Span& sp, const AST::Crate& crate, const ::std::string& ident, const TokenTree& tt, AST::Module& mod) override { Token tok; ::std::string rv; |