diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2022-06-27 08:07:14 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-06-27 08:07:14 +0000 |
commit | 80a14bd8138553596fd8cf93fcafcb1429d8b30e (patch) | |
tree | a914a378e9882ff9d8109f97a1819a2c7c1403bd /gcc/rust | |
parent | 5bab921fc018bfaae00d2739e5c4e5912673823a (diff) | |
parent | 40ad6b290af7d4e2e4d4a35a759d1b21d60423f5 (diff) | |
download | gcc-80a14bd8138553596fd8cf93fcafcb1429d8b30e.zip gcc-80a14bd8138553596fd8cf93fcafcb1429d8b30e.tar.gz gcc-80a14bd8138553596fd8cf93fcafcb1429d8b30e.tar.bz2 |
Merge #1339
1339: Add `line!` macro r=CohenArthur a=graphman65
Co-authored-by: Sebastien Lacoste <dev@graphman.fr>
Diffstat (limited to 'gcc/rust')
-rw-r--r-- | gcc/rust/expand/rust-macro-builtins.cc | 16 | ||||
-rw-r--r-- | gcc/rust/expand/rust-macro-builtins.h | 3 | ||||
-rw-r--r-- | gcc/rust/util/rust-hir-map.cc | 1 |
3 files changed, 18 insertions, 2 deletions
diff --git a/gcc/rust/expand/rust-macro-builtins.cc b/gcc/rust/expand/rust-macro-builtins.cc index fb30241..2b175fc 100644 --- a/gcc/rust/expand/rust-macro-builtins.cc +++ b/gcc/rust/expand/rust-macro-builtins.cc @@ -164,13 +164,12 @@ MacroBuiltin::file (Location invoc_locus, AST::MacroInvocData &invoc) return AST::ASTFragment ({file_str}); } + AST::ASTFragment MacroBuiltin::column (Location invoc_locus, AST::MacroInvocData &invoc) { auto current_column = Session::get_instance ().linemap->location_to_column (invoc_locus); - // auto column_no - // = AST::SingleASTNode (make_string (invoc_locus, current_column)); auto column_no = AST::SingleASTNode (std::unique_ptr<AST::Expr> ( new AST::LiteralExpr (std::to_string (current_column), AST::Literal::INT, @@ -468,4 +467,17 @@ MacroBuiltin::include (Location invoc_locus, AST::MacroInvocData &invoc) return AST::ASTFragment (nodes); } +AST::ASTFragment +MacroBuiltin::line (Location invoc_locus, AST::MacroInvocData &invoc) +{ + auto current_line + = Session::get_instance ().linemap->location_to_line (invoc_locus); + + auto line_no = AST::SingleASTNode (std::unique_ptr<AST::Expr> ( + new AST::LiteralExpr (std::to_string (current_line), AST::Literal::INT, + PrimitiveCoreType::CORETYPE_U32, {}, invoc_locus))); + + return AST::ASTFragment ({line_no}); +} + } // namespace Rust diff --git a/gcc/rust/expand/rust-macro-builtins.h b/gcc/rust/expand/rust-macro-builtins.h index f1d10df..91f3727 100644 --- a/gcc/rust/expand/rust-macro-builtins.h +++ b/gcc/rust/expand/rust-macro-builtins.h @@ -98,6 +98,9 @@ public: static AST::ASTFragment include (Location invoc_locus, AST::MacroInvocData &invoc); + + static AST::ASTFragment line (Location invoc_locus, + AST::MacroInvocData &invoc); }; } // namespace Rust diff --git a/gcc/rust/util/rust-hir-map.cc b/gcc/rust/util/rust-hir-map.cc index c21b681..8b3be5c 100644 --- a/gcc/rust/util/rust-hir-map.cc +++ b/gcc/rust/util/rust-hir-map.cc @@ -831,6 +831,7 @@ Mappings::insert_macro_def (AST::MacroRulesDefinition *macro) builtin_macros = { {"assert", MacroBuiltin::assert}, {"file", MacroBuiltin::file}, + {"line", MacroBuiltin::line}, {"column", MacroBuiltin::column}, {"include_bytes", MacroBuiltin::include_bytes}, {"include_str", MacroBuiltin::include_str}, |