Adapt loplugin:unnecessarygetstr to libc++

> [CPT] compilerplugins/clang/test/unnecessarygetstr.cxx
> error: 'error' diagnostics expected but not seen:
>   File compilerplugins/clang/test/unnecessarygetstr.cxx Line 119 (directive at compilerplugins/clang/test/unnecessarygetstr.cxx:118): unnecessary call to 'getStr' when passing to string constructor [loplugin:unnecessarygetstr]

because libcxx's <string> declares

> template <__enable_if_t<__is_allocator<_Allocator>::value, int> = 0>
> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 basic_string(const _CharT* __s)

and

> template <__enable_if_t<__is_allocator<_Allocator>::value, int> = 0>
> _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 basic_string(const _CharT* __s, const _Allocator& __a)

instead of single

> basic_string(const charT* s, const Allocator& a = Allocator())

Change-Id: I8d64b140618337adfba01c02d5d02fda093628f2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/151392
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
This commit is contained in:
Stephan Bergmann
2023-05-05 08:05:09 +02:00
parent 5e7327e931
commit 671d1c6cd1
+1 -1
View File
@@ -61,7 +61,7 @@ public:
auto tc = loplugin::TypeCheck(constructExpr->getType());
if (tc.ClassOrStruct("basic_string").StdNamespace())
{
if (constructExpr->getNumArgs() == 2)
if (constructExpr->getNumArgs() == 1 || constructExpr->getNumArgs() == 2)
checkForGetStr(constructExpr->getArg(0), "string constructor");
}
else if (tc.ClassOrStruct("basic_string_view").StdNamespace())