aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorchriseth <chris@ethereum.org>2017-07-14 17:42:04 +0800
committerGitHub <noreply@github.com>2017-07-14 17:42:04 +0800
commitb61f744dd9c5e954f53deb781c7e408da55dcda1 (patch)
tree8415b6d1950847ccd87f343f959de7d79faca80a /test
parent7c97546f44dae5b3996678d69f25b9da1a4eb2ab (diff)
parentaec3eabdda3ba36ed33746fae9ed9eba02286fd4 (diff)
downloaddexon-solidity-b61f744dd9c5e954f53deb781c7e408da55dcda1.tar
dexon-solidity-b61f744dd9c5e954f53deb781c7e408da55dcda1.tar.gz
dexon-solidity-b61f744dd9c5e954f53deb781c7e408da55dcda1.tar.bz2
dexon-solidity-b61f744dd9c5e954f53deb781c7e408da55dcda1.tar.lz
dexon-solidity-b61f744dd9c5e954f53deb781c7e408da55dcda1.tar.xz
dexon-solidity-b61f744dd9c5e954f53deb781c7e408da55dcda1.tar.zst
dexon-solidity-b61f744dd9c5e954f53deb781c7e408da55dcda1.zip
Merge pull request #2565 from ethereum/literal-string-error
Include types in explicit conversion error message
Diffstat (limited to 'test')
-rw-r--r--test/libsolidity/SolidityNameAndTypeResolution.cpp37
1 files changed, 37 insertions, 0 deletions
diff --git a/test/libsolidity/SolidityNameAndTypeResolution.cpp b/test/libsolidity/SolidityNameAndTypeResolution.cpp
index 36b48cfd..cb39101e 100644
--- a/test/libsolidity/SolidityNameAndTypeResolution.cpp
+++ b/test/libsolidity/SolidityNameAndTypeResolution.cpp
@@ -6322,6 +6322,43 @@ BOOST_AUTO_TEST_CASE(too_large_arrays_for_calldata)
CHECK_ERROR(text, TypeError, "Array is too large to be encoded as calldata.");
}
+BOOST_AUTO_TEST_CASE(explicit_literal_to_storage_string)
+{
+ char const* text = R"(
+ contract C {
+ function f() {
+ string memory x = "abc";
+ x;
+ }
+ }
+ )";
+ CHECK_SUCCESS_NO_WARNINGS(text);
+ text = R"(
+ contract C {
+ function f() {
+ string storage x = "abc";
+ }
+ }
+ )";
+ CHECK_ERROR(text, TypeError, "Type literal_string \"abc\" is not implicitly convertible to expected type string storage pointer.");
+ text = R"(
+ contract C {
+ function f() {
+ string x = "abc";
+ }
+ }
+ )";
+ CHECK_ERROR(text, TypeError, "Type literal_string \"abc\" is not implicitly convertible to expected type string storage pointer.");
+ text = R"(
+ contract C {
+ function f() {
+ string("abc");
+ }
+ }
+ )";
+ CHECK_ERROR(text, TypeError, "Explicit type conversion not allowed from \"literal_string \"abc\"\" to \"string storage pointer\"");
+}
+
BOOST_AUTO_TEST_SUITE_END()
}