aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/expand/rust-macro-builtins.cc
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2022-04-07 08:16:07 +0000
committerGitHub <noreply@github.com>2022-04-07 08:16:07 +0000
commitb829e7c0a21c94672d09732e4a791e0471f41c13 (patch)
tree4a31cbcfb6c84de1a0082baeffe66392d7a0e97e /gcc/rust/expand/rust-macro-builtins.cc
parent779de323f3cc5cf2bb43050b135fbbeb3b3716cb (diff)
parent35570ae4104086a20069f967fea35d7850f0710f (diff)
downloadgcc-b829e7c0a21c94672d09732e4a791e0471f41c13.zip
gcc-b829e7c0a21c94672d09732e4a791e0471f41c13.tar.gz
gcc-b829e7c0a21c94672d09732e4a791e0471f41c13.tar.bz2
Merge #1080
1080: macros: add compile_error! macro r=CohenArthur a=liushuyu - Added `compile_error` macro Co-authored-by: liushuyu <liushuyu011@gmail.com>
Diffstat (limited to 'gcc/rust/expand/rust-macro-builtins.cc')
-rw-r--r--gcc/rust/expand/rust-macro-builtins.cc16
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