]> gcc.gnu.org Git - gcc.git/commit
gccrs: expand: eager evaluate macros inside builtin macros
authorliushuyu <liushuyu011@gmail.com>
Fri, 2 Sep 2022 22:08:39 +0000 (16:08 -0600)
committerArthur Cohen <arthur.cohen@embecosm.com>
Tue, 31 Jan 2023 13:16:52 +0000 (14:16 +0100)
commite88ce5cc68478d20133bc3afd9f4d24a3db47007
treeeadf2da074a60f2d17fc6fe4be3d0064eb6c3ca4
parent9d6b434e1fda4aaf853728967a6c0f65e7d20d3d
gccrs: expand: eager evaluate macros inside builtin macros

gcc/rust/ChangeLog:

* ast/rust-ast.h (class MacroInvocData): Store expander as
member of the class.
(class Expr): Add `is_literal` virtual method
* ast/rust-expr.h: Override `is_literal` for `LiteralExpr`s.
* expand/rust-macro-builtins.cc (try_expand_macro_expression): New function.
(try_extract_string_literal_from_fragment): Likewise.
(try_expand_single_string_literal): Likewise.
(try_expand_many_expr): Likewise.
(parse_single_string_literal): Add macro expander as argument.
(MacroBuiltin::include_bytes): Pass expander as argument to
`parse_single_string_literal`.
(MacroBuiltin::include_str): Likewise.
(MacroBuiltin::compile_error): Likewise.
(MacroBuiltin::include): Likewise.
(MacroBuiltin::concat): Likewise and add better error handling.
(MacroBuiltin::env): Likewise.
* expand/rust-macro-expand.cc (MacroExpander::expand_invoc): Expand
invocations recursively.

gcc/testsuite/ChangeLog:

* rust/compile/builtin_macro_concat.rs: Fix test error messages.
* rust/compile/builtin_macro_env.rs: Likewise.

Signed-off-by: Zixing Liu <liushuyu011@gmail.com>
gcc/rust/ast/rust-ast.h
gcc/rust/ast/rust-expr.h
gcc/rust/expand/rust-macro-builtins.cc
gcc/rust/expand/rust-macro-expand.cc
gcc/testsuite/rust/compile/builtin_macro_concat.rs
gcc/testsuite/rust/compile/builtin_macro_env.rs
This page took 0.068869 seconds and 6 git commands to generate.