aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/expand/rust-macro-builtins.h
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2022-10-21 13:05:18 +0000
committerGitHub <noreply@github.com>2022-10-21 13:05:18 +0000
commit60b21d2f58f46c93fc33f6192682abfed62d8dd9 (patch)
tree2f8fd5e728e601f5fa74d71afe1579a5fd3ba440 /gcc/rust/expand/rust-macro-builtins.h
parentdfb5921b76589c09e7794f5f8010427b93616e9d (diff)
parent89490980726d298311107a452bdebeb43a2ff7e6 (diff)
downloadgcc-60b21d2f58f46c93fc33f6192682abfed62d8dd9.zip
gcc-60b21d2f58f46c93fc33f6192682abfed62d8dd9.tar.gz
gcc-60b21d2f58f46c93fc33f6192682abfed62d8dd9.tar.bz2
Merge #1607
1607: Improve AST Fragment class r=CohenArthur a=CohenArthur This changes the APIs around creating AST fragments and refactors the class into its own header and source file, hopefully making it easier to use. This will also help creating "unexpanded" AST fragments for proper builtin macro expansion with the new fixed-point algorithm introduced by #1606 `@liushuyu` pinging you since you've worked extensively with the macro system. Would love your review! Co-authored-by: Arthur Cohen <arthur.cohen@embecosm.com>
Diffstat (limited to 'gcc/rust/expand/rust-macro-builtins.h')
-rw-r--r--gcc/rust/expand/rust-macro-builtins.h40
1 files changed, 19 insertions, 21 deletions
diff --git a/gcc/rust/expand/rust-macro-builtins.h b/gcc/rust/expand/rust-macro-builtins.h
index 91f3727..79305e4 100644
--- a/gcc/rust/expand/rust-macro-builtins.h
+++ b/gcc/rust/expand/rust-macro-builtins.h
@@ -20,6 +20,7 @@
#define RUST_MACRO_BUILTINS_H
#include "rust-ast.h"
+#include "rust-ast-fragment.h"
#include "rust-location.h"
/**
@@ -61,6 +62,7 @@
/* If assert is defined as a macro this file will not parse, so undefine this
before continuing. */
+// TODO: Rename all functions here `*_handler`
#ifdef assert
#undef assert
#endif
@@ -69,38 +71,34 @@ namespace Rust {
class MacroBuiltin
{
public:
- static AST::ASTFragment assert (Location invoc_locus,
- AST::MacroInvocData &invoc);
-
- static AST::ASTFragment file (Location invoc_locus,
- AST::MacroInvocData &invoc);
+ static AST::Fragment assert (Location invoc_locus,
+ AST::MacroInvocData &invoc);
- static AST::ASTFragment column (Location invoc_locus,
- AST::MacroInvocData &invoc);
+ static AST::Fragment file (Location invoc_locus, AST::MacroInvocData &invoc);
- static AST::ASTFragment include_bytes (Location invoc_locus,
- AST::MacroInvocData &invoc);
+ static AST::Fragment column (Location invoc_locus,
+ AST::MacroInvocData &invoc);
- static AST::ASTFragment include_str (Location invoc_locus,
- AST::MacroInvocData &invoc);
+ static AST::Fragment include_bytes (Location invoc_locus,
+ AST::MacroInvocData &invoc);
- static AST::ASTFragment compile_error (Location invoc_locus,
- AST::MacroInvocData &invoc);
+ static AST::Fragment include_str (Location invoc_locus,
+ AST::MacroInvocData &invoc);
- static AST::ASTFragment concat (Location invoc_locus,
- AST::MacroInvocData &invoc);
+ static AST::Fragment compile_error (Location invoc_locus,
+ AST::MacroInvocData &invoc);
- static AST::ASTFragment env (Location invoc_locus,
+ static AST::Fragment concat (Location invoc_locus,
AST::MacroInvocData &invoc);
- static AST::ASTFragment cfg (Location invoc_locus,
- AST::MacroInvocData &invoc);
+ static AST::Fragment env (Location invoc_locus, AST::MacroInvocData &invoc);
- static AST::ASTFragment include (Location invoc_locus,
- AST::MacroInvocData &invoc);
+ static AST::Fragment cfg (Location invoc_locus, AST::MacroInvocData &invoc);
- static AST::ASTFragment line (Location invoc_locus,
+ static AST::Fragment include (Location invoc_locus,
AST::MacroInvocData &invoc);
+
+ static AST::Fragment line (Location invoc_locus, AST::MacroInvocData &invoc);
};
} // namespace Rust