diff --git a/test/tools/ossfuzz/protoToYul.cpp b/test/tools/ossfuzz/protoToYul.cpp index beb74fddf..74ee7a3b2 100644 --- a/test/tools/ossfuzz/protoToYul.cpp +++ b/test/tools/ossfuzz/protoToYul.cpp @@ -164,12 +164,12 @@ bool ProtoConverter::varDeclAvailable() if (m_inFunctionDef) { consolidateVarDeclsInFunctionDef(); - return m_currentFuncVars.size() > 0; + return !m_currentFuncVars.empty(); } else { consolidateGlobalVarDecls(); - return m_currentGlobalVars.size() > 0; + return !m_currentGlobalVars.empty(); } } @@ -192,13 +192,13 @@ void ProtoConverter::visit(VarRef const& _x) if (m_inFunctionDef) { // Ensure that there is at least one variable declaration to reference in function scope. - yulAssert(m_currentFuncVars.size() > 0, "Proto fuzzer: No variables to reference."); + yulAssert(!m_currentFuncVars.empty(), "Proto fuzzer: No variables to reference."); m_output << *m_currentFuncVars[static_cast(_x.varnum()) % m_currentFuncVars.size()]; } else { // Ensure that there is at least one variable declaration to reference in nested scopes. - yulAssert(m_currentGlobalVars.size() > 0, "Proto fuzzer: No global variables to reference."); + yulAssert(!m_currentGlobalVars.empty(), "Proto fuzzer: No global variables to reference."); m_output << *m_currentGlobalVars[static_cast(_x.varnum()) % m_currentGlobalVars.size()]; } } @@ -436,7 +436,7 @@ void ProtoConverter::visit(MultiVarDecl const& _x) // We support up to 4 variables in a single // declaration statement. unsigned numVars = _x.num_vars() % 3 + 2; - string delimiter = ""; + string delimiter; for (unsigned i = 0; i < numVars; i++) { string varName = newVarName(); @@ -872,7 +872,7 @@ bool ProtoConverter::functionValid(FunctionCall_Returns _type, unsigned _numOutP void ProtoConverter::convertFunctionCall( FunctionCall const& _x, - std::string _name, + string const& _name, unsigned _numInParams, bool _newLine ) @@ -1211,7 +1211,7 @@ void ProtoConverter::visit(CaseStmt const& _x) // a case statement containing a case literal that has already been used in a // previous case statement. If the hash (u256 value) matches a previous hash, // then we simply don't create a new case statement. - string noDoubleQuoteStr{""}; + string noDoubleQuoteStr; if (literal.size() > 2) { // Ensure that all characters in the string literal except the first @@ -1438,7 +1438,7 @@ void ProtoConverter::visit(Statement const& _x) void ProtoConverter::openBlockScope() { - m_scopeFuncs.push_back({}); + m_scopeFuncs.emplace_back(vector{}); // Create new block scope inside current function scope if (m_inFunctionDef) @@ -1459,9 +1459,9 @@ void ProtoConverter::openBlockScope() } else { - m_globalVars.push_back({}); + m_globalVars.emplace_back(vector{}); if (m_inForInitScope && m_forInitScopeExtEnabled) - m_globalForLoopInitVars.push_back(vector{}); + m_globalForLoopInitVars.emplace_back(vector{}); } } @@ -1692,7 +1692,7 @@ void ProtoConverter::fillFunctionCallInput(unsigned _numInParams) case 2: m_output << "sload(" << slot << ")"; break; - case 3: + default: // Call to dictionaryToken() automatically picks a token // at a pseudo-random location. m_output << dictionaryToken(); @@ -1721,7 +1721,7 @@ void ProtoConverter::saveFunctionCallOutput(vector const& _varsVec) } void ProtoConverter::createFunctionCall( - string _funcName, + string const& _funcName, unsigned _numInParams, unsigned _numOutParams ) @@ -1847,7 +1847,7 @@ string ProtoConverter::getObjectIdentifier(unsigned _x) unsigned currentId = currentObjectId(); string currentObjName = "object" + to_string(currentId); yulAssert( - m_objectScope.count(currentObjName) && m_objectScope.at(currentObjName).size() > 0, + m_objectScope.count(currentObjName) && !m_objectScope.at(currentObjName).empty(), "Yul proto fuzzer: Error referencing object" ); vector objectIdsInScope = m_objectScope.at(currentObjName); @@ -1887,7 +1887,7 @@ void ProtoConverter::buildObjectScopeTree(Object const& _x) string objectName = newObjectId(false); vector node{objectName}; if (_x.has_data()) - node.push_back(s_dataIdentifier); + node.emplace_back(s_dataIdentifier); for (auto const& subObj: _x.sub_obj()) { // Identifies sub object whose numeric suffix is @@ -1900,7 +1900,7 @@ void ProtoConverter::buildObjectScopeTree(Object const& _x) yulAssert(m_objectScope.count(subObjectName), "Yul proto fuzzer: Invalid object hierarchy"); for (string const& item: m_objectScope.at(subObjectName)) if (item != subObjectName) - node.push_back(subObjectName + "." + item); + node.emplace_back(subObjectName + "." + item); } m_objectScope.emplace(objectName, node); } @@ -1942,7 +1942,7 @@ string ProtoConverter::programToString(Program const& _input) return m_output.str(); } -std::string ProtoConverter::functionTypeToString(NumFunctionReturns _type) +string ProtoConverter::functionTypeToString(NumFunctionReturns _type) { switch (_type) { diff --git a/test/tools/ossfuzz/protoToYul.h b/test/tools/ossfuzz/protoToYul.h index 91988bfc3..270a01603 100644 --- a/test/tools/ossfuzz/protoToYul.h +++ b/test/tools/ossfuzz/protoToYul.h @@ -133,7 +133,7 @@ private: /// Accepts an arbitrary string, removes all characters that are neither /// alphabets nor digits from it and returns the said string. - std::string createAlphaNum(std::string const& _strBytes); + static std::string createAlphaNum(std::string const& _strBytes); enum class NumFunctionReturns { @@ -153,7 +153,7 @@ private: /// None -> "n" /// Single -> "s" /// Multiple -> "m" - std::string functionTypeToString(NumFunctionReturns _type); + static std::string functionTypeToString(NumFunctionReturns _type); /// Builds a single vector containing variables declared in /// function scope. @@ -208,7 +208,7 @@ private: /// true. Default value for the flag is true. void convertFunctionCall( FunctionCall const& _x, - std::string _name, + std::string const& _name, unsigned _numInParams, bool _newLine = true ); @@ -248,7 +248,7 @@ private: /// @param _funcName Name of the function to be called /// @param _numInParams Number of input parameters in function signature /// @param _numOutParams Number of output parameters in function signature - void createFunctionCall(std::string _funcName, unsigned _numInParams, unsigned _numOutParams); + void createFunctionCall(std::string const& _funcName, unsigned _numInParams, unsigned _numOutParams); /// Print the Yul syntax to pass input arguments to a function that has /// @a _numInParams number of input parameters to the output stream. @@ -288,7 +288,7 @@ private: /// Returns an EVMVersion object corresponding to the protobuf /// enum of type Program_Version - solidity::langutil::EVMVersion evmVersionMapping(Program_Version const& _x); + static solidity::langutil::EVMVersion evmVersionMapping(Program_Version const& _x); /// Returns a monotonically increasing counter that starts from zero. unsigned counter() @@ -323,7 +323,7 @@ private: /// Returns the object counter value corresponding to the object /// being visited. - unsigned currentObjectId() + unsigned currentObjectId() const { return m_objectId - 1; }