aboutsummaryrefslogtreecommitdiff
path: root/gcc/rust/expand/rust-macro-builtins.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/rust/expand/rust-macro-builtins.cc')
-rw-r--r--gcc/rust/expand/rust-macro-builtins.cc23
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/rust/expand/rust-macro-builtins.cc b/gcc/rust/expand/rust-macro-builtins.cc
index 8104c57..a4e9854 100644
--- a/gcc/rust/expand/rust-macro-builtins.cc
+++ b/gcc/rust/expand/rust-macro-builtins.cc
@@ -105,6 +105,22 @@ std::unordered_map<
{"test_case", MacroBuiltin::sorry},
{"global_allocator", MacroBuiltin::sorry},
{"cfg_accessible", MacroBuiltin::sorry},
+ /* Derive builtins do not need a real transcriber, but still need one. It
+ will however never be called since builtin derive macros get expanded
+ differently, and benefit from knowing on what kind of items they are
+ applied (struct, enums, unions) rather than receiving a list of tokens
+ like regular builtin macros */
+ {"RustcEncodable", MacroBuiltin::proc_macro_builtin},
+ {"RustcDecodable", MacroBuiltin::proc_macro_builtin},
+ {"Clone", MacroBuiltin::proc_macro_builtin},
+ {"Copy", MacroBuiltin::proc_macro_builtin},
+ {"Debug", MacroBuiltin::proc_macro_builtin},
+ {"Default", MacroBuiltin::proc_macro_builtin},
+ {"Eq", MacroBuiltin::proc_macro_builtin},
+ {"PartialEq", MacroBuiltin::proc_macro_builtin},
+ {"Ord", MacroBuiltin::proc_macro_builtin},
+ {"PartialOrd", MacroBuiltin::proc_macro_builtin},
+ {"Hash", MacroBuiltin::proc_macro_builtin},
};
// FIXME: This should return an Optional
@@ -932,4 +948,11 @@ MacroBuiltin::sorry (Location invoc_locus, AST::MacroInvocData &invoc)
return AST::Fragment::create_error ();
}
+AST::Fragment
+MacroBuiltin::proc_macro_builtin (Location, AST::MacroInvocData &)
+{
+ // nothing to do!
+ return AST::Fragment::create_error ();
+}
+
} // namespace Rust