summaryrefslogtreecommitdiff
path: root/src/expand
diff options
context:
space:
mode:
authorJohn Hodge <tpg@mutabah.net>2016-05-24 21:55:06 +0800
committerJohn Hodge <tpg@mutabah.net>2016-05-24 21:55:06 +0800
commit23cba420f497b5da5b0a63f078cea2ef2291078a (patch)
tree96d60ee57ac0014f3a359b94a0ae3db94bae7acd /src/expand
parent74868acb8e3db00cbab565abd6fbd76cbf763674 (diff)
downloadmrust-23cba420f497b5da5b0a63f078cea2ef2291078a.tar.gz
AST - Spans, spans everywhere!
Diffstat (limited to 'src/expand')
-rw-r--r--src/expand/cfg.cpp18
-rw-r--r--src/expand/concat.cpp2
-rw-r--r--src/expand/derive.cpp14
-rw-r--r--src/expand/file_line.cpp4
-rw-r--r--src/expand/format_args.cpp8
-rw-r--r--src/expand/lang_item.cpp8
-rw-r--r--src/expand/macro_rules.cpp8
-rw-r--r--src/expand/mod.cpp54
-rw-r--r--src/expand/std_prelude.cpp8
-rw-r--r--src/expand/stringify.cpp2
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;