diff options
author | John Hodge <tpg@ucc.asn.au> | 2019-07-21 22:31:29 +0800 |
---|---|---|
committer | John Hodge <tpg@ucc.asn.au> | 2019-07-21 22:31:29 +0800 |
commit | 70e3fc33503392ed578845fa516561092ce90392 (patch) | |
tree | 8b601005981b28c4a2cb1272132ea5f275380a8c /src | |
parent | 87a189e90ecc0795d6a1b6e2f249aa9cf99c086e (diff) | |
download | mrust-70e3fc33503392ed578845fa516561092ce90392.tar.gz |
Parse - Handle #[cfg_attr(foo, path="")]
Diffstat (limited to 'src')
-rw-r--r-- | src/parse/root.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/src/parse/root.cpp b/src/parse/root.cpp index 677dbe26..064e127f 100644 --- a/src/parse/root.cpp +++ b/src/parse/root.cpp @@ -1989,7 +1989,20 @@ namespace { // - IF a #[path] attribute was passed, allow // - IF in crate root or mod.rs, allow (input flag) // - else, disallow and set flag - ::std::string path_attr = (meta_items.has("path") ? meta_items.get("path")->string() : ""); + ::std::string path_attr; + for(const auto& a : meta_items.m_items) + { + if( a.name() == "path" ) { + path_attr = a.string(); + } + else if( a.name() == "cfg_attr" && a.items().at(1).name() == "path" ) { + if( check_cfg(a.span(), a.items().at(0)) ) { + path_attr = a.items().at(1).string(); + } + } + else { + } + } //submod.m_file_info = get_submod_file(lex.end_span(ps), mod_fileinfo, name, path_attr, LOOK_AHEAD(lex) == TOK_SEMICOLON, H::check_item_cfg(meta_items)); |