aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/expand/rust-macro-expand.h
diff options
context:
space:
mode:
authorPhilip Herron <philip.herron@embecosm.com>2020-12-14 15:40:17 +0000
committerGitHub <noreply@github.com>2020-12-14 15:40:17 +0000
commit6e4b74fb77c45a6088e0cca22ec05c28c7f0b6dc (patch)
tree46eb33355b3d0351d4743d19d1d5c46ae9d5677c /gcc/rust/expand/rust-macro-expand.h
parentcef34bd730d80b4664d8633e2cc27a64c5cae246 (diff)
parent52cc571b308d3d0103dd498fd277859e2116791a (diff)
downloadgcc-6e4b74fb77c45a6088e0cca22ec05c28c7f0b6dc.zip
gcc-6e4b74fb77c45a6088e0cca22ec05c28c7f0b6dc.tar.gz
gcc-6e4b74fb77c45a6088e0cca22ec05c28c7f0b6dc.tar.bz2
Merge pull request #62 from SimplyTheOther/master
Expansion code for cfg attributes, bug fixes and minor enhancements in parser
Diffstat (limited to 'gcc/rust/expand/rust-macro-expand.h')
-rw-r--r--gcc/rust/expand/rust-macro-expand.h9
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/rust/expand/rust-macro-expand.h b/gcc/rust/expand/rust-macro-expand.h
index 92cb06d..a0c1a076 100644
--- a/gcc/rust/expand/rust-macro-expand.h
+++ b/gcc/rust/expand/rust-macro-expand.h
@@ -15,7 +15,7 @@ class MacroInvocation;
struct ExpansionCfg
{
// features?
- unsigned int recursion_limit; // TODO: determine default recursion limit
+ unsigned int recursion_limit = 50; // TODO: determine default recursion limit
// trace macros?
// should test?
// more default stuff?
@@ -27,7 +27,8 @@ struct MacroExpander
ExpansionCfg cfg;
unsigned int expansion_depth = 0;
- MacroExpander (AST::Crate &crate, ExpansionCfg cfg) : cfg (cfg), crate (crate)
+ MacroExpander (AST::Crate &crate, ExpansionCfg cfg, Session &session)
+ : cfg (cfg), crate (crate), session (session)
{}
~MacroExpander () = default;
@@ -40,11 +41,15 @@ struct MacroExpander
// should this be public or private?
void expand_invoc (std::unique_ptr<AST::MacroInvocation> &invoc);
+ void expand_cfg_attrs (std::vector<AST::Attribute> &attrs);
+ bool fails_cfg (std::vector<AST::Attribute> &attr);
+
/* TODO: make it extend ASTVisitor so that individual items can be accessed
* properly? */
private:
AST::Crate &crate;
+ Session &session;
};
} // namespace Rust