aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-12-18 22:32:23 +0800
committerGitHub <noreply@github.com>2017-12-18 22:32:23 +0800
commit55752db9569a3d6c0253beb26465c722245a4505 (patch)
treeae39ac59506781bc8b858f16f1e2f2ff91f3992a /test
parent460c9f3943454ecb1679746b363ddbc5b903849b (diff)
parentadd4cde68cd9b5c52db8a312a34591a8bb61d8fa (diff)
downloaddexon-solidity-55752db9569a3d6c0253beb26465c722245a4505.tar
dexon-solidity-55752db9569a3d6c0253beb26465c722245a4505.tar.gz
dexon-solidity-55752db9569a3d6c0253beb26465c722245a4505.tar.bz2
dexon-solidity-55752db9569a3d6c0253beb26465c722245a4505.tar.lz
dexon-solidity-55752db9569a3d6c0253beb26465c722245a4505.tar.xz
dexon-solidity-55752db9569a3d6c0253beb26465c722245a4505.tar.zst
dexon-solidity-55752db9569a3d6c0253beb26465c722245a4505.zip
Merge pull request #3342 from ethereum/jsonio-sourcelocation
Populate the sourceLocation field properly in standard JSON on errors
Diffstat (limited to 'test')
-rw-r--r--test/libsolidity/StandardCompiler.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/libsolidity/StandardCompiler.cpp b/test/libsolidity/StandardCompiler.cpp
index 091207e8..dd0478c5 100644
--- a/test/libsolidity/StandardCompiler.cpp
+++ b/test/libsolidity/StandardCompiler.cpp
@@ -234,6 +234,46 @@ BOOST_AUTO_TEST_CASE(basic_compilation)
);
}
+BOOST_AUTO_TEST_CASE(compilation_error)
+{
+ char const* input = R"(
+ {
+ "language": "Solidity",
+ "settings": {
+ "outputSelection": {
+ "fileA": {
+ "A": [
+ "abi"
+ ]
+ }
+ }
+ },
+ "sources": {
+ "fileA": {
+ "content": "contract A { function }"
+ }
+ }
+ }
+ )";
+ Json::Value result = compile(input);
+ BOOST_CHECK(result.isMember("errors"));
+ BOOST_CHECK(result["errors"].size() >= 1);
+ for (auto const& error: result["errors"])
+ {
+ BOOST_REQUIRE(error.isObject());
+ BOOST_REQUIRE(error["message"].isString());
+ if (error["message"].asString().find("pre-release compiler") == string::npos)
+ {
+ BOOST_CHECK_EQUAL(
+ dev::jsonCompactPrint(error),
+ "{\"component\":\"general\",\"formattedMessage\":\"fileA:1:23: ParserError: Expected identifier, got 'RBrace'\\n"
+ "contract A { function }\\n ^\\n\",\"message\":\"Expected identifier, got 'RBrace'\","
+ "\"severity\":\"error\",\"sourceLocation\":{\"end\":22,\"file\":\"fileA\",\"start\":22},\"type\":\"ParserError\"}"
+ );
+ }
+ }
+}
+
BOOST_AUTO_TEST_CASE(output_selection_explicit)
{
char const* input = R"(