compilerplugins/clang/stringconcatauto.cxx | 2 +- compilerplugins/clang/test/stringconcatauto.cxx | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-)
New commits: commit 8195c98dbabc01a11fa2dd73fefabcd6d331d7cf Author: Stephan Bergmann <sberg...@redhat.com> AuthorDate: Fri Oct 14 12:59:56 2022 +0200 Commit: Stephan Bergmann <sberg...@redhat.com> CommitDate: Fri Oct 14 13:54:26 2022 +0200 Fix loplugin:stringconcatauto ...after af2879e434fa0dc6b2a626617ed865e4f66eb5ad "Deduplicate stringconcat more" changed the *StringNumberBase::toAsciiUperCase return typr from O[U]StringNumber to the underlying StringNumberBase. (And where that commit had added some odd check for a non-existing "StringNumber" type to compilerplugins/clang/stringconcatauto.cxx, presumably in error.) Change-Id: I622e6ae30fcec8f081c978eaf67ffb716a10ee4e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/141363 Tested-by: Jenkins Reviewed-by: Stephan Bergmann <sberg...@redhat.com> diff --git a/compilerplugins/clang/stringconcatauto.cxx b/compilerplugins/clang/stringconcatauto.cxx index 02517a4db0ba..f228f865c677 100644 --- a/compilerplugins/clang/stringconcatauto.cxx +++ b/compilerplugins/clang/stringconcatauto.cxx @@ -85,7 +85,7 @@ bool StringConcatAuto::checkDecl( const DeclaratorDecl* decl, QualType type, con const char* typeString = nullptr; if( tc.Struct("StringConcat").Namespace("rtl").GlobalNamespace()) typeString = "O(U)String"; - else if( tc.Struct("StringNumber").Namespace("rtl").GlobalNamespace()) + else if( tc.Struct("StringNumberBase").Namespace("rtl").GlobalNamespace()) typeString = "O(U)String"; else if( tc.Struct("OUStringNumber").Namespace("rtl").GlobalNamespace()) typeString = "OUString"; diff --git a/compilerplugins/clang/test/stringconcatauto.cxx b/compilerplugins/clang/test/stringconcatauto.cxx index 72044f80b150..9fed0b83c75c 100644 --- a/compilerplugins/clang/test/stringconcatauto.cxx +++ b/compilerplugins/clang/test/stringconcatauto.cxx @@ -26,11 +26,15 @@ void foo() auto str5 = OUString::number(50); // expected-error-re@-1 {{creating a variable of type '{{(rtl::)?}}OUStringNumber<{{.*}}>' will make it reference temporaries}} // expected-note@-2 {{use OUString instead}} + auto str6 = OUString::number(50).toAsciiUpperCase(); + // expected-error-re@-1 {{creating a variable of type '{{(rtl::)?}}StringNumberBase<{{.*}}>' will make it reference temporaries}} + // expected-note@-2 {{use O(U)String instead}} (void)str1; (void)str2; (void)str3; (void)str4; (void)str5; + (void)str6; } struct A @@ -47,6 +51,12 @@ struct A { return OString::number(120); } + auto baz2() + // expected-error-re@-1 {{returning a variable of type '{{(rtl::)?}}StringNumberBase<{{.*}}>' will make it reference temporaries}} + // expected-note@-2 {{use O(U)String instead}} + { + return OString::number(120).toAsciiUpperCase(); + } }; template <typename T> void fun(const T& par)