diff options
author | liushuyu <liushuyu011@gmail.com> | 2022-04-03 02:38:49 -0600 |
---|---|---|
committer | liushuyu <liushuyu011@gmail.com> | 2022-04-03 17:17:33 -0600 |
commit | 35570ae4104086a20069f967fea35d7850f0710f (patch) | |
tree | 507141ca9f89a6cc4bcb88e8872237bc31070355 /gcc/rust/expand/rust-macro-builtins.cc | |
parent | 9011184f38a04f81ba3194b826bec3f30a11c07b (diff) | |
download | gcc-35570ae4104086a20069f967fea35d7850f0710f.zip gcc-35570ae4104086a20069f967fea35d7850f0710f.tar.gz gcc-35570ae4104086a20069f967fea35d7850f0710f.tar.bz2 |
macros: add compile_error! macro
addresses #927
Signed-off-by: Zixing Liu <liushuyu011@gmail.com>
Diffstat (limited to 'gcc/rust/expand/rust-macro-builtins.cc')
-rw-r--r-- | gcc/rust/expand/rust-macro-builtins.cc | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/rust/expand/rust-macro-builtins.cc b/gcc/rust/expand/rust-macro-builtins.cc index f9b8e30..3cd6e43 100644 --- a/gcc/rust/expand/rust-macro-builtins.cc +++ b/gcc/rust/expand/rust-macro-builtins.cc @@ -236,4 +236,20 @@ MacroBuiltin::include_str (Location invoc_locus, AST::MacroInvocData &invoc) return AST::ASTFragment ({node}); } +/* Expand builtin macro compile_error!("error"), which forces a compile error + during the compile time. */ +AST::ASTFragment +MacroBuiltin::compile_error (Location invoc_locus, AST::MacroInvocData &invoc) +{ + auto lit_expr + = parse_single_string_literal (invoc.get_delim_tok_tree (), invoc_locus); + if (lit_expr == nullptr) + return AST::ASTFragment::create_error (); + + std::string error_string = lit_expr->as_string (); + rust_error_at (invoc_locus, "%s", error_string.c_str ()); + + return AST::ASTFragment::create_error (); +} + } // namespace Rust |