aboutsummaryrefslogtreecommitdiffstats
path: root/Assembly.cpp
diff options
context:
space:
mode:
authorCJentzsch <jentzsch.software@gmail.com>2015-03-12 21:34:46 +0800
committerCJentzsch <jentzsch.software@gmail.com>2015-03-12 21:34:46 +0800
commit67fae64c9f4b719007ae4b256bee0dc19b5020db (patch)
tree06890e05b589d64c02e985743f859601ea1cd0d6 /Assembly.cpp
parentc93c1901d0e3ef73a936d04ea8100e9ab7d56ca9 (diff)
parent8371e8934e0b55400db0dce5e28c3e3ae5a676f7 (diff)
downloaddexon-solidity-67fae64c9f4b719007ae4b256bee0dc19b5020db.tar
dexon-solidity-67fae64c9f4b719007ae4b256bee0dc19b5020db.tar.gz
dexon-solidity-67fae64c9f4b719007ae4b256bee0dc19b5020db.tar.bz2
dexon-solidity-67fae64c9f4b719007ae4b256bee0dc19b5020db.tar.lz
dexon-solidity-67fae64c9f4b719007ae4b256bee0dc19b5020db.tar.xz
dexon-solidity-67fae64c9f4b719007ae4b256bee0dc19b5020db.tar.zst
dexon-solidity-67fae64c9f4b719007ae4b256bee0dc19b5020db.zip
Merge remote-tracking branch 'upstream/develop' into addTests
Diffstat (limited to 'Assembly.cpp')
-rw-r--r--Assembly.cpp54
1 files changed, 23 insertions, 31 deletions
diff --git a/Assembly.cpp b/Assembly.cpp
index 3869919e..fbc8e47b 100644
--- a/Assembly.cpp
+++ b/Assembly.cpp
@@ -74,17 +74,19 @@ eth::AssemblyItems compileContract(const string& _sourceCode)
return AssemblyItems();
}
-void checkAssemblyLocations(AssemblyItems const& _items, std::vector<SourceLocation> _locations)
+void checkAssemblyLocations(AssemblyItems const& _items, vector<SourceLocation> const& _locations)
{
- size_t i = 0;
BOOST_CHECK_EQUAL(_items.size(), _locations.size());
- for (auto const& it: _items)
+ for (size_t i = 0; i < min(_items.size(), _locations.size()); ++i)
{
- BOOST_CHECK_MESSAGE(it.getLocation() == _locations[i],
- std::string("Location mismatch for assembly item ") + std::to_string(i));
- ++i;
+ BOOST_CHECK_MESSAGE(
+ _items[i].getLocation() == _locations[i],
+ "Location mismatch for assembly item " + to_string(i) + ". Found: " +
+ to_string(_items[i].getLocation().start) + "-" +
+ to_string(_items[i].getLocation().end) + ", expected: " +
+ to_string(_locations[i].start) + "-" +
+ to_string(_locations[i].end));
}
-
}
} // end anonymous namespace
@@ -93,31 +95,21 @@ BOOST_AUTO_TEST_SUITE(Assembly)
BOOST_AUTO_TEST_CASE(location_test)
{
- char const* sourceCode = "contract test {\n"
- " function f() returns (uint256 a)\n"
- " {\n"
- " return 16;\n"
- " }\n"
- "}\n";
- std::shared_ptr<std::string const> n = make_shared<std::string>("source");
+ char const* sourceCode = R"(
+ contract test {
+ function f() returns (uint256 a) {
+ return 16;
+ }
+ }
+ )";
+ shared_ptr<string const> n = make_shared<string>("source");
AssemblyItems items = compileContract(sourceCode);
- std::vector<SourceLocation> locations {
- SourceLocation(0, 77, n), SourceLocation(0, 77, n),
- SourceLocation(0, 77, n), SourceLocation(0, 77, n),
- SourceLocation(0, 77, n), SourceLocation(0, 77, n),
- SourceLocation(0, 77, n), SourceLocation(0, 77, n),
- SourceLocation(), SourceLocation(),
- SourceLocation(0, 77, n), SourceLocation(0, 77, n),
- SourceLocation(), SourceLocation(), SourceLocation(),
- SourceLocation(0, 77, n), SourceLocation(0, 77, n),
- SourceLocation(0, 77, n), SourceLocation(0, 77, n),
- SourceLocation(0, 77, n), SourceLocation(0, 77, n),
- SourceLocation(0, 77, n),
- SourceLocation(18, 75, n), SourceLocation(40, 49, n),
- SourceLocation(61, 70, n), SourceLocation(61, 70, n), SourceLocation(61, 70, n),
- SourceLocation(), SourceLocation(),
- SourceLocation(61, 70, n), SourceLocation(61, 70, n), SourceLocation(61, 70, n)
- };
+ vector<SourceLocation> locations =
+ vector<SourceLocation>(11, SourceLocation(2, 75, n)) +
+ vector<SourceLocation>(12, SourceLocation(20, 72, n)) +
+ vector<SourceLocation>{SourceLocation(42, 51, n), SourceLocation(65, 67, n)} +
+ vector<SourceLocation>(4, SourceLocation(58, 67, n)) +
+ vector<SourceLocation>(3, SourceLocation(20, 72, n));
checkAssemblyLocations(items, locations);
}