]> git.lizzy.rs Git - rust.git/commitdiff
Fix parsing of active cfg_attr
authorJonas Schievink <jonasschievink@gmail.com>
Fri, 18 Dec 2020 19:00:59 +0000 (20:00 +0100)
committerJonas Schievink <jonasschievink@gmail.com>
Fri, 18 Dec 2020 19:00:59 +0000 (20:00 +0100)
crates/hir_def/src/attr.rs

index b8d9c2682227e4280bdde344a02d02b281f04cb1..68d05c54dc043ee0a7daef54f5897b19c6d69311 100644 (file)
@@ -167,6 +167,7 @@ pub(crate) fn filter(self, db: &dyn DefDatabase, krate: CrateId) -> Attrs {
                     });
                 cfg.pop(); // `,` ends up in here
 
+                let attr = Subtree { delimiter: None, token_trees: attr };
                 let cfg = Subtree { delimiter: subtree.delimiter, token_trees: cfg };
                 let cfg = CfgExpr::parse(&cfg);
 
@@ -174,8 +175,7 @@ pub(crate) fn filter(self, db: &dyn DefDatabase, krate: CrateId) -> Attrs {
                 if cfg_options.check(&cfg) == Some(false) {
                     None
                 } else {
-                    let attr = Subtree { delimiter: None, token_trees: attr };
-                    let attr = ast::Attr::parse(&attr.to_string()).ok()?;
+                    let attr = ast::Attr::parse(&format!("#[{}]", attr)).ok()?;
                     let hygiene = Hygiene::new_unhygienic(); // FIXME
                     Attr::from_src(attr, &hygiene)
                 }