mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Purge using namespace std from previously missed files
This commit is contained in:
parent
77912ab35d
commit
0d0a7fc1f5
@ -29,11 +29,11 @@
|
||||
|
||||
#include <vector>
|
||||
|
||||
using namespace std;
|
||||
using namespace solidity::frontend::test;
|
||||
using namespace solidity::util;
|
||||
using namespace std::string_literals;
|
||||
|
||||
ostream& solidity::frontend::test::operator<<(ostream& _output, NatspecJSONKind _kind)
|
||||
std::ostream& solidity::frontend::test::operator<<(std::ostream& _output, NatspecJSONKind _kind)
|
||||
{
|
||||
switch (_kind) {
|
||||
case NatspecJSONKind::Devdoc: _output << "devdoc"; break;
|
||||
@ -42,12 +42,12 @@ ostream& solidity::frontend::test::operator<<(ostream& _output, NatspecJSONKind
|
||||
return _output;
|
||||
}
|
||||
|
||||
unique_ptr<TestCase> NatspecJSONTest::create(Config const& _config)
|
||||
std::unique_ptr<TestCase> NatspecJSONTest::create(Config const& _config)
|
||||
{
|
||||
return make_unique<NatspecJSONTest>(_config.filename, _config.evmVersion);
|
||||
return std::make_unique<NatspecJSONTest>(_config.filename, _config.evmVersion);
|
||||
}
|
||||
|
||||
void NatspecJSONTest::parseCustomExpectations(istream& _stream)
|
||||
void NatspecJSONTest::parseCustomExpectations(std::istream& _stream)
|
||||
{
|
||||
soltestAssert(m_expectedNatspecJSON.empty());
|
||||
|
||||
@ -56,21 +56,21 @@ void NatspecJSONTest::parseCustomExpectations(istream& _stream)
|
||||
// // <qualified contract name> <devdoc|userdoc>
|
||||
// // <json>
|
||||
|
||||
string line;
|
||||
std::string line;
|
||||
while (getline(_stream, line))
|
||||
{
|
||||
string_view strippedLine = expectLinePrefix(line);
|
||||
std::string_view strippedLine = expectLinePrefix(line);
|
||||
if (strippedLine.empty())
|
||||
continue;
|
||||
|
||||
auto [contractName, kind] = parseExpectationHeader(strippedLine);
|
||||
|
||||
string rawJSON = extractExpectationJSON(_stream);
|
||||
string jsonErrors;
|
||||
std::string rawJSON = extractExpectationJSON(_stream);
|
||||
std::string jsonErrors;
|
||||
Json::Value parsedJSON;
|
||||
bool jsonParsingSuccessful = jsonParseStrict(rawJSON, parsedJSON, &jsonErrors);
|
||||
if (!jsonParsingSuccessful)
|
||||
BOOST_THROW_EXCEPTION(runtime_error(fmt::format(
|
||||
BOOST_THROW_EXCEPTION(std::runtime_error(fmt::format(
|
||||
"Malformed JSON in {} expectation for contract {}.\n"
|
||||
"Note that JSON expectations must be pretty-printed to be split correctly. "
|
||||
"The object is assumed to and at the first unindented closing brace.\n"
|
||||
@ -80,7 +80,7 @@ void NatspecJSONTest::parseCustomExpectations(istream& _stream)
|
||||
rawJSON
|
||||
)));
|
||||
|
||||
m_expectedNatspecJSON[string(contractName)][kind] = parsedJSON;
|
||||
m_expectedNatspecJSON[std::string(contractName)][kind] = parsedJSON;
|
||||
}
|
||||
}
|
||||
|
||||
@ -94,51 +94,51 @@ bool NatspecJSONTest::expectationsMatch()
|
||||
prettyPrinted(obtainedNatspec()) == prettyPrinted(m_expectedNatspecJSON);
|
||||
}
|
||||
|
||||
void NatspecJSONTest::printExpectedResult(ostream& _stream, string const& _linePrefix, bool _formatted) const
|
||||
void NatspecJSONTest::printExpectedResult(std::ostream& _stream, std::string const& _linePrefix, bool _formatted) const
|
||||
{
|
||||
SyntaxTest::printExpectedResult(_stream, _linePrefix, _formatted);
|
||||
if (!m_expectedNatspecJSON.empty())
|
||||
{
|
||||
_stream << _linePrefix << "----" << endl;
|
||||
_stream << _linePrefix << "----" << std::endl;
|
||||
printIndented(_stream, formatNatspecExpectations(m_expectedNatspecJSON), _linePrefix);
|
||||
}
|
||||
}
|
||||
|
||||
void NatspecJSONTest::printObtainedResult(ostream& _stream, string const& _linePrefix, bool _formatted) const
|
||||
void NatspecJSONTest::printObtainedResult(std::ostream& _stream, std::string const& _linePrefix, bool _formatted) const
|
||||
{
|
||||
SyntaxTest::printObtainedResult(_stream, _linePrefix, _formatted);
|
||||
|
||||
NatspecMap natspecJSON = obtainedNatspec();
|
||||
if (!natspecJSON.empty())
|
||||
{
|
||||
_stream << _linePrefix << "----" << endl;
|
||||
_stream << _linePrefix << "----" << std::endl;
|
||||
// TODO: Diff both versions and highlight differences.
|
||||
// We should have a helper for doing that in newly defined test cases without much effort.
|
||||
printIndented(_stream, formatNatspecExpectations(natspecJSON), _linePrefix);
|
||||
}
|
||||
}
|
||||
|
||||
tuple<string_view, NatspecJSONKind> NatspecJSONTest::parseExpectationHeader(string_view _line)
|
||||
std::tuple<std::string_view, NatspecJSONKind> NatspecJSONTest::parseExpectationHeader(std::string_view _line)
|
||||
{
|
||||
for (NatspecJSONKind kind: {NatspecJSONKind::Devdoc, NatspecJSONKind::Userdoc})
|
||||
{
|
||||
string kindSuffix = " " + toString(kind);
|
||||
std::string kindSuffix = " " + toString(kind);
|
||||
if (boost::algorithm::ends_with(_line, kindSuffix))
|
||||
return {_line.substr(0, _line.size() - kindSuffix.size()), kind};
|
||||
}
|
||||
|
||||
BOOST_THROW_EXCEPTION(runtime_error(
|
||||
BOOST_THROW_EXCEPTION(std::runtime_error(
|
||||
"Natspec kind (devdoc/userdoc) not present in the expectation: "s.append(_line)
|
||||
));
|
||||
}
|
||||
|
||||
string NatspecJSONTest::extractExpectationJSON(istream& _stream)
|
||||
std::string NatspecJSONTest::extractExpectationJSON(std::istream& _stream)
|
||||
{
|
||||
string rawJSON;
|
||||
string line;
|
||||
std::string rawJSON;
|
||||
std::string line;
|
||||
while (getline(_stream, line))
|
||||
{
|
||||
string_view strippedLine = expectLinePrefix(line);
|
||||
std::string_view strippedLine = expectLinePrefix(line);
|
||||
rawJSON += strippedLine;
|
||||
rawJSON += "\n";
|
||||
|
||||
@ -149,11 +149,11 @@ string NatspecJSONTest::extractExpectationJSON(istream& _stream)
|
||||
return rawJSON;
|
||||
}
|
||||
|
||||
string_view NatspecJSONTest::expectLinePrefix(string_view _line)
|
||||
std::string_view NatspecJSONTest::expectLinePrefix(std::string_view _line)
|
||||
{
|
||||
size_t startPosition = 0;
|
||||
if (!boost::algorithm::starts_with(_line, "//"))
|
||||
BOOST_THROW_EXCEPTION(runtime_error(
|
||||
BOOST_THROW_EXCEPTION(std::runtime_error(
|
||||
"Expectation line is not a comment: "s.append(_line)
|
||||
));
|
||||
|
||||
@ -164,9 +164,9 @@ string_view NatspecJSONTest::expectLinePrefix(string_view _line)
|
||||
return _line.substr(startPosition, _line.size() - startPosition);
|
||||
}
|
||||
|
||||
string NatspecJSONTest::formatNatspecExpectations(NatspecMap const& _expectations) const
|
||||
std::string NatspecJSONTest::formatNatspecExpectations(NatspecMap const& _expectations) const
|
||||
{
|
||||
string output;
|
||||
std::string output;
|
||||
bool first = true;
|
||||
// NOTE: Not sorting explicitly because CompilerStack seems to put contracts roughly in the
|
||||
// order in which they appear in the source, which is much better than alphabetical order.
|
||||
@ -190,7 +190,7 @@ NatspecMap NatspecJSONTest::obtainedNatspec() const
|
||||
return {};
|
||||
|
||||
NatspecMap result;
|
||||
for (string contractName: compiler().contractNames())
|
||||
for (std::string contractName: compiler().contractNames())
|
||||
{
|
||||
result[contractName][NatspecJSONKind::Devdoc] = compiler().natspecDev(contractName);
|
||||
result[contractName][NatspecJSONKind::Userdoc] = compiler().natspecUser(contractName);
|
||||
|
@ -31,7 +31,6 @@
|
||||
|
||||
#include <boost/test/unit_test.hpp>
|
||||
|
||||
using namespace std;
|
||||
using namespace solidity::langutil;
|
||||
|
||||
namespace solidity::frontend::test
|
||||
@ -50,7 +49,7 @@ ASTPointer<ContractDefinition> parseText(std::string const& _source, ErrorList&
|
||||
if (!sourceUnit)
|
||||
return ASTPointer<ContractDefinition>();
|
||||
for (ASTPointer<ASTNode> const& node: sourceUnit->nodes())
|
||||
if (ASTPointer<ContractDefinition> contract = dynamic_pointer_cast<ContractDefinition>(node))
|
||||
if (ASTPointer<ContractDefinition> contract = std::dynamic_pointer_cast<ContractDefinition>(node))
|
||||
return contract;
|
||||
BOOST_FAIL("No contract found in source.");
|
||||
return ASTPointer<ContractDefinition>();
|
||||
@ -525,7 +524,7 @@ BOOST_AUTO_TEST_CASE(keyword_is_reserved)
|
||||
for (auto const& keyword: keywords)
|
||||
{
|
||||
auto text = std::string("contract ") + keyword + " {}";
|
||||
CHECK_PARSE_ERROR(text.c_str(), string("Expected identifier but got reserved keyword '") + keyword + "'");
|
||||
CHECK_PARSE_ERROR(text.c_str(), std::string("Expected identifier but got reserved keyword '") + keyword + "'");
|
||||
}
|
||||
}
|
||||
|
||||
@ -591,7 +590,7 @@ BOOST_AUTO_TEST_CASE(inline_asm_end_location)
|
||||
class CheckInlineAsmLocation: public ASTConstVisitor
|
||||
{
|
||||
public:
|
||||
explicit CheckInlineAsmLocation(string _sourceCode): m_sourceCode(_sourceCode) {}
|
||||
explicit CheckInlineAsmLocation(std::string _sourceCode): m_sourceCode(_sourceCode) {}
|
||||
bool visited = false;
|
||||
bool visit(InlineAssembly const& _inlineAsm) override
|
||||
{
|
||||
@ -602,7 +601,7 @@ BOOST_AUTO_TEST_CASE(inline_asm_end_location)
|
||||
|
||||
return false;
|
||||
}
|
||||
string m_sourceCode;
|
||||
std::string m_sourceCode;
|
||||
};
|
||||
|
||||
CheckInlineAsmLocation visitor{sourceCode};
|
||||
|
@ -27,7 +27,6 @@
|
||||
#include <libsolutil/Keccak256.h>
|
||||
#include <boost/test/unit_test.hpp>
|
||||
|
||||
using namespace std;
|
||||
using namespace solidity::langutil;
|
||||
|
||||
namespace solidity::frontend::test
|
||||
@ -86,9 +85,9 @@ BOOST_AUTO_TEST_CASE(storage_layout_simple)
|
||||
BOOST_REQUIRE(members.memberStorageOffset("first") != nullptr);
|
||||
BOOST_REQUIRE(members.memberStorageOffset("second") != nullptr);
|
||||
BOOST_REQUIRE(members.memberStorageOffset("wraps") != nullptr);
|
||||
BOOST_CHECK(*members.memberStorageOffset("first") == make_pair(u256(0), unsigned(0)));
|
||||
BOOST_CHECK(*members.memberStorageOffset("second") == make_pair(u256(0), unsigned(16)));
|
||||
BOOST_CHECK(*members.memberStorageOffset("wraps") == make_pair(u256(1), unsigned(0)));
|
||||
BOOST_CHECK(*members.memberStorageOffset("first") == std::make_pair(u256(0), unsigned(0)));
|
||||
BOOST_CHECK(*members.memberStorageOffset("second") == std::make_pair(u256(0), unsigned(16)));
|
||||
BOOST_CHECK(*members.memberStorageOffset("wraps") == std::make_pair(u256(1), unsigned(0)));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(storage_layout_mapping)
|
||||
@ -114,10 +113,10 @@ BOOST_AUTO_TEST_CASE(storage_layout_mapping)
|
||||
BOOST_REQUIRE(members.memberStorageOffset("second") != nullptr);
|
||||
BOOST_REQUIRE(members.memberStorageOffset("third") != nullptr);
|
||||
BOOST_REQUIRE(members.memberStorageOffset("final") != nullptr);
|
||||
BOOST_CHECK(*members.memberStorageOffset("first") == make_pair(u256(0), unsigned(0)));
|
||||
BOOST_CHECK(*members.memberStorageOffset("second") == make_pair(u256(1), unsigned(0)));
|
||||
BOOST_CHECK(*members.memberStorageOffset("third") == make_pair(u256(2), unsigned(0)));
|
||||
BOOST_CHECK(*members.memberStorageOffset("final") == make_pair(u256(3), unsigned(0)));
|
||||
BOOST_CHECK(*members.memberStorageOffset("first") == std::make_pair(u256(0), unsigned(0)));
|
||||
BOOST_CHECK(*members.memberStorageOffset("second") == std::make_pair(u256(1), unsigned(0)));
|
||||
BOOST_CHECK(*members.memberStorageOffset("third") == std::make_pair(u256(2), unsigned(0)));
|
||||
BOOST_CHECK(*members.memberStorageOffset("final") == std::make_pair(u256(3), unsigned(0)));
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(storage_layout_arrays)
|
||||
@ -162,7 +161,7 @@ BOOST_AUTO_TEST_CASE(type_identifiers)
|
||||
BOOST_CHECK_EQUAL(RationalNumberType(rational(2 * 200, 2 * 77)).identifier(), "t_rational_200_by_77");
|
||||
BOOST_CHECK_EQUAL(RationalNumberType(rational(-2 * 200, 2 * 77)).identifier(), "t_rational_minus_200_by_77");
|
||||
BOOST_CHECK_EQUAL(
|
||||
StringLiteralType(Literal(++id, SourceLocation{}, Token::StringLiteral, make_shared<string>("abc - def"))).identifier(),
|
||||
StringLiteralType(Literal(++id, SourceLocation{}, Token::StringLiteral, std::make_shared<std::string>("abc - def"))).identifier(),
|
||||
"t_stringliteral_196a9142ee0d40e274a6482393c762b16dd8315713207365e1e13d8d85b74fc4"
|
||||
);
|
||||
BOOST_CHECK_EQUAL(TypeProvider::fromElementaryTypeName("bytes1")->identifier(), "t_bytes1");
|
||||
@ -183,15 +182,15 @@ BOOST_AUTO_TEST_CASE(type_identifiers)
|
||||
Type const* multiArray = TypeProvider::array(DataLocation::Storage, stringArray);
|
||||
BOOST_CHECK_EQUAL(multiArray->identifier(), "t_array$_t_array$_t_string_storage_$20_storage_$dyn_storage_ptr");
|
||||
|
||||
ContractDefinition c(++id, SourceLocation{}, make_shared<string>("MyContract$"), SourceLocation{}, {}, {}, {}, ContractKind::Contract);
|
||||
ContractDefinition c(++id, SourceLocation{}, std::make_shared<std::string>("MyContract$"), SourceLocation{}, {}, {}, {}, ContractKind::Contract);
|
||||
BOOST_CHECK_EQUAL(c.type()->identifier(), "t_type$_t_contract$_MyContract$$$_$2_$");
|
||||
BOOST_CHECK_EQUAL(ContractType(c, true).identifier(), "t_super$_MyContract$$$_$2");
|
||||
|
||||
StructDefinition s(++id, {}, make_shared<string>("Struct"), {}, {}, {});
|
||||
StructDefinition s(++id, {}, std::make_shared<std::string>("Struct"), {}, {}, {});
|
||||
s.annotation().recursive = false;
|
||||
BOOST_CHECK_EQUAL(s.type()->identifier(), "t_type$_t_struct$_Struct_$3_storage_ptr_$");
|
||||
|
||||
EnumDefinition e(++id, {}, make_shared<string>("Enum"), {}, {}, {});
|
||||
EnumDefinition e(++id, {}, std::make_shared<std::string>("Enum"), {}, {}, {});
|
||||
BOOST_CHECK_EQUAL(e.type()->identifier(), "t_type$_t_enum$_Enum_$4_$");
|
||||
|
||||
TupleType t({e.type(), s.type(), stringArray, nullptr});
|
||||
@ -209,8 +208,8 @@ BOOST_AUTO_TEST_CASE(type_identifiers)
|
||||
|
||||
// TypeType is tested with contract
|
||||
|
||||
auto emptyParams = make_shared<ParameterList>(++id, SourceLocation(), std::vector<ASTPointer<VariableDeclaration>>());
|
||||
ModifierDefinition mod(++id, SourceLocation{}, make_shared<string>("modif"), SourceLocation{}, {}, emptyParams, {}, {}, {});
|
||||
auto emptyParams = std::make_shared<ParameterList>(++id, SourceLocation(), std::vector<ASTPointer<VariableDeclaration>>());
|
||||
ModifierDefinition mod(++id, SourceLocation{}, std::make_shared<std::string>("modif"), SourceLocation{}, {}, emptyParams, {}, {}, {});
|
||||
BOOST_CHECK_EQUAL(ModifierType(mod).identifier(), "t_modifier$__$");
|
||||
|
||||
SourceUnit su(++id, {}, {}, {}, {});
|
||||
@ -250,34 +249,34 @@ BOOST_AUTO_TEST_CASE(helper_bool_result)
|
||||
{
|
||||
BoolResult r1{true};
|
||||
BoolResult r2 = BoolResult::err("Failure.");
|
||||
r1.merge(r2, logical_and<bool>());
|
||||
r1.merge(r2, std::logical_and<bool>());
|
||||
BOOST_REQUIRE_EQUAL(r1.get(), false);
|
||||
BOOST_REQUIRE_EQUAL(r1.message(), "Failure.");
|
||||
|
||||
BoolResult r3{false};
|
||||
BoolResult r4{true};
|
||||
r3.merge(r4, logical_and<bool>());
|
||||
r3.merge(r4, std::logical_and<bool>());
|
||||
BOOST_REQUIRE_EQUAL(r3.get(), false);
|
||||
BOOST_REQUIRE_EQUAL(r3.message(), "");
|
||||
|
||||
BoolResult r5{true};
|
||||
BoolResult r6{true};
|
||||
r5.merge(r6, logical_and<bool>());
|
||||
r5.merge(r6, std::logical_and<bool>());
|
||||
BOOST_REQUIRE_EQUAL(r5.get(), true);
|
||||
BOOST_REQUIRE_EQUAL(r5.message(), "");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(helper_string_result)
|
||||
{
|
||||
using StringResult = util::Result<string>;
|
||||
using StringResult = util::Result<std::string>;
|
||||
|
||||
StringResult r1{string{"Success"}};
|
||||
StringResult r1{std::string{"Success"}};
|
||||
StringResult r2 = StringResult::err("Failure");
|
||||
|
||||
BOOST_REQUIRE_EQUAL(r1.get(), "Success");
|
||||
BOOST_REQUIRE_EQUAL(r2.get(), "");
|
||||
|
||||
r1.merge(r2, [](string const&, string const& _rhs) { return _rhs; });
|
||||
r1.merge(r2, [](std::string const&, std::string const& _rhs) { return _rhs; });
|
||||
|
||||
BOOST_REQUIRE_EQUAL(r1.get(), "");
|
||||
BOOST_REQUIRE_EQUAL(r1.message(), "Failure");
|
||||
|
@ -32,8 +32,8 @@
|
||||
#include <algorithm>
|
||||
#include <set>
|
||||
|
||||
using namespace std;
|
||||
using namespace solidity::evmasm;
|
||||
using namespace std::string_literals;
|
||||
|
||||
namespace solidity::frontend::test
|
||||
{
|
||||
@ -41,9 +41,9 @@ namespace solidity::frontend::test
|
||||
namespace
|
||||
{
|
||||
|
||||
langutil::Error::Severity str2Severity(string const& _cat)
|
||||
langutil::Error::Severity str2Severity(std::string const& _cat)
|
||||
{
|
||||
map<string, langutil::Error::Severity> cats{
|
||||
std::map<std::string, langutil::Error::Severity> cats{
|
||||
{"info", langutil::Error::Severity::Info},
|
||||
{"Info", langutil::Error::Severity::Info},
|
||||
{"warning", langutil::Error::Severity::Warning},
|
||||
@ -55,7 +55,7 @@ langutil::Error::Severity str2Severity(string const& _cat)
|
||||
}
|
||||
|
||||
/// Helper to match a specific error type and message
|
||||
bool containsError(Json::Value const& _compilerResult, string const& _type, string const& _message)
|
||||
bool containsError(Json::Value const& _compilerResult, std::string const& _type, std::string const& _message)
|
||||
{
|
||||
if (!_compilerResult.isMember("errors"))
|
||||
return false;
|
||||
@ -88,7 +88,7 @@ bool containsAtMostWarnings(Json::Value const& _compilerResult)
|
||||
return true;
|
||||
}
|
||||
|
||||
Json::Value getContractResult(Json::Value const& _compilerResult, string const& _file, string const& _name)
|
||||
Json::Value getContractResult(Json::Value const& _compilerResult, std::string const& _file, std::string const& _name)
|
||||
{
|
||||
if (
|
||||
!_compilerResult["contracts"].isObject() ||
|
||||
@ -107,10 +107,10 @@ void checkLinkReferencesSchema(Json::Value const& _contractResult)
|
||||
Json::Value const& linkReferenceResult = _contractResult["evm"]["bytecode"]["linkReferences"];
|
||||
BOOST_TEST_REQUIRE(linkReferenceResult.isObject());
|
||||
|
||||
for (string const& fileName: linkReferenceResult.getMemberNames())
|
||||
for (std::string const& fileName: linkReferenceResult.getMemberNames())
|
||||
{
|
||||
BOOST_TEST_REQUIRE(linkReferenceResult[fileName].isObject());
|
||||
for (string const& libraryName: linkReferenceResult[fileName].getMemberNames())
|
||||
for (std::string const& libraryName: linkReferenceResult[fileName].getMemberNames())
|
||||
{
|
||||
BOOST_TEST_REQUIRE(linkReferenceResult[fileName][libraryName].isArray());
|
||||
BOOST_TEST_REQUIRE(!linkReferenceResult[fileName][libraryName].empty());
|
||||
@ -125,7 +125,7 @@ void checkLinkReferencesSchema(Json::Value const& _contractResult)
|
||||
}
|
||||
}
|
||||
|
||||
void expectLinkReferences(Json::Value const& _contractResult, map<string, set<string>> const& _expectedLinkReferences)
|
||||
void expectLinkReferences(Json::Value const& _contractResult, std::map<std::string, std::set<std::string>> const& _expectedLinkReferences)
|
||||
{
|
||||
checkLinkReferencesSchema(_contractResult);
|
||||
|
||||
@ -136,15 +136,15 @@ void expectLinkReferences(Json::Value const& _contractResult, map<string, set<st
|
||||
{
|
||||
BOOST_TEST(linkReferenceResult.isMember(fileName));
|
||||
BOOST_TEST(linkReferenceResult[fileName].size() == libraries.size());
|
||||
for (string const& libraryName: libraries)
|
||||
for (std::string const& libraryName: libraries)
|
||||
BOOST_TEST(linkReferenceResult[fileName].isMember(libraryName));
|
||||
}
|
||||
}
|
||||
|
||||
Json::Value compile(string _input)
|
||||
Json::Value compile(std::string _input)
|
||||
{
|
||||
StandardCompiler compiler;
|
||||
string output = compiler.compile(std::move(_input));
|
||||
std::string output = compiler.compile(std::move(_input));
|
||||
Json::Value ret;
|
||||
BOOST_REQUIRE(util::jsonParseStrict(output, ret));
|
||||
return ret;
|
||||
@ -383,7 +383,7 @@ BOOST_AUTO_TEST_CASE(basic_compilation)
|
||||
BOOST_CHECK(contract["evm"]["bytecode"]["object"].isString());
|
||||
BOOST_CHECK_EQUAL(
|
||||
solidity::test::bytecodeSansMetadata(contract["evm"]["bytecode"]["object"].asString()),
|
||||
string("6080604052348015600e575f80fd5b5060") +
|
||||
std::string("6080604052348015600e575f80fd5b5060") +
|
||||
(VersionIsRelease ? "3e" : util::toHex(bytes{uint8_t(60 + VersionStringStrict.size())})) +
|
||||
"80601a5f395ff3fe60806040525f80fdfe"
|
||||
);
|
||||
@ -483,7 +483,7 @@ BOOST_AUTO_TEST_CASE(compilation_error)
|
||||
{
|
||||
BOOST_REQUIRE(error.isObject());
|
||||
BOOST_REQUIRE(error["message"].isString());
|
||||
if (error["message"].asString().find("pre-release compiler") == string::npos)
|
||||
if (error["message"].asString().find("pre-release compiler") == std::string::npos)
|
||||
{
|
||||
BOOST_CHECK_EQUAL(
|
||||
util::jsonCompactPrint(error),
|
||||
@ -1010,7 +1010,7 @@ BOOST_AUTO_TEST_CASE(linking_yul_same_library_name_different_files)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(evm_version)
|
||||
{
|
||||
auto inputForVersion = [](string const& _version)
|
||||
auto inputForVersion = [](std::string const& _version)
|
||||
{
|
||||
return R"(
|
||||
{
|
||||
@ -1029,30 +1029,30 @@ BOOST_AUTO_TEST_CASE(evm_version)
|
||||
};
|
||||
Json::Value result;
|
||||
result = compile(inputForVersion("\"evmVersion\": \"homestead\","));
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"homestead\"") != string::npos);
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"homestead\"") != std::string::npos);
|
||||
result = compile(inputForVersion("\"evmVersion\": \"tangerineWhistle\","));
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"tangerineWhistle\"") != string::npos);
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"tangerineWhistle\"") != std::string::npos);
|
||||
result = compile(inputForVersion("\"evmVersion\": \"spuriousDragon\","));
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"spuriousDragon\"") != string::npos);
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"spuriousDragon\"") != std::string::npos);
|
||||
result = compile(inputForVersion("\"evmVersion\": \"byzantium\","));
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"byzantium\"") != string::npos);
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"byzantium\"") != std::string::npos);
|
||||
result = compile(inputForVersion("\"evmVersion\": \"constantinople\","));
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"constantinople\"") != string::npos);
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"constantinople\"") != std::string::npos);
|
||||
result = compile(inputForVersion("\"evmVersion\": \"petersburg\","));
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"petersburg\"") != string::npos);
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"petersburg\"") != std::string::npos);
|
||||
result = compile(inputForVersion("\"evmVersion\": \"istanbul\","));
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"istanbul\"") != string::npos);
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"istanbul\"") != std::string::npos);
|
||||
result = compile(inputForVersion("\"evmVersion\": \"berlin\","));
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"berlin\"") != string::npos);
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"berlin\"") != std::string::npos);
|
||||
result = compile(inputForVersion("\"evmVersion\": \"london\","));
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"london\"") != string::npos);
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"london\"") != std::string::npos);
|
||||
result = compile(inputForVersion("\"evmVersion\": \"paris\","));
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"paris\"") != string::npos);
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"paris\"") != std::string::npos);
|
||||
result = compile(inputForVersion("\"evmVersion\": \"shanghai\","));
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"shanghai\"") != string::npos);
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"shanghai\"") != std::string::npos);
|
||||
// test default
|
||||
result = compile(inputForVersion(""));
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"shanghai\"") != string::npos);
|
||||
BOOST_CHECK(result["contracts"]["fileA"]["A"]["metadata"].asString().find("\"evmVersion\":\"shanghai\"") != std::string::npos);
|
||||
// test invalid
|
||||
result = compile(inputForVersion("\"evmVersion\": \"invalid\","));
|
||||
BOOST_CHECK(result["errors"][0]["message"].asString() == "Invalid EVM version requested.");
|
||||
@ -1211,8 +1211,8 @@ BOOST_AUTO_TEST_CASE(optimizer_settings_details_different)
|
||||
BOOST_CHECK(optimizer["details"]["yul"].asBool() == true);
|
||||
BOOST_CHECK(optimizer["details"]["yulDetails"].isObject());
|
||||
BOOST_CHECK(
|
||||
util::convertContainer<set<string>>(optimizer["details"]["yulDetails"].getMemberNames()) ==
|
||||
(set<string>{"stackAllocation", "optimizerSteps"})
|
||||
util::convertContainer<std::set<std::string>>(optimizer["details"]["yulDetails"].getMemberNames()) ==
|
||||
(std::set<std::string>{"stackAllocation", "optimizerSteps"})
|
||||
);
|
||||
BOOST_CHECK(optimizer["details"]["yulDetails"]["stackAllocation"].asBool() == true);
|
||||
BOOST_CHECK(
|
||||
@ -1259,7 +1259,7 @@ BOOST_AUTO_TEST_CASE(metadata_without_compilation)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(license_in_metadata)
|
||||
{
|
||||
string const input = R"(
|
||||
std::string const input = R"(
|
||||
{
|
||||
"language": "Solidity",
|
||||
"sources": {
|
||||
@ -1387,7 +1387,7 @@ BOOST_AUTO_TEST_CASE(use_stack_optimization)
|
||||
|
||||
// Now disable stack optimizations and UnusedFunctionParameterPruner (p)
|
||||
// results in "stack too deep"
|
||||
string optimiserSteps = OptimiserSettings::DefaultYulOptimiserSteps;
|
||||
std::string optimiserSteps = OptimiserSettings::DefaultYulOptimiserSteps;
|
||||
optimiserSteps.erase(
|
||||
remove_if(optimiserSteps.begin(), optimiserSteps.end(), [](char ch) { return ch == 'p'; }),
|
||||
optimiserSteps.end()
|
||||
@ -1728,16 +1728,16 @@ BOOST_AUTO_TEST_CASE(dependency_tracking_of_abstract_contract_yul)
|
||||
BOOST_REQUIRE(result["contracts"]["A.sol"]["C"].isObject());
|
||||
BOOST_REQUIRE(result["contracts"]["A.sol"]["C"]["ir"].isString());
|
||||
|
||||
const string& irCode = result["contracts"]["A.sol"]["C"]["ir"].asString();
|
||||
const std::string& irCode = result["contracts"]["A.sol"]["C"]["ir"].asString();
|
||||
|
||||
// Make sure C and B contracts are deployed
|
||||
BOOST_REQUIRE(irCode.find("object \"C") != string::npos);
|
||||
BOOST_REQUIRE(irCode.find("object \"B") != string::npos);
|
||||
BOOST_REQUIRE(irCode.find("object \"C") != std::string::npos);
|
||||
BOOST_REQUIRE(irCode.find("object \"B") != std::string::npos);
|
||||
|
||||
// Make sure A and D are NOT deployed as they were not requested and are not
|
||||
// in any dependency
|
||||
BOOST_REQUIRE(irCode.find("object \"A") == string::npos);
|
||||
BOOST_REQUIRE(irCode.find("object \"D") == string::npos);
|
||||
BOOST_REQUIRE(irCode.find("object \"A") == std::string::npos);
|
||||
BOOST_REQUIRE(irCode.find("object \"D") == std::string::npos);
|
||||
|
||||
|
||||
BOOST_REQUIRE(result["sources"].isObject());
|
||||
@ -1770,15 +1770,15 @@ BOOST_AUTO_TEST_CASE(source_location_of_bare_block)
|
||||
solidity::frontend::StandardCompiler compiler;
|
||||
Json::Value result = compiler.compile(parsedInput);
|
||||
|
||||
string sourceMap = result["contracts"]["A.sol"]["A"]["evm"]["bytecode"]["sourceMap"].asString();
|
||||
std::string sourceMap = result["contracts"]["A.sol"]["A"]["evm"]["bytecode"]["sourceMap"].asString();
|
||||
|
||||
// Check that the bare block's source location is referenced.
|
||||
string sourceRef =
|
||||
std::string sourceRef =
|
||||
";" +
|
||||
to_string(string{"contract A { constructor() { uint x = 2; "}.size()) +
|
||||
std::to_string(std::string{"contract A { constructor() { uint x = 2; "}.size()) +
|
||||
":" +
|
||||
to_string(string{"{ uint y = 3; }"}.size());
|
||||
BOOST_REQUIRE(sourceMap.find(sourceRef) != string::npos);
|
||||
std::to_string(std::string{"{ uint y = 3; }"}.size());
|
||||
BOOST_REQUIRE(sourceMap.find(sourceRef) != std::string::npos);
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_SUITE_END()
|
||||
|
@ -28,7 +28,6 @@
|
||||
#include <memory>
|
||||
#include <stdexcept>
|
||||
|
||||
using namespace std;
|
||||
using namespace solidity;
|
||||
using namespace solidity::util;
|
||||
using namespace solidity::util::formatting;
|
||||
@ -39,7 +38,7 @@ using namespace boost::unit_test;
|
||||
namespace fs = boost::filesystem;
|
||||
|
||||
SyntaxTest::SyntaxTest(
|
||||
string const& _filename,
|
||||
std::string const& _filename,
|
||||
langutil::EVMVersion _evmVersion,
|
||||
Error::Severity _minSeverity
|
||||
):
|
||||
@ -80,14 +79,14 @@ void SyntaxTest::parseAndAnalyze()
|
||||
// failing compilation after successful analysis is a rare case,
|
||||
// it assumes that errors contain exactly one error, and the error is of type Error::Type::CodeGenerationError
|
||||
if (codeGeneretionErrorCount != 1 || errorCount != 1)
|
||||
BOOST_THROW_EXCEPTION(runtime_error("Compilation failed even though analysis was successful."));
|
||||
BOOST_THROW_EXCEPTION(std::runtime_error("Compilation failed even though analysis was successful."));
|
||||
}
|
||||
}
|
||||
catch (UnimplementedFeatureError const& _e)
|
||||
{
|
||||
m_errorList.emplace_back(SyntaxTestError{
|
||||
"UnimplementedFeatureError",
|
||||
nullopt,
|
||||
std::nullopt,
|
||||
errorMessage(_e),
|
||||
"",
|
||||
-1,
|
||||
@ -107,7 +106,7 @@ void SyntaxTest::filterObtainedErrors()
|
||||
|
||||
int locationStart = -1;
|
||||
int locationEnd = -1;
|
||||
string sourceName;
|
||||
std::string sourceName;
|
||||
if (SourceLocation const* location = currentError->sourceLocation())
|
||||
{
|
||||
locationStart = location->start;
|
||||
|
Loading…
Reference in New Issue
Block a user