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 <pierre-emmanuel.patry@embecosm.com>
This commit is contained in:
Pierre-Emmanuel Patry 2023-07-27 13:11:08 +02:00 committed by Arthur Cohen
parent 1346a7652e
commit de7e34bdd6

View File

@ -37,8 +37,6 @@ PrivacyReporter::PrivacyReporter (
static tl::optional<std::string>
find_proc_macro_attribute (const AST::AttrVec &outer_attrs)
{
tl::optional<std::string> 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.