From: Pierre-Emmanuel Patry Date: Thu, 27 Jul 2023 11:11:08 +0000 (+0200) Subject: gccrs: proc_macro: Refactor attribute search X-Git-Tag: basepoints/gcc-15~2297 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=de7e34bdd6c62294831d867188807216e186ed03;p=thirdparty%2Fgcc.git gccrs: proc_macro: Refactor attribute search Refactor attribute search with early return. Also fix the optional building an object with it's default empty constructor by explicitely using tl::null_opt. gcc/rust/ChangeLog: * checks/errors/privacy/rust-privacy-reporter.cc (find_proc_macro_attribute): Refactor the function to be safer and more efficient. Signed-off-by: Pierre-Emmanuel Patry --- diff --git a/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc b/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc index fc00dcbbae6d..c656e761dccc 100644 --- a/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc +++ b/gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc @@ -37,8 +37,6 @@ PrivacyReporter::PrivacyReporter ( static tl::optional find_proc_macro_attribute (const AST::AttrVec &outer_attrs) { - tl::optional result; - for (auto &a : outer_attrs) { auto &segments = a.get_path ().get_segments (); @@ -47,10 +45,10 @@ find_proc_macro_attribute (const AST::AttrVec &outer_attrs) auto name = segments.at (0).get_segment_name (); if (name == "proc_macro" || name == "proc_macro_attribute" || name == "proc_macro_derive") - result = {name}; + return name; } - return result; + return tl::nullopt; } // Common check on crate items when dealing with 'proc-macro' crate type.