From 0ec707867945e7ab3d9fa5d2298c9d65edc743ac Mon Sep 17 00:00:00 2001 From: John Hodge Date: Mon, 26 Sep 2016 16:16:13 +0800 Subject: Expand cfg - Support cfg() on struct fields and enum variants --- src/expand/cfg.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/expand/cfg.cpp b/src/expand/cfg.cpp index c79e9872..746fd513 100644 --- a/src/expand/cfg.cpp +++ b/src/expand/cfg.cpp @@ -155,6 +155,25 @@ class CCfgHandler: impl.type() = ::TypeRef(); } } + + void handle(const Span& sp, const AST::MetaItem& mi, AST::Crate& crate, ::AST::StructItem& si) const override { + DEBUG("#[cfg] struct item - " << mi); + if( !check_cfg(sp, mi) ) { + si.m_name = ""; + } + } + void handle(const Span& sp, const AST::MetaItem& mi, AST::Crate& crate, ::AST::TupleItem& i) const override { + DEBUG("#[cfg] tuple item - " << mi); + if( !check_cfg(sp, mi) ) { + i.m_type = ::TypeRef(); + } + } + void handle(const Span& sp, const AST::MetaItem& mi, AST::Crate& crate, ::AST::EnumVariant& i) const override { + DEBUG("#[cfg] enum variant - " << mi); + if( !check_cfg(sp, mi) ) { + i.m_name = ""; + } + } }; STATIC_MACRO("cfg", CCfgExpander); -- cgit v1.2.3