From 0096df08e0d792880dbbb37dfb24f928183bab9c Mon Sep 17 00:00:00 2001 From: Arthur Cohen Date: Thu, 25 May 2023 14:18:39 +0200 Subject: gccrs: expansion: Add base for deriving builtin macros (Clone, Copy...) gcc/rust/ChangeLog: * Make-lang.in: Add new object files to Makefile. * expand/rust-expand-visitor.cc (is_derive): Move function. (is_builtin): Likewise. (get_traits_to_derive): New function. (derive_item): Likewise. (ExpandVisitor::visit): Visit item/statements containers. (ExpandVisitor::visit_outer_attrs): Take a reference on the attribute instead of a copy. (ExpandVisitor::is_derive): Deleted function. (ExpandVisitor::is_builtin): Likewise. * expand/rust-expand-visitor.h (RUST_EXPAND_VISITOR_H): Add missing #ifdef guards. (is_derive): Declare function. (is_builtin): Likewise. * expand/rust-macro-builtins.cc (builtin_macro_from_string): Use new MacroBuiltin::builtins map. (make_macro_path_str): Likewise. * expand/rust-macro-builtins.h (enum class): Add builtin derive macros. * expand/rust-derive-clone.cc: New file. * expand/rust-derive-clone.h: New file. * expand/rust-derive.cc: New file. * expand/rust-derive.h: New file. * util/rust-hir-map.cc (Mappings::insert_macro_def): Fix logic for setting builtin macro transcribers. gcc/testsuite/ChangeLog: * rust/compile/macro43.rs: Fix test with new derive macros. * rust/compile/derive_macro1.rs: New test. * rust/compile/derive_macro3.rs: New test. * rust/execute/torture/derive_macro1.rs: New test. * rust/execute/torture/derive_macro3.rs: New test. --- gcc/rust/Make-lang.in | 3 +++ 1 file changed, 3 insertions(+) (limited to 'gcc/rust/Make-lang.in') diff --git a/gcc/rust/Make-lang.in b/gcc/rust/Make-lang.in index 31c11b8..1d72c86 100644 --- a/gcc/rust/Make-lang.in +++ b/gcc/rust/Make-lang.in @@ -87,6 +87,9 @@ GRS_OBJS = \ rust/rust-macro-expand.o \ rust/rust-cfg-strip.o \ rust/rust-expand-visitor.o \ + rust/rust-ast-builder.o \ + rust/rust-derive.o \ + rust/rust-derive-clone.o \ rust/rust-macro-invoc-lexer.o \ rust/rust-macro-substitute-ctx.o \ rust/rust-macro-builtins.o \ -- cgit v1.1