diff --git a/CODING_STYLE.md b/CODING_STYLE.md index 1d897a53f..674c2addd 100644 --- a/CODING_STYLE.md +++ b/CODING_STYLE.md @@ -81,7 +81,7 @@ tuple myNamespace::meanAndSigma(vector const& _v) - Copyright - License (e.g. see COPYING) 2. Never use `#ifdef`/`#define`/`#endif` file guards. Prefer `#pragma` once as first line below file comment. -3. Prefer static const variable to value macros. +3. Prefer static constexpr variables to value macros. 4. Prefer inline constexpr functions to function macros. 5. Split complex macro on multiple lines with `\`. diff --git a/libsolidity/analysis/DocStringTagParser.cpp b/libsolidity/analysis/DocStringTagParser.cpp index 52fb4aebe..137cdb409 100644 --- a/libsolidity/analysis/DocStringTagParser.cpp +++ b/libsolidity/analysis/DocStringTagParser.cpp @@ -34,6 +34,7 @@ #include #include +#include using namespace std; using namespace solidity; @@ -233,7 +234,7 @@ void DocStringTagParser::parseDocStrings( for (auto const& [tagName, tagValue]: _annotation.docTags) { - string static const customPrefix("custom:"); + string_view static constexpr customPrefix("custom:"); if (tagName == "custom" || tagName == "custom:") m_errorReporter.docstringParsingError( 6564_error, diff --git a/libyul/Utilities.cpp b/libyul/Utilities.cpp index 38fe379aa..8db0e44ff 100644 --- a/libyul/Utilities.cpp +++ b/libyul/Utilities.cpp @@ -42,7 +42,7 @@ string solidity::yul::reindent(string const& _code) { int constexpr indentationWidth = 4; - auto const static countBraces = [](string const& _s) noexcept -> int + auto constexpr static countBraces = [](string const& _s) noexcept -> int { auto const i = _s.find("//"); auto const e = i == _s.npos ? end(_s) : next(begin(_s), static_cast(i)); diff --git a/test/EVMHost.cpp b/test/EVMHost.cpp index 6d925f4d2..6c5cb6912 100644 --- a/test/EVMHost.cpp +++ b/test/EVMHost.cpp @@ -856,7 +856,7 @@ void EVMHostPrinter::selfdestructRecords() void EVMHostPrinter::callRecords() { - static const auto callKind = [](evmc_call_kind _kind) -> string + static auto constexpr callKind = [](evmc_call_kind _kind) -> string { switch (_kind) { diff --git a/test/ExecutionFramework.h b/test/ExecutionFramework.h index d6912c5d0..7a10d72e3 100644 --- a/test/ExecutionFramework.h +++ b/test/ExecutionFramework.h @@ -49,9 +49,8 @@ namespace solidity::test using rational = boost::rational; // The ether and gwei denominations; here for ease of use where needed within code. -static const u256 gwei = u256(1) << 9; -static const u256 ether = u256(1) << 18; - +static u256 const gwei = u256(1) << 9; +static u256 const ether = u256(1) << 18; class ExecutionFramework { diff --git a/test/tools/fuzzer_common.cpp b/test/tools/fuzzer_common.cpp index 5a1849ea6..332b9fc04 100644 --- a/test/tools/fuzzer_common.cpp +++ b/test/tools/fuzzer_common.cpp @@ -78,7 +78,7 @@ void FuzzerUtil::testCompilerJsonInterface(string const& _input, bool _optimize, void FuzzerUtil::forceSMT(StringMap& _input) { // Add SMT checker pragma if not already present in source - static const char* smtPragma = "pragma experimental SMTChecker;"; + static auto constexpr smtPragma = "pragma experimental SMTChecker;"; for (auto &sourceUnit: _input) if (sourceUnit.second.find(smtPragma) == string::npos) sourceUnit.second += smtPragma;