diff options
78 files changed, 291 insertions, 163 deletions
diff --git a/basic/qa/cppunit/test_scanner.cxx b/basic/qa/cppunit/test_scanner.cxx index 1591ca891c85..2b7d194d5438 100644 --- a/basic/qa/cppunit/test_scanner.cxx +++ b/basic/qa/cppunit/test_scanner.cxx @@ -160,14 +160,14 @@ void ScannerTest::testBlankLines() void ScannerTest::testOperators() { - constexpr OUString sourceE(u"="_ustr); - constexpr OUString sourceLT(u"<"_ustr); - constexpr OUString sourceGT(u">"_ustr); - constexpr OUString sourceLTE(u"<="_ustr); - constexpr OUString sourceGTE(u">="_ustr); - constexpr OUString sourceNE(u"<>"_ustr); - constexpr OUString sourceA(u":="_ustr); - constexpr OUString sourceNot(u"Not"_ustr); + static constexpr OUString sourceE(u"="_ustr); + static constexpr OUString sourceLT(u"<"_ustr); + static constexpr OUString sourceGT(u">"_ustr); + static constexpr OUString sourceLTE(u"<="_ustr); + static constexpr OUString sourceGTE(u">="_ustr); + static constexpr OUString sourceNE(u"<>"_ustr); + static constexpr OUString sourceA(u":="_ustr); + static constexpr OUString sourceNot(u"Not"_ustr); std::vector<Symbol> symbols; @@ -239,12 +239,12 @@ void ScannerTest::testOperators() void ScannerTest::testAlphanum() { - constexpr OUString source1(u"asdfghefg"_ustr); - constexpr OUString source3(u"AdfsaAUdsl10987"_ustr); - constexpr OUString source4(u"asdfa_mnvcnm"_ustr); - constexpr OUString source5(u"_asdf1"_ustr); - constexpr OUString source6(u"_6"_ustr); - constexpr OUString source7(u"joxclk_"_ustr); + static constexpr OUString source1(u"asdfghefg"_ustr); + static constexpr OUString source3(u"AdfsaAUdsl10987"_ustr); + static constexpr OUString source4(u"asdfa_mnvcnm"_ustr); + static constexpr OUString source5(u"_asdf1"_ustr); + static constexpr OUString source6(u"_6"_ustr); + static constexpr OUString source7(u"joxclk_"_ustr); std::vector<Symbol> symbols; diff --git a/compilerplugins/clang/staticconstexpr.cxx b/compilerplugins/clang/staticconstexpr.cxx new file mode 100644 index 000000000000..4985c6115e3f --- /dev/null +++ b/compilerplugins/clang/staticconstexpr.cxx @@ -0,0 +1,91 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef LO_CLANG_SHARED_PLUGINS + +#include <cassert> +#include <stack> + +#include "check.hxx" +#include "plugin.hxx" +#include "config_clang.h" + +/** +In MSVC, non-static constexpr objects are initialized at run-time + +So make sure that function-local vars are declared static. + +*/ +namespace +{ +class StaticConstexpr final : public loplugin::FilteringPlugin<StaticConstexpr> +{ +public: + explicit StaticConstexpr(loplugin::InstantiationData const& data) + : FilteringPlugin(data) + { + } + + bool VisitVarDecl(const VarDecl* varDecl) + { + if (ignoreLocation(varDecl)) + return true; + if (!varDecl->isConstexpr()) + return true; + if (!varDecl->isLocalVarDecl()) + return true; + if (varDecl->isStaticLocal()) + return true; + if (auto const functionDecl = dyn_cast_or_null<FunctionDecl>(varDecl->getDeclContext())) + { + // cannot convert these, definition of a static variable in a constexpr function is a C++23 extension + if (functionDecl->isConstexpr()) + return true; + } + if (varDecl->getType()->isBuiltinType() || varDecl->getType()->isEnumeralType()) + return true; + // ignore the o3tl::getConversionMulDiv stuff + loplugin::TypeCheck tc(varDecl->getType()); + if (tc.ClassOrStruct("pair").StdNamespace()) + return true; + if (tc.Struct("m_and_d").Namespace("detail").Namespace("o3tl")) + return true; + if (tc.ClassOrStruct("TypedWhichId")) + return true; + if (tc.ClassOrStruct("Color")) + return true; + report(DiagnosticsEngine::Warning, + "function-local constexpr vars should be declared static", varDecl->getBeginLoc()) + << varDecl->getSourceRange(); + return true; + } + + bool preRun() override + { + if (!compiler.getLangOpts().CPlusPlus) + return false; + return true; + } + +private: + void run() override + { + if (preRun()) + { + TraverseDecl(compiler.getASTContext().getTranslationUnitDecl()); + } + } +}; + +loplugin::Plugin::Registration<StaticConstexpr> staticconstexpr("staticconstexpr"); +} + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/compilerplugins/clang/test/staticconstexpr.cxx b/compilerplugins/clang/test/staticconstexpr.cxx new file mode 100644 index 000000000000..f4b388ad176b --- /dev/null +++ b/compilerplugins/clang/test/staticconstexpr.cxx @@ -0,0 +1,28 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#include <sal/config.h> +#include <rtl/string.hxx> +#include <rtl/ustring.hxx> + +namespace test1 +{ +void f() +{ + // expected-error@+1 {{function-local constexpr vars should be declared static [loplugin:staticconstexpr]}} + constexpr sal_Int64 powers[] = { 1, 10, 100 }; + (void)powers; + + // no warning expected, simple type + constexpr sal_Int64 powers2 = 1.0; + (void)powers2; +} +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */ diff --git a/connectivity/source/parse/sqlnode.cxx b/connectivity/source/parse/sqlnode.cxx index bccdb37a947b..edef27ab6975 100644 --- a/connectivity/source/parse/sqlnode.cxx +++ b/connectivity/source/parse/sqlnode.cxx @@ -360,7 +360,7 @@ bool OSQLParseNode::parseNodeToExecutableStatement( OUString& _out_rString, cons if(sLimitValue.getLength() > 0) { - constexpr char SELECT_KEYWORD[] = "SELECT"; + static constexpr char SELECT_KEYWORD[] = "SELECT"; sBuffer.insert(sBuffer.indexOf(SELECT_KEYWORD) + strlen(SELECT_KEYWORD), Concat2View(" FIRST " + sLimitValue)); } diff --git a/cui/source/options/optgdlg.cxx b/cui/source/options/optgdlg.cxx index fcf93ef00d8b..c80449a62602 100644 --- a/cui/source/options/optgdlg.cxx +++ b/cui/source/options/optgdlg.cxx @@ -1855,7 +1855,7 @@ IMPL_LINK_NOARG(OfaLanguagesTabPage, LocaleSettingHdl, weld::ComboBox&, void) const NfCurrencyEntry& rCurr = SvNumberFormatter::GetCurrencyEntry( (eLang == LANGUAGE_USER_SYSTEM_CONFIG) ? MsLangId::getConfiguredSystemLanguage() : eLang); - constexpr OUString aDefaultID = u"default"_ustr; + static constexpr OUString aDefaultID = u"default"_ustr; // Update the "Default ..." currency. m_xCurrencyLB->remove_id(aDefaultID); OUString aDefaultCurr = m_sSystemDefaultString + " - " + rCurr.GetBankSymbol(); diff --git a/dbaccess/source/core/api/KeySet.cxx b/dbaccess/source/core/api/KeySet.cxx index 324daa6e6662..90775495b96d 100644 --- a/dbaccess/source/core/api/KeySet.cxx +++ b/dbaccess/source/core/api/KeySet.cxx @@ -437,9 +437,9 @@ void OKeySet::updateRow(const ORowSetRow& _rInsertRow ,const ORowSetRow& _rOrigi OUStringBuffer aSql = "UPDATE " + m_aComposedTableName + " SET "; // list all columns that should be set - constexpr OUStringLiteral aPara(u" = ?,"); + static constexpr OUStringLiteral aPara(u" = ?,"); OUString aQuote = getIdentifierQuoteString(); - constexpr OUString aAnd(u" AND "_ustr); + static constexpr OUString aAnd(u" AND "_ustr); OUString sIsNull(u" IS NULL"_ustr); OUString sParam(u" = ?"_ustr); diff --git a/dbaccess/source/filter/hsqldb/createparser.cxx b/dbaccess/source/filter/hsqldb/createparser.cxx index 360741ce0b28..9fe720095ac3 100644 --- a/dbaccess/source/filter/hsqldb/createparser.cxx +++ b/dbaccess/source/filter/hsqldb/createparser.cxx @@ -83,7 +83,7 @@ sal_Int32 lcl_getAutoIncrementDefault(std::u16string_view sColumnDef) std::u16string_view lcl_getDefaultValue(std::u16string_view sColumnDef) { - constexpr std::u16string_view DEFAULT_KW = u"DEFAULT"; + static constexpr std::u16string_view DEFAULT_KW = u"DEFAULT"; size_t nDefPos = sColumnDef.find(DEFAULT_KW); if (nDefPos > 0 && nDefPos != std::u16string_view::npos && lcl_getAutoIncrementDefault(sColumnDef) < 0) diff --git a/dbaccess/source/ui/browser/unodatbr.cxx b/dbaccess/source/ui/browser/unodatbr.cxx index b6d18610011c..283f3680afd6 100644 --- a/dbaccess/source/ui/browser/unodatbr.cxx +++ b/dbaccess/source/ui/browser/unodatbr.cxx @@ -1226,13 +1226,13 @@ void SbaTableQueryBrowser::connectExternalDispatches() if ( m_aExternalFeatures.empty() ) { - constexpr OUString aURLs[] { + static constexpr OUString aURLs[] { u".uno:DataSourceBrowser/DocumentDataSource"_ustr, u".uno:DataSourceBrowser/FormLetter"_ustr, u".uno:DataSourceBrowser/InsertColumns"_ustr, u".uno:DataSourceBrowser/InsertContent"_ustr, }; - constexpr sal_uInt16 nIds[] = { + static constexpr sal_uInt16 nIds[] = { ID_BROWSER_DOCUMENT_DATASOURCE, ID_BROWSER_FORMLETTER, ID_BROWSER_INSERTCOLUMNS, diff --git a/dbaccess/source/ui/dlg/tablespage.cxx b/dbaccess/source/ui/dlg/tablespage.cxx index 75e6d657771b..06ff0c0e4373 100644 --- a/dbaccess/source/ui/dlg/tablespage.cxx +++ b/dbaccess/source/ui/dlg/tablespage.cxx @@ -332,7 +332,7 @@ namespace dbaui Sequence< OUString > OTableSubscriptionPage::collectDetailedSelection() const { Sequence< OUString > aTableFilter; - constexpr OUString sWildcard = u"%"_ustr; + static constexpr OUString sWildcard = u"%"_ustr; std::unique_ptr<weld::TreeIter> xAllObjectsEntry(m_xTablesList->getAllObjectsEntry()); if (!xAllObjectsEntry) diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx index 901e8ae67fe0..e6a2feca09ff 100644 --- a/desktop/source/app/app.cxx +++ b/desktop/source/app/app.cxx @@ -1030,8 +1030,8 @@ struct RefClearGuard bool impl_callRecoveryUI(bool bEmergencySave , bool bExistsRecoveryData) { - constexpr OUStringLiteral COMMAND_EMERGENCYSAVE = u"vnd.sun.star.autorecovery:/doEmergencySave"; - constexpr OUStringLiteral COMMAND_RECOVERY = u"vnd.sun.star.autorecovery:/doAutoRecovery"; + static constexpr OUStringLiteral COMMAND_EMERGENCYSAVE = u"vnd.sun.star.autorecovery:/doEmergencySave"; + static constexpr OUStringLiteral COMMAND_RECOVERY = u"vnd.sun.star.autorecovery:/doAutoRecovery"; css::uno::Reference< css::uno::XComponentContext > xContext = ::comphelper::getProcessComponentContext(); diff --git a/drawinglayer/source/processor2d/cairopixelprocessor2d.cxx b/drawinglayer/source/processor2d/cairopixelprocessor2d.cxx index 365d62a19fc6..ff9fd83455ef 100644 --- a/drawinglayer/source/processor2d/cairopixelprocessor2d.cxx +++ b/drawinglayer/source/processor2d/cairopixelprocessor2d.cxx @@ -770,7 +770,7 @@ void LuminanceToAlpha(cairo_surface_t* pMask) // and the short loop (for nR, nG and nB resp.) like: // for(unsigned short a(0); a < 256; a++) // std::cout << ((a * nR) / 255) << ", "; - constexpr std::array<sal_uInt8, 256> nRArray + static constexpr std::array<sal_uInt8, 256> nRArray = { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10, 10, 10, 10, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 13, 13, 13, 13, @@ -783,7 +783,7 @@ void LuminanceToAlpha(cairo_surface_t* pMask) 41, 42, 42, 42, 42, 42, 43, 43, 43, 43, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45, 46, 46, 46, 46, 47, 47, 47, 47, 47, 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, 51, 51, 51, 52, 52, 52, 52, 52, 53, 53, 53, 53, 54 }; - constexpr std::array<sal_uInt8, 256> nGArray + static constexpr std::array<sal_uInt8, 256> nGArray = { 0, 0, 1, 2, 2, 3, 4, 5, 5, 6, 7, 7, 8, 9, 10, 10, 11, 12, 12, 13, 14, 15, 15, 16, 17, 17, 18, 19, 20, 20, 21, 22, 22, 23, 24, 25, 25, 26, 27, 27, 28, 29, 30, 30, 31, 32, 33, 33, @@ -800,7 +800,7 @@ void LuminanceToAlpha(cairo_surface_t* pMask) 149, 149, 150, 151, 152, 152, 153, 154, 155, 155, 156, 157, 157, 158, 159, 160, 160, 161, 162, 162, 163, 164, 165, 165, 166, 167, 167, 168, 169, 170, 170, 171, 172, 172, 173, 174, 175, 175, 176, 177, 177, 178, 179, 180, 180, 181, 182, 183 }; - constexpr std::array<sal_uInt8, 256> nBArray + static constexpr std::array<sal_uInt8, 256> nBArray = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, @@ -3388,7 +3388,7 @@ void CairoPixelProcessor2D::renderTextSimpleOrDecoratedPortionPrimitive2D( constexpr double fPlus(1.0); constexpr double fMinus(-1.0); - constexpr std::array<std::pair<double, double>, 8> offsets{ + static constexpr std::array<std::pair<double, double>, 8> offsets{ std::pair<double, double>{ fMinus, fMinus }, std::pair<double, double>{ fZero, fMinus }, std::pair<double, double>{ fPlus, fMinus }, std::pair<double, double>{ fMinus, fZero }, std::pair<double, double>{ fPlus, fZero }, std::pair<double, double>{ fMinus, fPlus }, diff --git a/editeng/qa/unit/core-test.cxx b/editeng/qa/unit/core-test.cxx index 4918ffb3aeb8..ac3c683c9204 100644 --- a/editeng/qa/unit/core-test.cxx +++ b/editeng/qa/unit/core-test.cxx @@ -1815,7 +1815,7 @@ void Test::testTransliterate() CPPUNIT_ASSERT_EQUAL(u"One (Two) Three"_ustr, editEng.GetText()); using TF = TransliterationFlags; - constexpr OUString sText2 = u"Mary Jones met joe Smith. Time Passed."_ustr; + static constexpr OUString sText2 = u"Mary Jones met joe Smith. Time Passed."_ustr; int selStart = 12; int selEnd = 12; ESelection esel(0, selStart, 0, selEnd); @@ -1912,7 +1912,7 @@ void Test::testTransliterate() selStart = 0; selEnd = 19; esel = ESelection(0, selStart, 0, selEnd); - constexpr OUString sText3(u"CURRENT IS EQUAL TO 10 A"_ustr); + static constexpr OUString sText3(u"CURRENT IS EQUAL TO 10 A"_ustr); editEng.SetText(sText3); CPPUNIT_ASSERT_EQUAL(u"CURRENT IS EQUAL TO"_ustr, editEng.GetText(esel)); @@ -1940,7 +1940,7 @@ void Test::testTdf148148() int selStart = 0; int selEnd = 3; ESelection esel(0, selStart, 0, selEnd); - constexpr OUString sText1(u" text"_ustr); + static constexpr OUString sText1(u" text"_ustr); editEng.SetText(sText1); CPPUNIT_ASSERT_EQUAL(u" "_ustr, editEng.GetText(esel)); @@ -1952,7 +1952,7 @@ void Test::testTdf148148() selStart = 4; selEnd = 8; esel = ESelection(0, selStart, 0, selEnd); - constexpr OUString sText2(u"text "_ustr); + static constexpr OUString sText2(u"text "_ustr); editEng.SetText(sText2); CPPUNIT_ASSERT_EQUAL(u" "_ustr, editEng.GetText(esel)); @@ -1965,7 +1965,7 @@ void Test::testTdf148148() selStart = 0; selEnd = 3; esel = ESelection(0, selStart, 0, selEnd); - constexpr OUString sText3(u" -1"_ustr); + static constexpr OUString sText3(u" -1"_ustr); editEng.SetText(sText3); CPPUNIT_ASSERT_EQUAL(u" "_ustr, editEng.GetText(esel)); @@ -1977,7 +1977,7 @@ void Test::testTdf148148() selStart = 2; selEnd = 6; esel = ESelection(0, selStart, 0, selEnd); - constexpr OUString sText4(u"-1 "_ustr); + static constexpr OUString sText4(u"-1 "_ustr); editEng.SetText(sText4); CPPUNIT_ASSERT_EQUAL(u" "_ustr, editEng.GetText(esel)); @@ -1990,7 +1990,7 @@ void Test::testTdf148148() selStart = 0; selEnd = 5; esel = ESelection(0, selStart, 0, selEnd); - constexpr OUString sText5(u" -1"_ustr); + static constexpr OUString sText5(u" -1"_ustr); editEng.SetText(sText3); CPPUNIT_ASSERT_EQUAL(u" -1"_ustr, editEng.GetText(esel)); @@ -2002,7 +2002,7 @@ void Test::testTdf148148() selStart = 0; selEnd = 5; esel = ESelection(0, selStart, 0, selEnd); - constexpr OUString sText6(u"-1 "_ustr); + static constexpr OUString sText6(u"-1 "_ustr); editEng.SetText(sText4); CPPUNIT_ASSERT_EQUAL(u"-1 "_ustr, editEng.GetText(esel)); diff --git a/editeng/source/items/numitem.cxx b/editeng/source/items/numitem.cxx index c5e4240343b2..cd4a2e93146d 100644 --- a/editeng/source/items/numitem.cxx +++ b/editeng/source/items/numitem.cxx @@ -552,8 +552,8 @@ OUString SvxNumberFormat::CreateRomanString( sal_Int32 nNo, bool bUpper ) { OUStringBuffer sRet; - constexpr char romans[][13] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; - constexpr sal_Int32 values[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; + static constexpr char romans[][13] = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"}; + static constexpr sal_Int32 values[] = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1}; for (size_t i = 0; i < std::size(romans); ++i) { diff --git a/i18npool/qa/cppunit/test_breakiterator.cxx b/i18npool/qa/cppunit/test_breakiterator.cxx index 84ae6d5fe72b..e56089ad0c28 100644 --- a/i18npool/qa/cppunit/test_breakiterator.cxx +++ b/i18npool/qa/cppunit/test_breakiterator.cxx @@ -293,7 +293,7 @@ void TestBreakIterator::testLineBreaking() aHyphOptions, aUserOptions); CPPUNIT_ASSERT_EQUAL(sal_Int32{9}, aResult.breakIndex); - constexpr OUString str = u"range of \u2212100.000 to 100.000"_ustr; + static constexpr OUString str = u"range of \u2212100.000 to 100.000"_ustr; aResult = m_xBreak->getLineBreak( str, strlen("range of -"), aLocale, 0, aHyphOptions, aUserOptions); CPPUNIT_ASSERT_EQUAL(sal_Int32{9}, aResult.breakIndex); @@ -311,7 +311,7 @@ void TestBreakIterator::testLineBreaking() // Also the mathematical minus sign: - constexpr OUString str = u"EURO is \u221210,50"_ustr; + static constexpr OUString str = u"EURO is \u221210,50"_ustr; aResult = m_xBreak->getLineBreak( str, strlen("EURO is -"), aLocale, 0, aHyphOptions, aUserOptions); CPPUNIT_ASSERT_EQUAL(sal_Int32{8}, aResult.breakIndex); @@ -327,7 +327,7 @@ void TestBreakIterator::testLineBreaking() // But not the non-breaking hyphen: - constexpr OUString str = u"und \u2011"_ustr; + static constexpr OUString str = u"und \u2011"_ustr; aResult = m_xBreak->getLineBreak( str, strlen("und -ko"), aLocale, 0, aHyphOptions, aUserOptions); CPPUNIT_ASSERT_EQUAL(sal_Int32{5}, aResult.breakIndex); @@ -672,7 +672,7 @@ void TestBreakIterator::testWordBoundaries() //See https://bz.apache.org/ooo/show_bug.cgi?id=13494 { - constexpr OUString aBase(u"xxAAxxBBxxCCxx"_ustr); + static constexpr OUString aBase(u"xxAAxxBBxxCCxx"_ustr); const sal_Unicode aTests[] = { '\'', ';', ',', '.', '!', '@', '#', '%', '&', '*', diff --git a/i18npool/source/collator/collator_unicode.cxx b/i18npool/source/collator/collator_unicode.cxx index 0ecdae3e8569..4e19eed9de23 100644 --- a/i18npool/source/collator/collator_unicode.cxx +++ b/i18npool/source/collator/collator_unicode.cxx @@ -156,7 +156,7 @@ Collator_Unicode::loadCollatorAlgorithm(const OUString& rAlgorithm, const lang:: size_t (*funclen)() = nullptr; #ifndef DISABLE_DYNLOADING - constexpr OUString sModuleName( u"" SAL_MODULENAME( "i18npool" ) ""_ustr ); + static constexpr OUString sModuleName( u"" SAL_MODULENAME( "i18npool" ) ""_ustr ); hModule = osl_loadModuleRelative( &thisModule, sModuleName.pData, SAL_LOADMODULE_DEFAULT ); if (hModule) { OUStringBuffer aBuf("get_collator_data_" + rLocale.Language + "_"); diff --git a/sal/qa/osl/socket.cxx b/sal/qa/osl/socket.cxx index 16b1366ba884..2a02e409a5a7 100644 --- a/sal/qa/osl/socket.cxx +++ b/sal/qa/osl/socket.cxx @@ -25,7 +25,7 @@ class SocketTest : public CppUnit::TestFixture void test_createInetSocketAddr() { - OUString constexpr in(u"123.4.56.78"_ustr); + static constexpr OUString in(u"123.4.56.78"_ustr); auto const addr = osl_createInetSocketAddr(in.pData, 100); CPPUNIT_ASSERT(addr != nullptr); CPPUNIT_ASSERT_EQUAL(osl_Socket_FamilyInet, osl_getFamilyOfSocketAddr(addr)); diff --git a/sal/qa/rtl/strings/test_oustring_stringliterals.cxx b/sal/qa/rtl/strings/test_oustring_stringliterals.cxx index 25bc346fb495..1937029a1fdf 100644 --- a/sal/qa/rtl/strings/test_oustring_stringliterals.cxx +++ b/sal/qa/rtl/strings/test_oustring_stringliterals.cxx @@ -409,7 +409,7 @@ void test::oustring::StringLiterals::checkUtf16() { void test::oustring::StringLiterals::checkEmbeddedNul() { using namespace std::literals; rtl::OUString const s("foobar"); - constexpr char16_t const a[] = u"foo\0hidden"; + static constexpr char16_t const a[] = u"foo\0hidden"; char16_t const * const p = a; CPPUNIT_ASSERT(s.startsWith(a)); CPPUNIT_ASSERT(s.startsWith(p)); diff --git a/sal/qa/rtl/strings/test_strings_defaultstringview.cxx b/sal/qa/rtl/strings/test_strings_defaultstringview.cxx index cbedc3a8e461..87b1d79ed331 100644 --- a/sal/qa/rtl/strings/test_strings_defaultstringview.cxx +++ b/sal/qa/rtl/strings/test_strings_defaultstringview.cxx @@ -50,7 +50,8 @@ class Test : public CppUnit::TestFixture CPPUNIT_ASSERT_EQUAL(true, u"foo"_ustr.startsWithIgnoreAsciiCase(std::u16string_view())); CPPUNIT_ASSERT_EQUAL(true, u"foo"_ustr.endsWith(std::u16string_view())); CPPUNIT_ASSERT_EQUAL(true, u"foo"_ustr.endsWithIgnoreAsciiCase(std::u16string_view())); - OUString constexpr foo(u"foo"_ustr); // avoid loplugin:stringconstant, loplugin:stringview + static constexpr OUString foo( + u"foo"_ustr); // avoid loplugin:stringconstant, loplugin:stringview CPPUNIT_ASSERT_EQUAL(false, foo == std::u16string_view()); CPPUNIT_ASSERT_EQUAL(true, foo != std::u16string_view()); CPPUNIT_ASSERT_EQUAL(false, foo < std::u16string_view()); diff --git a/sal/qa/rtl/textenc/rtl_textcvt.cxx b/sal/qa/rtl/textenc/rtl_textcvt.cxx index 6780b37f55fe..fe6c8251d88d 100644 --- a/sal/qa/rtl/textenc/rtl_textcvt.cxx +++ b/sal/qa/rtl/textenc/rtl_textcvt.cxx @@ -3027,7 +3027,7 @@ void Test::testInvalidUtf8() { auto const converter = rtl_createTextToUnicodeConverter( RTL_TEXTENCODING_JAVA_UTF8); CPPUNIT_ASSERT(converter != nullptr); - constexpr OString input(u8"\U00010000"_ostr); + static constexpr OString input(u8"\U00010000"_ostr); sal_Unicode buf[TEST_STRING_SIZE]; sal_uInt32 info; sal_Size converted; diff --git a/sal/rtl/strtmpl.hxx b/sal/rtl/strtmpl.hxx index d13e5f73acd5..c5e2ff5810fd 100644 --- a/sal/rtl/strtmpl.hxx +++ b/sal/rtl/strtmpl.hxx @@ -1420,7 +1420,7 @@ void doubleToString(rtl_tString** pResult, sal_Int32* pResultCapacity, sal_Int32 if (std::isnan(fValue)) { // #i112652# XMLSchema-2 - constexpr std::string_view nan{ "NaN" }; + static constexpr std::string_view nan{ "NaN" }; return append(pResult, pResultCapacity, nResultOffset, nan); } diff --git a/sc/qa/unit/subsequent_export_test.cxx b/sc/qa/unit/subsequent_export_test.cxx index f3a7399a78a0..ad8745ee1659 100644 --- a/sc/qa/unit/subsequent_export_test.cxx +++ b/sc/qa/unit/subsequent_export_test.cxx @@ -344,7 +344,8 @@ CPPUNIT_TEST_FIXTURE(ScExportTest, testTdf99856_dataValidationTest) CPPUNIT_TEST_FIXTURE(ScExportTest, testProtectionKeyODS_UTF16LErtlSHA1) { - OUString constexpr password(u"1012345678901234567890123456789012345678901234567890"_ustr); + static OUString constexpr password( + u"1012345678901234567890123456789012345678901234567890"_ustr); createScDoc("fods/protection-key1.fods"); @@ -370,7 +371,8 @@ CPPUNIT_TEST_FIXTURE(ScExportTest, testProtectionKeyODS_UTF16LErtlSHA1) CPPUNIT_TEST_FIXTURE(ScExportTest, testProtectionKeyODS_UTF8SHA1) { - OUString constexpr password(u"1012345678901234567890123456789012345678901234567890"_ustr); + static OUString constexpr password( + u"1012345678901234567890123456789012345678901234567890"_ustr); createScDoc("fods/protection-key2.fods"); @@ -396,7 +398,8 @@ CPPUNIT_TEST_FIXTURE(ScExportTest, testProtectionKeyODS_UTF8SHA1) CPPUNIT_TEST_FIXTURE(ScExportTest, testProtectionKeyODS_UTF8SHA256ODF12) { - OUString constexpr password(u"1012345678901234567890123456789012345678901234567890"_ustr); + static OUString constexpr password( + u"1012345678901234567890123456789012345678901234567890"_ustr); createScDoc("fods/protection-key3.fods"); @@ -424,7 +427,8 @@ CPPUNIT_TEST_FIXTURE(ScExportTest, testProtectionKeyODS_UTF8SHA256ODF12) CPPUNIT_TEST_FIXTURE(ScExportTest, testProtectionKeyODS_UTF8SHA256W3C) { - OUString constexpr password(u"1012345678901234567890123456789012345678901234567890"_ustr); + static OUString constexpr password( + u"1012345678901234567890123456789012345678901234567890"_ustr); createScDoc("fods/protection-key4.fods"); @@ -452,7 +456,8 @@ CPPUNIT_TEST_FIXTURE(ScExportTest, testProtectionKeyODS_UTF8SHA256W3C) CPPUNIT_TEST_FIXTURE(ScExportTest, testProtectionKeyODS_XL_SHA1) { - OUString constexpr password(u"1012345678901234567890123456789012345678901234567890"_ustr); + static OUString constexpr password( + u"1012345678901234567890123456789012345678901234567890"_ustr); createScDoc("fods/protection-key5.fods"); diff --git a/sc/qa/unit/subsequent_export_test2.cxx b/sc/qa/unit/subsequent_export_test2.cxx index 514e88129214..91ef0a47a287 100644 --- a/sc/qa/unit/subsequent_export_test2.cxx +++ b/sc/qa/unit/subsequent_export_test2.cxx @@ -1040,7 +1040,7 @@ CPPUNIT_TEST_FIXTURE(ScExportTest2, testTdf112567) CPPUNIT_TEST_FIXTURE(ScExportTest2, testTdf75702) { // The problem was that line breaks were not imported. - constexpr OUString sA1(u"line1\nline2"_ustr); + static constexpr OUString sA1(u"line1\nline2"_ustr); createScDoc("ods/tdf75702_textLineBreak.ods"); ScDocument* pDoc = getScDoc(); @@ -1059,8 +1059,8 @@ CPPUNIT_TEST_FIXTURE(ScExportTest2, testTdf103829) { // The problem was that tabspaces were not imported or exported at all. // These strings match the current implementations of CELLTYPE_EDIT and CELLTYPE_STRING. - constexpr OUString sA1(u"\x001Leading tab\nTHREE tabs inside: [\x001\x001\x001]"_ustr); - constexpr OUString sA2(u"\tLeading tab. THREE tabs inside: [\t\t\t]"_ustr); + static constexpr OUString sA1(u"\x001Leading tab\nTHREE tabs inside: [\x001\x001\x001]"_ustr); + static constexpr OUString sA2(u"\tLeading tab. THREE tabs inside: [\t\t\t]"_ustr); createScDoc("ods/tdf103829_textTab.ods"); ScDocument* pDoc = getScDoc(); diff --git a/sc/qa/unit/subsequent_export_test4.cxx b/sc/qa/unit/subsequent_export_test4.cxx index fdb3b6f9a876..f545e2bae160 100644 --- a/sc/qa/unit/subsequent_export_test4.cxx +++ b/sc/qa/unit/subsequent_export_test4.cxx @@ -567,7 +567,7 @@ CPPUNIT_TEST_FIXTURE(ScExportTest4, testTdf154445_unused_pagestyles) createScDoc("ods/tdf108188_pagestyle.ods"); // Check if the user defined page style is present - constexpr OUString aTestPageStyle = u"TestPageStyle"_ustr; + static constexpr OUString aTestPageStyle = u"TestPageStyle"_ustr; ScDocument* pDoc = getScDoc(); CPPUNIT_ASSERT_EQUAL(aTestPageStyle, pDoc->GetPageStyle(0)); diff --git a/sc/qa/unit/subsequent_filters_test3.cxx b/sc/qa/unit/subsequent_filters_test3.cxx index 6358d0acd770..afdd54ef2ffc 100644 --- a/sc/qa/unit/subsequent_filters_test3.cxx +++ b/sc/qa/unit/subsequent_filters_test3.cxx @@ -258,7 +258,7 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest3, testWrapAndShrinkXLSXML) bool bShrinkToFit; }; - constexpr Check aChecks[] = { + static constexpr Check aChecks[] = { { 1, 0, false, false }, { 1, 1, true, false }, { 1, 2, false, true }, @@ -1775,7 +1775,7 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest3, testTdf108188_pagestyle) createScDoc("ods/tdf108188_pagestyle.ods"); // Check if the user defined page style is present - constexpr OUString aTestPageStyle = u"TestPageStyle"_ustr; + static constexpr OUString aTestPageStyle = u"TestPageStyle"_ustr; ScDocument* pDoc = getScDoc(); CPPUNIT_ASSERT_EQUAL(aTestPageStyle, pDoc->GetPageStyle(0)); diff --git a/sc/qa/unit/subsequent_filters_test5.cxx b/sc/qa/unit/subsequent_filters_test5.cxx index 6cc2351cffc0..a4ff94307c6b 100644 --- a/sc/qa/unit/subsequent_filters_test5.cxx +++ b/sc/qa/unit/subsequent_filters_test5.cxx @@ -38,8 +38,8 @@ CPPUNIT_TEST_FIXTURE(ScFiltersTest5, testTdf162963) //tests xlsx -> ods -> ods of property "TotalsRow" createScDoc("xlsx/tdf162963_TableWithTotalsEnabled.xlsx"); - constexpr OUString sDBName(u"myData"_ustr); - constexpr OUString sPropName(u"TotalsRow"_ustr); + static constexpr OUString sDBName(u"myData"_ustr); + static constexpr OUString sPropName(u"TotalsRow"_ustr); // Make sure the database range "myData" has TotalsRow TRUE after import from xlsx. { diff --git a/sc/qa/unit/tiledrendering/tiledrendering.cxx b/sc/qa/unit/tiledrendering/tiledrendering.cxx index 43569fa4fa47..8c63f99d82df 100644 --- a/sc/qa/unit/tiledrendering/tiledrendering.cxx +++ b/sc/qa/unit/tiledrendering/tiledrendering.cxx @@ -1611,7 +1611,7 @@ CPPUNIT_TEST_FIXTURE(ScTiledRenderingTest, testLanguageStatus) const SfxStringItem* pItem2 = dynamic_cast<const SfxStringItem*>(xItem2.get()); CPPUNIT_ASSERT(pItem1); CPPUNIT_ASSERT(pItem2); - constexpr OUString aLangBolivia(u"Spanish (Bolivia);es-BO"_ustr); + static constexpr OUString aLangBolivia(u"Spanish (Bolivia);es-BO"_ustr); CPPUNIT_ASSERT_EQUAL(aLangBolivia, pItem1->GetValue()); CPPUNIT_ASSERT_EQUAL(aLangBolivia, pItem2->GetValue()); } diff --git a/sc/qa/unit/ucalc_copypaste.cxx b/sc/qa/unit/ucalc_copypaste.cxx index a58698f1e18e..056d439d6691 100644 --- a/sc/qa/unit/ucalc_copypaste.cxx +++ b/sc/qa/unit/ucalc_copypaste.cxx @@ -257,7 +257,7 @@ CPPUNIT_TEST_FIXTURE(TestCopyPaste, testCopyPaste) ScRangeData* pLocal5 = new ScRangeData(*m_pDoc, u"local5"_ustr, u"$A$1"_ustr); // implicit relative sheet reference ScRangeData* pGlobal = new ScRangeData(*m_pDoc, u"global"_ustr, aAdr); - constexpr OUString aGlobal2Symbol(u"$Sheet1.$A$1:$A$23"_ustr); + static constexpr OUString aGlobal2Symbol(u"$Sheet1.$A$1:$A$23"_ustr); ScRangeData* pGlobal2 = new ScRangeData(*m_pDoc, u"global2"_ustr, aGlobal2Symbol); std::unique_ptr<ScRangeName> pGlobalRangeName(new ScRangeName()); pGlobalRangeName->insert(pGlobal); @@ -9983,7 +9983,7 @@ CPPUNIT_TEST_FIXTURE(TestCopyPaste, testCopyPasteFormulasExternalDoc) m_xDocShell->DoLoad(pMedium); ScDocShellRef xExtDocSh = new ScDocShell; - OUString constexpr aExtDocName(u"file:///extdata.fake"_ustr); + static OUString constexpr aExtDocName(u"file:///extdata.fake"_ustr); SfxMedium* pMed = new SfxMedium(aExtDocName, StreamMode::STD_READWRITE); xExtDocSh->DoLoad(pMed); CPPUNIT_ASSERT_MESSAGE("external document instance not loaded.", diff --git a/sc/qa/unit/ucalc_formula.cxx b/sc/qa/unit/ucalc_formula.cxx index 1660ce5daba4..23af64ecafea 100644 --- a/sc/qa/unit/ucalc_formula.cxx +++ b/sc/qa/unit/ucalc_formula.cxx @@ -1404,7 +1404,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula, testFormulaAnnotateTrimOnDoubleRefs) constexpr sal_Int32 nRows = 5; // Values in A1:B5 - constexpr sal_Int32 aMat[nRows][nCols] = { + static constexpr sal_Int32 aMat[nRows][nCols] = { {4, 50}, {5, 30}, {4, 40}, diff --git a/sc/qa/unit/ucalc_formula2.cxx b/sc/qa/unit/ucalc_formula2.cxx index 4c4200cfac45..b59536b9a4f8 100644 --- a/sc/qa/unit/ucalc_formula2.cxx +++ b/sc/qa/unit/ucalc_formula2.cxx @@ -1558,8 +1558,8 @@ CPPUNIT_TEST_FIXTURE(TestFormula2, testExternalRef) rExtDoc.InsertTab(1, aExtSh2Name); rExtDoc.InsertTab(2, aExtSh3Name); - OUString constexpr name(u"Name"_ustr); - OUString constexpr value(u"Value"_ustr); + static OUString constexpr name(u"Name"_ustr); + static OUString constexpr value(u"Value"_ustr); // Sheet 1 rExtDoc.SetString(0, 0, 0, name); @@ -1717,7 +1717,7 @@ CPPUNIT_TEST_FIXTURE(TestFormula2, testExternalRef) CPPUNIT_TEST_FIXTURE(TestFormula2, testExternalRangeName) { ScDocShellRef xExtDocSh = new ScDocShell; - OUString constexpr aExtDocName(u"file:///extdata.fake"_ustr); + static OUString constexpr aExtDocName(u"file:///extdata.fake"_ustr); SfxMedium* pMed = new SfxMedium(aExtDocName, StreamMode::STD_READWRITE); xExtDocSh->DoLoad(pMed); CPPUNIT_ASSERT_MESSAGE("external document instance not loaded.", @@ -3515,8 +3515,8 @@ CPPUNIT_TEST_FIXTURE(TestFormula2, testFormulaErrorPropagation) ScMarkData aMark(m_pDoc->GetSheetLimits()); aMark.SelectOneTable(0); ScAddress aPos, aPos2; - constexpr OUString aTRUE(u"TRUE"_ustr); - constexpr OUString aFALSE(u"FALSE"_ustr); + static constexpr OUString aTRUE(u"TRUE"_ustr); + static constexpr OUString aFALSE(u"FALSE"_ustr); aPos.Set(0, 0, 0); // A1 m_pDoc->SetValue(aPos, 1.0); diff --git a/sc/qa/unit/ucalc_parallelism.cxx b/sc/qa/unit/ucalc_parallelism.cxx index 12e25024931c..376e3a5e896c 100644 --- a/sc/qa/unit/ucalc_parallelism.cxx +++ b/sc/qa/unit/ucalc_parallelism.cxx @@ -604,7 +604,7 @@ CPPUNIT_TEST_FIXTURE(ScParallelismTest, testFormulaGroupSpanEvalNonGroup) m_xDocShell->DoHardRecalc(); constexpr size_t nNumChanges = 12; - constexpr size_t nChangeRows[nNumChanges] = {10, 11, 12, 101, 102, 103, 251, 252, 253, 503, 671, 1029}; + static constexpr size_t nChangeRows[nNumChanges] = {10, 11, 12, 101, 102, 103, 251, 252, 253, 503, 671, 1029}; for (size_t nIdx = 0; nIdx < nNumChanges; ++nIdx) { size_t nRow = nChangeRows[nIdx]; diff --git a/sc/qa/unit/uicalc/uicalc2.cxx b/sc/qa/unit/uicalc/uicalc2.cxx index b1ee2a0c9856..8a23aa88dd2e 100644 --- a/sc/qa/unit/uicalc/uicalc2.cxx +++ b/sc/qa/unit/uicalc/uicalc2.cxx @@ -340,7 +340,7 @@ CPPUNIT_TEST_FIXTURE(ScUiCalcTest2, testTdf124816) // The actual result is completely unrelated to this test and behaviour of // OFFSET() was changed as of tdf#85551 and here result of that test // document is now Err:502 instead of 0. - constexpr OUString aExpectedResult(u"Err:502"_ustr); + static constexpr OUString aExpectedResult(u"Err:502"_ustr); lcl_AssertCurrentCursorPosition(*pDocSh, u"D10"); CPPUNIT_ASSERT_EQUAL(aExpectedResult, pDoc->GetString(ScAddress(3, 9, 0))); diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx index 6400e082a567..b7b6e1e239aa 100644 --- a/sc/source/core/tool/compiler.cxx +++ b/sc/source/core/tool/compiler.cxx @@ -3268,7 +3268,7 @@ bool ScCompiler::ParsePredetectedReference( const OUString& rName ) // It could also be a broken invalidated reference that contains #REF! // (but is not equal to), which we wrote prior to ODFF and also to ODFF // between 2013 and 2016 until 5.1.4 - constexpr OUString aErrRef(u"#REF!"_ustr); // not localized in ODFF + static constexpr OUString aErrRef(u"#REF!"_ustr); // not localized in ODFF sal_Int32 nPos = rName.indexOf( aErrRef); if (nPos != -1) { diff --git a/sc/source/ui/dbgui/scuiasciiopt.cxx b/sc/source/ui/dbgui/scuiasciiopt.cxx index 2789d33096c8..37a81c077053 100644 --- a/sc/source/ui/dbgui/scuiasciiopt.cxx +++ b/sc/source/ui/dbgui/scuiasciiopt.cxx @@ -698,7 +698,7 @@ void ScImportAsciiDlg::SetSeparators( sal_Unicode cSep ) { // Exclusively set a separator, maFieldSeparators needs not be // modified, it's obtained by GetSeparators() after this call. - constexpr sal_Unicode aSeps[] = { '\t', ';', ',', ' ' }; + static constexpr sal_Unicode aSeps[] = { '\t', ';', ',', ' ' }; for (const sal_Unicode c : aSeps) { const bool bSet = (c == cSep); diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx index cd6926739594..5bb6fb343ca4 100644 --- a/sc/source/ui/docshell/impex.cxx +++ b/sc/source/ui/docshell/impex.cxx @@ -580,7 +580,7 @@ static QuoteType lcl_isFieldEndQuote( const sal_Unicode* p, const sal_Unicode* p // to be checked. if (!rcDetectSep) { - constexpr sal_Unicode vSep[] = { ',', '\t', ';' }; + static constexpr sal_Unicode vSep[] = { ',', '\t', ';' }; for (const sal_Unicode c : vSep) { if (p[1] == c) diff --git a/sd/qa/unit/export-tests-ooxml1.cxx b/sd/qa/unit/export-tests-ooxml1.cxx index d497887dafa0..46a26a2134d5 100644 --- a/sd/qa/unit/export-tests-ooxml1.cxx +++ b/sd/qa/unit/export-tests-ooxml1.cxx @@ -1610,7 +1610,7 @@ CPPUNIT_TEST_FIXTURE(SdOOXMLExportTest1, testTdf140865Wordart3D) xmlDocUniquePtr pXmlDoc = parseExport(u"ppt/slides/slide1.xml"_ustr); // without the fix in place a:sp3d was lost on round trip, and so extrusion was lost. - constexpr OString sPathStart("//p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr"_ostr); + static constexpr OString sPathStart("//p:sld/p:cSld/p:spTree/p:sp/p:txBody/a:bodyPr"_ostr); assertXPath(pXmlDoc, sPathStart + "/a:sp3d", "extrusionH", u"342900"); assertXPath(pXmlDoc, sPathStart + "/a:sp3d", "contourW", u"12700"); assertXPath(pXmlDoc, sPathStart + "/a:sp3d/a:bevelT", "w", u"114300"); diff --git a/sd/qa/unit/export-tests.cxx b/sd/qa/unit/export-tests.cxx index 01605bcedc88..b20064eb1006 100644 --- a/sd/qa/unit/export-tests.cxx +++ b/sd/qa/unit/export-tests.cxx @@ -784,7 +784,8 @@ CPPUNIT_TEST_FIXTURE(SdExportTest, testLinkedGraphicRT) // Check if the graphic has been imported correctly (before doing the export/import run) { - constexpr OString sFailedImportMessage = "Failed to correctly import the document"_ostr; + static constexpr OString sFailedImportMessage + = "Failed to correctly import the document"_ostr; SdXImpressDocument* pXImpressDocument = dynamic_cast<SdXImpressDocument*>(mxComponent.get()); CPPUNIT_ASSERT(pXImpressDocument); diff --git a/sd/qa/unit/layout-tests.cxx b/sd/qa/unit/layout-tests.cxx index 8e3e19cdb3a2..9461068480e2 100644 --- a/sd/qa/unit/layout-tests.cxx +++ b/sd/qa/unit/layout-tests.cxx @@ -382,7 +382,7 @@ CPPUNIT_TEST_FIXTURE(SdLayoutTest, testTdf152906_AdjustToContour) { // Test that the text adjusts to contour properly - constexpr OUString sText + static constexpr OUString sText = u"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibulum consequat mi quis " "pretium semper. Proin luctus orci ac neque venenatis, quis commodo dolor posuere. " "Curabitur dignissim sapien quis cursus egestas. Donec blandit auctor arcu, nec " diff --git a/sdext/source/pdfimport/wrapper/wrapper.cxx b/sdext/source/pdfimport/wrapper/wrapper.cxx index ae9c9b3bf307..547ab148f954 100644 --- a/sdext/source/pdfimport/wrapper/wrapper.cxx +++ b/sdext/source/pdfimport/wrapper/wrapper.cxx @@ -1085,7 +1085,7 @@ bool xpdf_ImportFromFile(const OUString& rURL, // spawn separate process to keep LGPL/GPL code apart. - constexpr OUString aOptFlag(u"-o"_ustr); + static constexpr OUString aOptFlag(u"-o"_ustr); std::vector<rtl_uString*> args({ aSysUPath.pData }); if (!rFilterOptions.isEmpty()) { diff --git a/sfx2/source/control/dispatch.cxx b/sfx2/source/control/dispatch.cxx index ec73bf047279..4d8008abf9c4 100644 --- a/sfx2/source/control/dispatch.cxx +++ b/sfx2/source/control/dispatch.cxx @@ -1524,7 +1524,7 @@ SfxSlotFilterState SfxDispatcher::IsSlotEnabledByFilter_Impl( sal_uInt16 nSID ) } bool SfxDispatcher::IsCommandAllowedInLokReadOnlyViewMode (OUString commandName) { - constexpr OUString allowedList[] = { + static constexpr OUString allowedList[] = { u".uno:InsertAnnotation"_ustr, u".uno:ReplyComment"_ustr, u".uno:ResolveComment"_ustr, diff --git a/sfx2/source/dialog/StyleList.cxx b/sfx2/source/dialog/StyleList.cxx index b5970461bd6a..f534379e53dd 100644 --- a/sfx2/source/dialog/StyleList.cxx +++ b/sfx2/source/dialog/StyleList.cxx @@ -99,9 +99,9 @@ namespace { Color ColorHash(std::u16string_view rString) { - constexpr auto aSaturationArray = std::to_array<sal_uInt16>({ 90, 75, 60 }); - constexpr auto aBrightnessArray = std::to_array<sal_uInt16>({ 100, 80, 60 }); - constexpr auto aTintOrShadeArray + static constexpr auto aSaturationArray = std::to_array<sal_uInt16>({ 90, 75, 60 }); + static constexpr auto aBrightnessArray = std::to_array<sal_uInt16>({ 100, 80, 60 }); + static constexpr auto aTintOrShadeArray = std::to_array<sal_Int16>({ 1'500, 3'000, 4'500, 6'500, 7'500 }); sal_uInt32 nStringHash = rtl_ustr_hashCode_WithLength(rString.data(), rString.length()); diff --git a/solenv/CompilerTest_compilerplugins_clang.mk b/solenv/CompilerTest_compilerplugins_clang.mk index 95044e47758c..f365f0050154 100644 --- a/solenv/CompilerTest_compilerplugins_clang.mk +++ b/solenv/CompilerTest_compilerplugins_clang.mk @@ -80,6 +80,7 @@ $(eval $(call gb_CompilerTest_add_exception_objects,compilerplugins_clang, \ compilerplugins/clang/test/simplifydynamiccast \ compilerplugins/clang/test/simplifypointertobool \ compilerplugins/clang/test/singlevalfields \ + compilerplugins/clang/test/staticconstexpr \ compilerplugins/clang/test/staticconstfield \ compilerplugins/clang/test/staticdynamic \ compilerplugins/clang/test/staticmethods \ diff --git a/svl/qa/unit/svl.cxx b/svl/qa/unit/svl.cxx index a27651c808e0..1b90ee5c8b88 100644 --- a/svl/qa/unit/svl.cxx +++ b/svl/qa/unit/svl.cxx @@ -1379,7 +1379,7 @@ void Test::testUserDefinedNumberFormats() OUString sCode, sExpected; SvNumberFormatter aFormatter(m_xContext, eLang); // tdf#158890 replace '?' with figure blank (0x2007) - constexpr OUString sBlankDigit = u" "_ustr; + static constexpr OUString sBlankDigit = u" "_ustr; { // tdf#97835: suppress decimal separator sCode = "0.##\" m\""; sExpected = "12 m"; diff --git a/svl/qa/unit/test_lngmisc.cxx b/svl/qa/unit/test_lngmisc.cxx index 7330db00b5ef..5af4d3b6ac84 100644 --- a/svl/qa/unit/test_lngmisc.cxx +++ b/svl/qa/unit/test_lngmisc.cxx @@ -134,7 +134,7 @@ void LngMiscTest::testReplaceControlChars() void LngMiscTest::testGetThesaurusReplaceText() { - constexpr OUString str2(u"asdf"_ustr); + static constexpr OUString str2(u"asdf"_ustr); OUString r = linguistic::GetThesaurusReplaceText(u""_ustr); CPPUNIT_ASSERT(r.isEmpty()); diff --git a/svx/qa/unit/gallery/test_gallery.cxx b/svx/qa/unit/gallery/test_gallery.cxx index 79f0d85c08e8..a8309778a8f8 100644 --- a/svx/qa/unit/gallery/test_gallery.cxx +++ b/svx/qa/unit/gallery/test_gallery.cxx @@ -166,7 +166,7 @@ void GalleryObjTest::TestThemeURLCase() CPPUNIT_ASSERT_MESSAGE("Could not create gallery instance", (pGallery != nullptr)); // Mixed Case Theme Name - constexpr OUString myThemeName = u"AddyTestTheme"_ustr; + static constexpr OUString myThemeName = u"AddyTestTheme"_ustr; CPPUNIT_ASSERT_MESSAGE("Could not create theme", pGallery->CreateTheme(myThemeName)); CPPUNIT_ASSERT_MESSAGE("Could not find theme", pGallery->HasTheme(myThemeName)); @@ -243,7 +243,7 @@ void GalleryObjTest::TestGalleryThemeEntry() std::unique_ptr<Gallery> pGallery(new Gallery(aGalleryURL)); CPPUNIT_ASSERT_MESSAGE("Could not create gallery instance", (pGallery != nullptr)); - constexpr OUString myThemeName = u"addytesttheme"_ustr; + static constexpr OUString myThemeName = u"addytesttheme"_ustr; CPPUNIT_ASSERT_MESSAGE("Could not create theme", pGallery->CreateTheme(myThemeName)); CPPUNIT_ASSERT_MESSAGE("Could not find theme", pGallery->HasTheme(myThemeName)); @@ -463,7 +463,7 @@ void GalleryObjTest::TestGetThemeNameFromGalleryTheme() std::unique_ptr<Gallery> pGallery(new Gallery(aGalleryURL)); CPPUNIT_ASSERT_MESSAGE("Could not create gallery instance", (pGallery != nullptr)); - constexpr OUString myThemeName = u"addytesttheme"_ustr; + static constexpr OUString myThemeName = u"addytesttheme"_ustr; CPPUNIT_ASSERT_MESSAGE("Could not create theme", pGallery->CreateTheme(myThemeName)); CPPUNIT_ASSERT_MESSAGE("Could not find theme", pGallery->HasTheme(myThemeName)); diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx index 4380fbc2fe6c..a11ab9a9d041 100644 --- a/svx/source/tbxctrls/tbcontrl.cxx +++ b/svx/source/tbxctrls/tbcontrl.cxx @@ -4138,7 +4138,7 @@ void SvxCurrencyToolBoxControl::GetCurrencySymbols(std::vector<OUString>& rList, { rCurrencyList.clear(); - constexpr OUString aTwoSpace = u" "_ustr; + static constexpr OUString aTwoSpace = u" "_ustr; const NfCurrencyTable& rCurrencyTable = SvNumberFormatter::GetTheCurrencyTable(); sal_uInt16 nCount = rCurrencyTable.size(); diff --git a/sw/qa/core/test_ToxWhitespaceStripper.cxx b/sw/qa/core/test_ToxWhitespaceStripper.cxx index 9edef692cc9c..4d9881f25bf2 100644 --- a/sw/qa/core/test_ToxWhitespaceStripper.cxx +++ b/sw/qa/core/test_ToxWhitespaceStripper.cxx @@ -113,7 +113,7 @@ void ToxWhitespaceStripperTest::StrippingWhitespacesFromVariousStringsWorks() void ToxWhitespaceStripperTest::PositionAfterStringCanBeRequested() { - OUString constexpr test(u"abc"_ustr); + static OUString constexpr test(u"abc"_ustr); ToxWhitespaceStripper sut(test); sal_Int32 expected = test.getLength(); CPPUNIT_ASSERT_EQUAL(expected, sut.GetPositionInStrippedString(test.getLength())); diff --git a/sw/qa/extras/htmlexport/htmlexport.cxx b/sw/qa/extras/htmlexport/htmlexport.cxx index b1f11a2c4bca..7a6b4b15542c 100644 --- a/sw/qa/extras/htmlexport/htmlexport.cxx +++ b/sw/qa/extras/htmlexport/htmlexport.cxx @@ -1135,7 +1135,7 @@ CPPUNIT_TEST_FIXTURE(HtmlExportTest, testTdf126879) { createSwDoc("tdf126879.odt"); save(mpFilter); - constexpr OString aExpected("<!DOCTYPE html>"_ostr); + static constexpr OString aExpected("<!DOCTYPE html>"_ostr); SvStream* pStream = maTempFile.GetStream(StreamMode::READ); CPPUNIT_ASSERT(pStream); const OString aActual(read_uInt8s_ToOString(*pStream, aExpected.getLength())); @@ -2749,7 +2749,7 @@ CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testHTML_PreserveSpaces) // Given a document with leading, trailing, and repeating intermediate spaces: createSwDoc(); SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell(); - constexpr OUString paraText = u"\t test \t more text \t"_ustr; + static constexpr OUString paraText = u"\t test \t more text \t"_ustr; pWrtShell->Insert(paraText); // When exporting to plain HTML, using PreserveSpaces: @@ -2778,7 +2778,7 @@ CPPUNIT_TEST_FIXTURE(SwHtmlDomExportTest, testReqIF_PreserveSpaces) // Given a document with leading, trailing, and repeating intermediate spaces: createSwDoc(); SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell(); - constexpr OUString paraText = u"\t test \t more text \t"_ustr; + static constexpr OUString paraText = u"\t test \t more text \t"_ustr; pWrtShell->Insert(paraText); // When exporting to ReqIF, using PreserveSpaces: diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx index 09d4707a68ba..d6e4c323ba58 100644 --- a/sw/qa/extras/odfexport/odfexport.cxx +++ b/sw/qa/extras/odfexport/odfexport.cxx @@ -1198,7 +1198,7 @@ DECLARE_ODFEXPORT_TEST(testCharacterBorder, "charborder.odt") CPPUNIT_TEST_FIXTURE(Test, testProtectionKey) { auto verify = [this]() { - OUString constexpr password(u"1012345678901234567890123456789012345678901234567890"_ustr); + static OUString constexpr password(u"1012345678901234567890123456789012345678901234567890"_ustr); // check 1 invalid OOo legacy password and 3 valid ODF 1.2 passwords uno::Reference<text::XTextSectionsSupplier> xTextSectionsSupplier(mxComponent, uno::UNO_QUERY); diff --git a/sw/qa/extras/odfexport/odfexport2.cxx b/sw/qa/extras/odfexport/odfexport2.cxx index d0353009a224..a8cea9a6bbfb 100644 --- a/sw/qa/extras/odfexport/odfexport2.cxx +++ b/sw/qa/extras/odfexport/odfexport2.cxx @@ -1676,7 +1676,7 @@ CPPUNIT_TEST_FIXTURE(Test, testTableInFrameAnchoredToPage) const OUString styleName = getXPath(pXmlDoc, path, attr); return "//office:automatic-styles/style:style[@style:name='" + styleName.toUtf8() + "']"; }; - constexpr OString xPathTextBox = "//office:body/office:text/draw:frame/draw:text-box"_ostr; + static constexpr OString xPathTextBox = "//office:body/office:text/draw:frame/draw:text-box"_ostr; // Check also, that autostyles defined inside that frame are stored correctly. If not, then // these paragraphs would refer to styles in <office::styles>, not in <office:automatic-styles>, diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport20.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport20.cxx index bfb777448fc3..c418c1904197 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport20.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport20.cxx @@ -1133,7 +1133,8 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf159110) // Given a text with an URL with multiple spaces loadAndReload("multi_space_url.fodt"); - constexpr OUString sExpectedURL = u"http://www.example.org/path%20%20with%20%20spaces"_ustr; + static constexpr OUString sExpectedURL + = u"http://www.example.org/path%20%20with%20%20spaces"_ustr; // Without the fix, this would have failed with // - Expected: http://www.example.org/path%20%20with%20%20spaces diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx index 4af3730aa9a2..bf12d0178b62 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport9.cxx @@ -1387,7 +1387,7 @@ DECLARE_OOXMLEXPORT_TEST(testActiveXOptionButtonGroup, "activex_option_button_gr { // Optionbutton groups were not handled // The two optionbutton should have the same group name - constexpr OUString sGroupName = u"GroupX"_ustr; + static constexpr OUString sGroupName = u"GroupX"_ustr; uno::Reference<drawing::XControlShape> xControlShape(getShape(1), uno::UNO_QUERY); CPPUNIT_ASSERT(xControlShape.is()); diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport2.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport2.cxx index a8329de27e82..9e5daa6dab96 100644 --- a/sw/qa/extras/ooxmlimport/ooxmlimport2.cxx +++ b/sw/qa/extras/ooxmlimport/ooxmlimport2.cxx @@ -1121,7 +1121,7 @@ CPPUNIT_TEST_FIXTURE(Test, testTdf154319) // tdf#154360: check tab stops between the number and the entry text // The last (10th) level does not correspond to any MS level (only 9 levels there) - constexpr sal_Int32 levelTabStops[] + static constexpr sal_Int32 levelTabStops[] = { 776, 1552, 2328, 3104, 3881, 4657, 5433, 6209, 6985, -1 }; //start with level 1, 0 is the header level diff --git a/sw/qa/extras/uiwriter/uiwriter3.cxx b/sw/qa/extras/uiwriter/uiwriter3.cxx index b43030a41d71..a030ad9c10f8 100644 --- a/sw/qa/extras/uiwriter/uiwriter3.cxx +++ b/sw/qa/extras/uiwriter/uiwriter3.cxx @@ -1651,7 +1651,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testToxmarkLinks) // click on the links... { - OUString constexpr tmp(u"Table of Contents"_ustr); + static OUString constexpr tmp(u"Table of Contents"_ustr); pWrtShell->GotoNextTOXBase(&tmp); } @@ -1686,7 +1686,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testToxmarkLinks) } { - OUString constexpr tmp(u"User-Defined1"_ustr); + static OUString constexpr tmp(u"User-Defined1"_ustr); pWrtShell->GotoNextTOXBase(&tmp); } @@ -1738,7 +1738,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest3, testToxmarkLinks) } { - OUString constexpr tmp(u"NewUD!|1"_ustr); + static OUString constexpr tmp(u"NewUD!|1"_ustr); pWrtShell->GotoNextTOXBase(&tmp); } diff --git a/sw/qa/extras/uiwriter/uiwriter4.cxx b/sw/qa/extras/uiwriter/uiwriter4.cxx index a59491bf7491..7df258900c9f 100644 --- a/sw/qa/extras/uiwriter/uiwriter4.cxx +++ b/sw/qa/extras/uiwriter/uiwriter4.cxx @@ -653,7 +653,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest4, testBookmarkCollapsed) // load only content.xml from the resaved document xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr); - constexpr const char* aPath("/office:document-content/office:body/office:text/text:p"); + const char* const aPath("/office:document-content/office:body/office:text/text:p"); const int pos1 = getXPathPosition(pXmlDoc, aPath, "bookmark"); CPPUNIT_ASSERT_EQUAL(0, pos1); // found, and it is first @@ -824,7 +824,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest4, testRemoveBookmarkTextAndAddNew) // load only content.xml from the resaved document xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr); - constexpr const char* aPath("/office:document-content/office:body/office:text/text:p"); + const char* const aPath("/office:document-content/office:body/office:text/text:p"); CPPUNIT_ASSERT_ASSERTION_FAIL(getXPathPosition(pXmlDoc, aPath, "bookmark")); // not found const int pos2 = getXPathPosition(pXmlDoc, aPath, "bookmark-start"); @@ -887,7 +887,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest4, testRemoveBookmarkTextAndAddNewAfterReload // load only content.xml from the resaved document xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr); - constexpr const char* aPath("/office:document-content/office:body/office:text/text:p"); + const char* const aPath("/office:document-content/office:body/office:text/text:p"); const int pos1 = getXPathPosition(pXmlDoc, aPath, "bookmark"); const int pos2 = getXPathPosition(pXmlDoc, aPath, "text"); @@ -1300,7 +1300,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest4, testRedlineViewAuthor) SwWrtShell* pWrtShell = pDocShell->GetWrtShell(); pWrtShell->Insert(u"middle"_ustr); SwView* pView = pDocShell->GetView(); - constexpr OUString aAuthor(u"A U. Thor"_ustr); + static constexpr OUString aAuthor(u"A U. Thor"_ustr); pView->SetRedlineAuthor(aAuthor); pDocShell->SetView(pView); @@ -2203,7 +2203,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest4, testCreateDocxAnnotation) createSwDoc(); // insert an annotation with a text - constexpr OUString aSomeText(u"some text"_ustr); + static constexpr OUString aSomeText(u"some text"_ustr); uno::Sequence<beans::PropertyValue> aPropertyValues = comphelper::InitPropertySequence({ { "Text", uno::Any(aSomeText) }, { "Author", uno::Any(u"me"_ustr) }, diff --git a/sw/qa/extras/uiwriter/uiwriter6.cxx b/sw/qa/extras/uiwriter/uiwriter6.cxx index fd09758324d7..7d5bc22b8fa6 100644 --- a/sw/qa/extras/uiwriter/uiwriter6.cxx +++ b/sw/qa/extras/uiwriter/uiwriter6.cxx @@ -900,7 +900,7 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest6, testTdf113481) CPPUNIT_TEST_FIXTURE(SwUiWriterTest6, testTdf115013) { - constexpr OUString sColumnName(u"Name with spaces, \"quotes\" and \\backslashes"_ustr); + static constexpr OUString sColumnName(u"Name with spaces, \"quotes\" and \\backslashes"_ustr); utl::TempFileNamed aTempDir(nullptr, true); aTempDir.EnableKillingFile(); diff --git a/sw/qa/extras/uiwriter/uiwriter7.cxx b/sw/qa/extras/uiwriter/uiwriter7.cxx index 964ccc0b4482..fdd09d358fa1 100644 --- a/sw/qa/extras/uiwriter/uiwriter7.cxx +++ b/sw/qa/extras/uiwriter/uiwriter7.cxx @@ -2392,8 +2392,8 @@ CPPUNIT_TEST_FIXTURE(SwUiWriterTest7, testUnicodeNotationToggle) sDocString = pWrtShell->GetCursor()->GetPointNode().GetTextNode()->GetText(); CPPUNIT_ASSERT_EQUAL(sOriginalDocString, sDocString); - constexpr OUString sWithCombiningSMPName = u"xyzU+4faeU+e0101"_ustr; - constexpr OUString sWithCombiningSMP = u"xyz\U00004fae\U000e0101"_ustr; + static constexpr OUString sWithCombiningSMPName = u"xyzU+4faeU+e0101"_ustr; + static constexpr OUString sWithCombiningSMP = u"xyz\U00004fae\U000e0101"_ustr; pWrtShell->SplitNode(); pWrtShell->Insert2(sWithCombiningSMPName); dispatchCommand(mxComponent, u".uno:UnicodeNotationToggle"_ustr, aPropertyValues); diff --git a/sw/source/core/doc/DocumentContentOperationsManager.cxx b/sw/source/core/doc/DocumentContentOperationsManager.cxx index 91e2fb05bc91..aae03e30cec9 100644 --- a/sw/source/core/doc/DocumentContentOperationsManager.cxx +++ b/sw/source/core/doc/DocumentContentOperationsManager.cxx @@ -4245,7 +4245,7 @@ std::shared_ptr<SfxItemSet> DocumentContentOperationsManager::lcl_createDelSet(S RES_UNKNOWNATR_BEGIN, RES_UNKNOWNATR_END - 1>(rDoc.GetAttrPool())); o3tl::sorted_vector<sal_uInt16> aAttribs; - constexpr std::pair<sal_uInt16, sal_uInt16> aResetableSetRange[] = { + static constexpr std::pair<sal_uInt16, sal_uInt16> aResetableSetRange[] = { // tdf#40496: we don't want to change writing direction, so exclude RES_FRAMEDIR: { RES_TXTATR_CHARFMT,RES_TXTATR_CHARFMT }, { RES_FRMATR_BEGIN, RES_FRAMEDIR - 1 }, diff --git a/sw/source/core/doc/DocumentRedlineManager.cxx b/sw/source/core/doc/DocumentRedlineManager.cxx index 34d9067a7201..642bf2c5a25b 100644 --- a/sw/source/core/doc/DocumentRedlineManager.cxx +++ b/sw/source/core/doc/DocumentRedlineManager.cxx @@ -969,7 +969,7 @@ namespace SwPaM aPam( *pTNd, pTNd->GetText().getLength() ); o3tl::sorted_vector<sal_uInt16> aResetAttrsArray; - constexpr std::pair<sal_uInt16, sal_uInt16> aResetableSetRange[] = { + static constexpr std::pair<sal_uInt16, sal_uInt16> aResetableSetRange[] = { { RES_PARATR_BEGIN, RES_PARATR_END - 1 }, { RES_PARATR_LIST_BEGIN, RES_FRMATR_END - 1 }, }; diff --git a/sw/source/filter/html/css1atr.cxx b/sw/source/filter/html/css1atr.cxx index 447e63351bd3..20a47b5a842c 100644 --- a/sw/source/filter/html/css1atr.cxx +++ b/sw/source/filter/html/css1atr.cxx @@ -3298,7 +3298,7 @@ SwHTMLWriter& OutCSS1_SvxBox( SwHTMLWriter& rWrt, const SfxPoolItem& rHt ) if( rHt.Which() == RES_CHRATR_BOX ) { - constexpr std::string_view inline_block("inline-block"); + static constexpr std::string_view inline_block("inline-block"); if( rWrt.m_bTagOn ) { // Inline-block to make the line height changing correspond to the character border diff --git a/sw/source/filter/ww8/docxexport.cxx b/sw/source/filter/ww8/docxexport.cxx index f14bc8b603d6..438743ab0b0f 100644 --- a/sw/source/filter/ww8/docxexport.cxx +++ b/sw/source/filter/ww8/docxexport.cxx @@ -971,7 +971,7 @@ void DocxExport::WriteDocVars(const sax_fastparser::FSHelperPtr& pFS) // Only write docVars if there will be at least a single docVar. bool bStarted = false; - constexpr OUString aPrefix(u"com.sun.star.text.fieldmaster.User."_ustr); + static constexpr OUString aPrefix(u"com.sun.star.text.fieldmaster.User."_ustr); for (const auto& rMasterName : aMasterNames) { if (!rMasterName.startsWith(aPrefix)) diff --git a/sw/source/filter/ww8/rtfexport.cxx b/sw/source/filter/ww8/rtfexport.cxx index ffd36410f4b6..b8c78f828375 100644 --- a/sw/source/filter/ww8/rtfexport.cxx +++ b/sw/source/filter/ww8/rtfexport.cxx @@ -706,7 +706,7 @@ void RtfExport::WriteDocVars() } // Only write docVars if there will be at least a single docVar. - constexpr OUString aPrefix(u"com.sun.star.text.fieldmaster.User."_ustr); + static constexpr OUString aPrefix(u"com.sun.star.text.fieldmaster.User."_ustr); for (const auto& rMasterName : aMasterNames) { if (!rMasterName.startsWith(aPrefix)) diff --git a/sw/source/filter/ww8/ww8par2.cxx b/sw/source/filter/ww8/ww8par2.cxx index 5317eb775023..845a2e7da5ab 100644 --- a/sw/source/filter/ww8/ww8par2.cxx +++ b/sw/source/filter/ww8/ww8par2.cxx @@ -729,7 +729,7 @@ SwNumRule* SwWW8ImplReader::GetStyRule() if( m_xStyles->mpStyRule ) // Bullet-Style already present return m_xStyles->mpStyRule; - constexpr OUString aBaseName(u"WW8StyleNum"_ustr); + static constexpr OUString aBaseName(u"WW8StyleNum"_ustr); const OUString aName( m_rDoc.GetUniqueNumRuleName( &aBaseName, false) ); // #i86652# @@ -811,7 +811,7 @@ void SwWW8ImplReader::Read_ANLevelDesc( sal_uInt16, const sal_uInt8* pData, shor // If NumRuleItems were set, either directly or through inheritance, disable them now m_pCurrentColl->SetFormatAttr( SwNumRuleItem() ); - constexpr OUString aName(u"Outline"_ustr); + static constexpr OUString aName(u"Outline"_ustr); SwNumRule aNR( m_rDoc.GetUniqueNumRuleName( &aName ), SvxNumberFormat::LABEL_WIDTH_AND_POSITION, OUTLINE_RULE ); diff --git a/sw/source/filter/ww8/ww8par3.cxx b/sw/source/filter/ww8/ww8par3.cxx index 41604594f92e..f5ee3a1dc5fa 100644 --- a/sw/source/filter/ww8/ww8par3.cxx +++ b/sw/source/filter/ww8/ww8par3.cxx @@ -2272,7 +2272,7 @@ awt::Size SwWW8ImplReader::MiserableDropDownFormHack(const OUString &rString, sal_uInt16 nWhichId; OUString pPropNm; }; - constexpr CtrlFontMapEntry aMapTable[] = + static constexpr CtrlFontMapEntry aMapTable[] = { { RES_CHRATR_COLOR, u"TextColor"_ustr }, { RES_CHRATR_FONT, u"FontName"_ustr }, diff --git a/sw/source/uibase/dbui/dbui.cxx b/sw/source/uibase/dbui/dbui.cxx index fcac31282acb..0045a55dee65 100644 --- a/sw/source/uibase/dbui/dbui.cxx +++ b/sw/source/uibase/dbui/dbui.cxx @@ -62,8 +62,8 @@ CreateMonitor::~CreateMonitor() void CreateMonitor::UpdateCountingText() { - constexpr OUStringLiteral sVariable_Total(u"%Y"); - constexpr OUStringLiteral sVariable_Position(u"%X"); + static constexpr OUStringLiteral sVariable_Total(u"%Y"); + static constexpr OUStringLiteral sVariable_Position(u"%X"); OUString sText(m_sCountingPattern); sText = sText.replaceAll( sVariable_Total, OUString::number( m_nTotalCount ) ); diff --git a/sw/source/uibase/shells/textsh1.cxx b/sw/source/uibase/shells/textsh1.cxx index 1cb57d0a59cf..c770415f4a28 100644 --- a/sw/source/uibase/shells/textsh1.cxx +++ b/sw/source/uibase/shells/textsh1.cxx @@ -1155,7 +1155,7 @@ void SwTextShell::Execute(SfxRequest &rReq) // remove the languages from that) o3tl::sorted_vector<sal_uInt16> aAttribs; - constexpr std::pair<sal_uInt16, sal_uInt16> aResetableSetRange[] = { + static constexpr std::pair<sal_uInt16, sal_uInt16> aResetableSetRange[] = { // tdf#40496: we don't want to change writing direction, so exclude RES_FRAMEDIR: { RES_FRMATR_BEGIN, RES_FRAMEDIR - 1 }, { RES_FRAMEDIR + 1, RES_FRMATR_END - 1 }, diff --git a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx index 4503f6ef5273..e1b225ed92dc 100644 --- a/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx +++ b/sw/source/writerfilter/dmapper/DomainMapper_Impl.cxx @@ -3512,7 +3512,7 @@ void DomainMapper_Impl::appendOLE( const OUString& rStreamName, const std::share xOLE->setPropertyValue(u"LeftBorder"_ustr, uno::Any(aBorderProps)); xOLE->setPropertyValue(u"BottomBorder"_ustr, uno::Any(aBorderProps)); } - constexpr OUString pProperties[] = { + static constexpr OUString pProperties[] = { u"AnchorType"_ustr, u"Surround"_ustr, u"SurroundContour"_ustr, @@ -5351,7 +5351,7 @@ static sal_Int16 lcl_ParseNumberingType( std::u16string_view rCommand ) // The command looks like: " PAGE \* Arabic " // tdf#132185: but may as well be "PAGE \* Arabic" OUString sNumber; - constexpr OUString rSeparator(u"\\* "_ustr); + static constexpr OUString rSeparator(u"\\* "_ustr); if (size_t nStartIndex = rCommand.find(rSeparator); nStartIndex != std::u16string_view::npos) { sal_Int32 nStartIndex2 = nStartIndex + rSeparator.getLength(); diff --git a/tools/qa/cppunit/test_rectangle.cxx b/tools/qa/cppunit/test_rectangle.cxx index 12e46910bc2f..1d19774460c8 100644 --- a/tools/qa/cppunit/test_rectangle.cxx +++ b/tools/qa/cppunit/test_rectangle.cxx @@ -60,7 +60,7 @@ void RectangleTest::testConstruction() CPPUNIT_ASSERT_EQUAL(tools::Long(0), aRect3.getOpenWidth()); } { - constexpr tools::Rectangle aRect(Point(), Size(-1, -2)); + static constexpr tools::Rectangle aRect(Point(), Size(-1, -2)); static_assert(!aRect.IsEmpty()); static_assert(aRect.Right() == 0); static_assert(aRect.Bottom() == -1); @@ -69,17 +69,17 @@ void RectangleTest::testConstruction() aRect2.SetSize(Size(-1, -2)); CPPUNIT_ASSERT_EQUAL(aRect, aRect2); - constexpr tools::Rectangle aRect3(Point(), Size(0, 0)); + static constexpr tools::Rectangle aRect3(Point(), Size(0, 0)); static_assert(aRect3.IsEmpty()); static_assert(aRect3.Right() == 0); static_assert(aRect3.Bottom() == 0); - constexpr tools::Rectangle aRect4(Point(), Size(1, 1)); + static constexpr tools::Rectangle aRect4(Point(), Size(1, 1)); static_assert(!aRect4.IsEmpty()); static_assert(aRect4.Right() == 0); static_assert(aRect4.Bottom() == 0); - constexpr tools::Rectangle aRect5(Point(), Size(-1, -1)); + static constexpr tools::Rectangle aRect5(Point(), Size(-1, -1)); static_assert(!aRect5.IsEmpty()); static_assert(aRect5.Right() == 0); static_assert(aRect5.Bottom() == 0); @@ -124,8 +124,8 @@ void RectangleTest::testOpenClosedSize() void RectangleTest::testUnitConvesion() { { - constexpr tools::Rectangle aRectTwip(100, 100, 100, 100); - constexpr tools::Rectangle aRectMm100( + static constexpr tools::Rectangle aRectTwip(100, 100, 100, 100); + static constexpr tools::Rectangle aRectMm100( o3tl::convert(aRectTwip, o3tl::Length::twip, o3tl::Length::mm100)); static_assert(!aRectMm100.IsEmpty()); // Make sure that we use coordinates for conversion, not width/height: @@ -136,8 +136,8 @@ void RectangleTest::testUnitConvesion() } { - constexpr tools::Rectangle aRectTwip(1, 1); - constexpr tools::Rectangle aRectMm100( + static constexpr tools::Rectangle aRectTwip(1, 1); + static constexpr tools::Rectangle aRectMm100( o3tl::convert(aRectTwip, o3tl::Length::twip, o3tl::Length::mm100)); // Make sure that result keeps the empty flag static_assert(aRectMm100.IsEmpty()); @@ -150,10 +150,10 @@ void RectangleTest::testUnitConvesion() void RectangleTest::testSetOperators() { - constexpr tools::Rectangle rect(Point(0, 0), Size(20, 20)); - constexpr tools::Rectangle inside(Point(10, 10), Size(10, 10)); - constexpr tools::Rectangle overlap(Point(10, 10), Size(20, 20)); - constexpr tools::Rectangle outside(Point(20, 20), Size(10, 10)); + static constexpr tools::Rectangle rect(Point(0, 0), Size(20, 20)); + static constexpr tools::Rectangle inside(Point(10, 10), Size(10, 10)); + static constexpr tools::Rectangle overlap(Point(10, 10), Size(20, 20)); + static constexpr tools::Rectangle outside(Point(20, 20), Size(10, 10)); CPPUNIT_ASSERT(rect.Contains(inside)); CPPUNIT_ASSERT(rect.Contains(rect)); CPPUNIT_ASSERT(!rect.Contains(overlap)); diff --git a/tools/qa/cppunit/test_stream.cxx b/tools/qa/cppunit/test_stream.cxx index edec9c0fb7b3..0125259d5bc7 100644 --- a/tools/qa/cppunit/test_stream.cxx +++ b/tools/qa/cppunit/test_stream.cxx @@ -313,7 +313,7 @@ namespace void Test::test_write_unicode() { - constexpr OUString write(u"abc"_ustr); + static constexpr OUString write(u"abc"_ustr); utl::TempFileNamed aTempFile(u"test_write_unicode"); aTempFile.EnableKillingFile(); { diff --git a/tools/source/generic/bigint.cxx b/tools/source/generic/bigint.cxx index 80b86af6013c..2c705e30c755 100644 --- a/tools/source/generic/bigint.cxx +++ b/tools/source/generic/bigint.cxx @@ -74,8 +74,8 @@ void BigInt::Normalize() if (nLen < 2) { - constexpr sal_uInt32 maxForPosInt32 = std::numeric_limits<sal_Int32>::max(); - constexpr sal_uInt32 maxForNegInt32 = -sal_Int64(std::numeric_limits<sal_Int32>::min()); + static constexpr sal_uInt32 maxForPosInt32 = std::numeric_limits<sal_Int32>::max(); + static constexpr sal_uInt32 maxForNegInt32 = -sal_Int64(std::numeric_limits<sal_Int32>::min()); sal_uInt32 nNum0 = nNum[0]; if (bIsNeg && nNum0 <= maxForNegInt32) { diff --git a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx index 72b2038b7d73..4bd91576bfec 100644 --- a/vcl/qa/cppunit/pdfexport/pdfexport2.cxx +++ b/vcl/qa/cppunit/pdfexport/pdfexport2.cxx @@ -4592,7 +4592,7 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testRexportMediaBoxOrigin) auto pInnerIm = aDocument.LookupObject(12); CPPUNIT_ASSERT(pInnerIm); - constexpr sal_Int32 aOrigin[2] = { -800, -600 }; + static constexpr sal_Int32 aOrigin[2] = { -800, -600 }; sal_Int32 aSize[2] = { 0, 0 }; auto pBBox = dynamic_cast<vcl::filter::PDFArrayElement*>(pInnerIm->Lookup("BBox"_ostr)); @@ -4692,11 +4692,11 @@ CPPUNIT_TEST_FIXTURE(PdfExportTest2, testTdf152246) CPPUNIT_ASSERT_EQUAL(size_t(1), aPages.size()); // Position array - constexpr double aPos[5][4] = { { 55.699, 706.701, 132.401, 722.499 }, - { 197.499, 706.701, 274.201, 722.499 }, - { 302.349, 679.101, 379.051, 694.899 }, - { 479.599, 679.101, 556.301, 694.899 }, - { 55.699, 651.501, 132.401, 667.299 } }; + static constexpr double aPos[5][4] = { { 55.699, 706.701, 132.401, 722.499 }, + { 197.499, 706.701, 274.201, 722.499 }, + { 302.349, 679.101, 379.051, 694.899 }, + { 479.599, 679.101, 556.301, 694.899 }, + { 55.699, 651.501, 132.401, 667.299 } }; // Get page annotations. auto pAnnots = dynamic_cast<vcl::filter::PDFArrayElement*>(aPages[0]->Lookup("Annots"_ostr)); diff --git a/vcl/skia/gdiimpl.cxx b/vcl/skia/gdiimpl.cxx index f6c7d21374bf..c97a1bebca5e 100644 --- a/vcl/skia/gdiimpl.cxx +++ b/vcl/skia/gdiimpl.cxx @@ -1521,7 +1521,7 @@ void SkiaSalGraphicsImpl::invert(basegfx::B2DPolygon const& rPoly, SalInvert eFl // by clipping. getDrawCanvas()->clipRect(aPath.getBounds(), SkClipOp::kIntersect, false); aPaint.setStrokeWidth(2); - constexpr float intervals[] = { 4.0f, 4.0f }; + static constexpr float intervals[] = { 4.0f, 4.0f }; aPaint.setStyle(SkPaint::kStroke_Style); aPaint.setPathEffect(SkDashPathEffect::Make(intervals, std::size(intervals), 0)); } diff --git a/vcl/skia/salbmp.cxx b/vcl/skia/salbmp.cxx index bba67fcbc439..d517d425eaf1 100644 --- a/vcl/skia/salbmp.cxx +++ b/vcl/skia/salbmp.cxx @@ -529,10 +529,10 @@ bool SkiaSalBitmap::ConvertToGreyscale() // values from Bitmap::ImplMakeGreyscales(). Do not use kGray_8_SkColorType, // Skia would use its gray conversion formula. // NOTE: The matrix is 4x5 organized as columns (i.e. each line is a column, not a row). - constexpr SkColorMatrix toGray(77 / 256.0, 151 / 256.0, 28 / 256.0, 0, 0, // R column - 77 / 256.0, 151 / 256.0, 28 / 256.0, 0, 0, // G column - 77 / 256.0, 151 / 256.0, 28 / 256.0, 0, 0, // B column - 0, 0, 0, 1, 0); // don't modify alpha + static constexpr SkColorMatrix toGray(77 / 256.0, 151 / 256.0, 28 / 256.0, 0, 0, // R column + 77 / 256.0, 151 / 256.0, 28 / 256.0, 0, 0, // G column + 77 / 256.0, 151 / 256.0, 28 / 256.0, 0, 0, // B column + 0, 0, 0, 1, 0); // don't modify alpha paint.setColorFilter(SkColorFilters::Matrix(toGray)); surface->getCanvas()->drawImage(mImage, 0, 0, SkSamplingOptions(), &paint); mBitCount = 8; @@ -987,10 +987,10 @@ const sk_sp<SkImage>& SkiaSalBitmap::GetAlphaSkImage(DirectImage direct) const // Move the R channel value to the alpha channel. This seems to be the only // way to reinterpret data in SkImage as an alpha SkImage without accessing the pixels. // NOTE: The matrix is 4x5 organized as columns (i.e. each line is a column, not a row). - constexpr SkColorMatrix redToAlpha(0, 0, 0, 0, 0, // R column - 0, 0, 0, 0, 0, // G column - 0, 0, 0, 0, 0, // B column - 1, 0, 0, 0, 0); // A column + static constexpr SkColorMatrix redToAlpha(0, 0, 0, 0, 0, // R column + 0, 0, 0, 0, 0, // G column + 0, 0, 0, 0, 0, // B column + 1, 0, 0, 0, 0); // A column SkPaint paint; paint.setColorFilter(SkColorFilters::Matrix(redToAlpha)); if (scaling) @@ -1046,10 +1046,10 @@ const sk_sp<SkImage>& SkiaSalBitmap::GetAlphaSkImage(DirectImage direct) const // Move the R channel value to the alpha channel. This seems to be the only // way to reinterpret data in SkImage as an alpha SkImage without accessing the pixels. // NOTE: The matrix is 4x5 organized as columns (i.e. each line is a column, not a row). - constexpr SkColorMatrix redToAlpha(0, 0, 0, 0, 0, // R column - 0, 0, 0, 0, 0, // G column - 0, 0, 0, 0, 0, // B column - 1, 0, 0, 0, 0); // A column + static constexpr SkColorMatrix redToAlpha(0, 0, 0, 0, 0, // R column + 0, 0, 0, 0, 0, // G column + 0, 0, 0, 0, 0, // B column + 1, 0, 0, 0, 0); // A column paint.setColorFilter(SkColorFilters::Matrix(redToAlpha)); surface->getCanvas()->drawImage(GetAsSkBitmap().asImage(), 0, 0, SkSamplingOptions(), &paint); diff --git a/vcl/source/app/svmain.cxx b/vcl/source/app/svmain.cxx index a8a2412aa810..9ef22da996e6 100644 --- a/vcl/source/app/svmain.cxx +++ b/vcl/source/app/svmain.cxx @@ -197,7 +197,7 @@ int ImplSVMain() #if !defined(_WIN32) && !defined(SYSTEM_OPENSSL) if (!bWasInitVCL) { - OUString constexpr name(u"SSL_CERT_FILE"_ustr); + static constexpr OUString name(u"SSL_CERT_FILE"_ustr); OUString temp; if (osl_getEnvironment(name.pData, &temp.pData) == osl_Process_E_NotFound) { diff --git a/writerperfect/qa/unit/EPUBExportTest.cxx b/writerperfect/qa/unit/EPUBExportTest.cxx index 8f85ce4a29bd..a9e08bdbed9a 100644 --- a/writerperfect/qa/unit/EPUBExportTest.cxx +++ b/writerperfect/qa/unit/EPUBExportTest.cxx @@ -166,7 +166,7 @@ CPPUNIT_TEST_FIXTURE(EPUBExportTest, testMimetype) uno::Reference<lang::XMultiServiceFactory> xMSF(m_xContext->getServiceManager(), uno::UNO_QUERY); - constexpr OUString aServiceName(u"com.sun.star.comp.Writer.EPUBExportFilter"_ustr); + static constexpr OUString aServiceName(u"com.sun.star.comp.Writer.EPUBExportFilter"_ustr); uno::Reference<document::XFilter> xFilter(xMSF->createInstance(aServiceName), uno::UNO_QUERY); // Should result in no errors. xFilter->cancel(); diff --git a/xmloff/qa/unit/draw.cxx b/xmloff/qa/unit/draw.cxx index 0d0db156b86b..198173350d73 100644 --- a/xmloff/qa/unit/draw.cxx +++ b/xmloff/qa/unit/draw.cxx @@ -836,7 +836,7 @@ CPPUNIT_TEST_FIXTURE(XmloffDrawTest, testTdf161327_LatheEndAngle) // get scene object uno::Reference<drawing::XShape> xSceneShape(getShape(0)); - constexpr OUString sExpected(u"com.sun.star.drawing.Shape3DSceneObject"_ustr); + static constexpr OUString sExpected(u"com.sun.star.drawing.Shape3DSceneObject"_ustr); CPPUNIT_ASSERT_EQUAL(sExpected, xSceneShape->getShapeType()); // Examine child objects diff --git a/xmlsecurity/qa/unit/signing/signing.cxx b/xmlsecurity/qa/unit/signing/signing.cxx index 11197a9bf6fa..8408ca421666 100644 --- a/xmlsecurity/qa/unit/signing/signing.cxx +++ b/xmlsecurity/qa/unit/signing/signing.cxx @@ -591,8 +591,8 @@ CPPUNIT_TEST_FIXTURE(SigningTest, testODFDoubleX509Certificate) CPPUNIT_TEST_FIXTURE(SigningTest, testDNCompatibility) { - OUString constexpr msDN(u"CN=\"\"\"ABC\"\".\", O=\"Enterprise \"\"ABC\"\"\""_ustr); - OUString constexpr nssDN(u"CN=\\\"ABC\\\".,O=Enterprise \\\"ABC\\\""_ustr); + static constexpr OUString msDN(u"CN=\"\"\"ABC\"\".\", O=\"Enterprise \"\"ABC\"\"\""_ustr); + static constexpr OUString nssDN(u"CN=\\\"ABC\\\".,O=Enterprise \\\"ABC\\\""_ustr); // this is just the status quo, possibly either NSS or CryptoAPI might change CPPUNIT_ASSERT(!xmlsecurity::EqualDistinguishedNames(msDN, nssDN, xmlsecurity::NOCOMPAT)); CPPUNIT_ASSERT(!xmlsecurity::EqualDistinguishedNames(nssDN, msDN, xmlsecurity::NOCOMPAT)); diff --git a/xmlsecurity/source/xmlsec/nss/sanextension_nssimpl.cxx b/xmlsecurity/source/xmlsec/nss/sanextension_nssimpl.cxx index 1395cb2e8acb..b01f021ba261 100644 --- a/xmlsecurity/source/xmlsec/nss/sanextension_nssimpl.cxx +++ b/xmlsecurity/source/xmlsec/nss/sanextension_nssimpl.cxx @@ -152,7 +152,7 @@ css::uno::Sequence< css::security::CertAltNameEntry > SAL_CALL SanExtensionImpl: OString SanExtensionImpl::removeOIDFromString( const OString &oidString) { OString objID; - constexpr std::string_view oid("OID."); + static constexpr std::string_view oid("OID."); if (oidString.match(oid)) objID = oidString.copy(oid.size()); else diff --git a/xmlsecurity/source/xmlsec/nss/x509certificate_nssimpl.cxx b/xmlsecurity/source/xmlsec/nss/x509certificate_nssimpl.cxx index c0fc6a4fc7c4..bed7772c5791 100644 --- a/xmlsecurity/source/xmlsec/nss/x509certificate_nssimpl.cxx +++ b/xmlsecurity/source/xmlsec/nss/x509certificate_nssimpl.cxx @@ -184,7 +184,7 @@ css::uno::Sequence< css::uno::Reference< css::security::XCertificateExtension > // remove "OID." prefix if existing OString objID; - constexpr std::string_view oid("OID."); + static constexpr std::string_view oid("OID."); if (oidString.match(oid)) objID = oidString.copy(oid.size()); else |