diff options
-rw-r--r-- | docs/contracts.rst | 1 | ||||
-rw-r--r-- | docs/utils/SolidityLexer.py | 2 | ||||
-rw-r--r-- | libsolidity/analysis/DocStringAnalyser.cpp | 12 | ||||
-rw-r--r-- | libsolidity/analysis/DocStringAnalyser.h | 2 | ||||
-rw-r--r-- | libsolidity/interface/ErrorReporter.cpp | 19 | ||||
-rw-r--r-- | libsolidity/interface/ErrorReporter.h | 4 | ||||
-rw-r--r-- | libsolidity/interface/Exceptions.cpp | 3 | ||||
-rw-r--r-- | libsolidity/interface/Exceptions.h | 1 | ||||
-rwxr-xr-x | scripts/create_source_tarball.sh | 2 | ||||
-rwxr-xr-x | scripts/docker_deploy.sh | 2 | ||||
-rwxr-xr-x | scripts/get_version.sh | 31 | ||||
-rwxr-xr-x | scripts/release_ppa.sh | 8 | ||||
-rwxr-xr-x | scripts/test_emscripten.sh | 15 | ||||
-rw-r--r-- | solc/jsonCompiler.cpp | 4 | ||||
-rw-r--r-- | test/libsolidity/SolidityEndToEndTest.cpp | 44 |
15 files changed, 85 insertions, 65 deletions
diff --git a/docs/contracts.rst b/docs/contracts.rst index 356fa90d..e9ea1b3b 100644 --- a/docs/contracts.rst +++ b/docs/contracts.rst @@ -244,6 +244,7 @@ In the following example, ``D``, can call ``c.getData()`` to retrieve the value } .. index:: ! getter;function, ! function;getter +.. _getter_functions: Getter Functions ================ diff --git a/docs/utils/SolidityLexer.py b/docs/utils/SolidityLexer.py index 1dc99159..ef55c6a2 100644 --- a/docs/utils/SolidityLexer.py +++ b/docs/utils/SolidityLexer.py @@ -26,7 +26,7 @@ class SolidityLexer(RegexLexer): (r'/\*.*?\*/', Comment.Multiline) ], 'natspec': [ - (r'@author|@dev|@notice|@return|@param|@why3|@title', Keyword), + (r'@author|@dev|@notice|@return|@param|@title', Keyword), (r'.[^@*\n]*?', Comment.Special) ], 'docstringsingle': [ diff --git a/libsolidity/analysis/DocStringAnalyser.cpp b/libsolidity/analysis/DocStringAnalyser.cpp index 6a8fa08e..9a846b31 100644 --- a/libsolidity/analysis/DocStringAnalyser.cpp +++ b/libsolidity/analysis/DocStringAnalyser.cpp @@ -40,7 +40,7 @@ bool DocStringAnalyser::analyseDocStrings(SourceUnit const& _sourceUnit) bool DocStringAnalyser::visit(ContractDefinition const& _node) { - static const set<string> validTags = set<string>{"author", "title", "dev", "notice", "why3"}; + static const set<string> validTags = set<string>{"author", "title", "dev", "notice"}; parseDocStrings(_node, _node.annotation(), validTags, "contracts"); return true; @@ -66,16 +66,6 @@ bool DocStringAnalyser::visit(EventDefinition const& _node) return true; } -bool DocStringAnalyser::visitNode(ASTNode const& _node) -{ - if (auto node = dynamic_cast<Statement const*>(&_node)) - { - static const set<string> validTags = {"why3"}; - parseDocStrings(*node, node->annotation(), validTags, "statements"); - } - return true; -} - void DocStringAnalyser::handleCallable( CallableDeclaration const& _callable, Documented const& _node, diff --git a/libsolidity/analysis/DocStringAnalyser.h b/libsolidity/analysis/DocStringAnalyser.h index e871cb60..158b4060 100644 --- a/libsolidity/analysis/DocStringAnalyser.h +++ b/libsolidity/analysis/DocStringAnalyser.h @@ -48,8 +48,6 @@ private: virtual bool visit(ModifierDefinition const& _modifier) override; virtual bool visit(EventDefinition const& _event) override; - virtual bool visitNode(ASTNode const&) override; - void handleCallable( CallableDeclaration const& _callable, Documented const& _node, diff --git a/libsolidity/interface/ErrorReporter.cpp b/libsolidity/interface/ErrorReporter.cpp index 2cbb952c..6e2667a5 100644 --- a/libsolidity/interface/ErrorReporter.cpp +++ b/libsolidity/interface/ErrorReporter.cpp @@ -165,22 +165,3 @@ void ErrorReporter::docstringParsingError(string const& _description) _description ); } - -void ErrorReporter::why3TranslatorError(ASTNode const& _location, std::string const& _description) -{ - error( - Error::Type::Why3TranslatorError, - _location.location(), - _description - ); -} - -void ErrorReporter::fatalWhy3TranslatorError(ASTNode const& _location, std::string const& _description) -{ - fatalError( - Error::Type::Why3TranslatorError, - _location.location(), - _description - ); -} - diff --git a/libsolidity/interface/ErrorReporter.h b/libsolidity/interface/ErrorReporter.h index 83324446..e5605d24 100644 --- a/libsolidity/interface/ErrorReporter.h +++ b/libsolidity/interface/ErrorReporter.h @@ -79,10 +79,6 @@ public: void docstringParsingError(std::string const& _location); - void why3TranslatorError(ASTNode const& _location, std::string const& _description); - - void fatalWhy3TranslatorError(ASTNode const& _location, std::string const& _description); - ErrorList const& errors() const; void clear(); diff --git a/libsolidity/interface/Exceptions.cpp b/libsolidity/interface/Exceptions.cpp index deee92aa..9f2a2d06 100644 --- a/libsolidity/interface/Exceptions.cpp +++ b/libsolidity/interface/Exceptions.cpp @@ -46,9 +46,6 @@ Error::Error(Type _type, SourceLocation const& _location, string const& _descrip case Type::TypeError: m_typeName = "TypeError"; break; - case Type::Why3TranslatorError: - m_typeName = "Why3TranslatorError"; - break; case Type::Warning: m_typeName = "Warning"; break; diff --git a/libsolidity/interface/Exceptions.h b/libsolidity/interface/Exceptions.h index 5fdb8f11..09301b10 100644 --- a/libsolidity/interface/Exceptions.h +++ b/libsolidity/interface/Exceptions.h @@ -60,7 +60,6 @@ public: ParserError, TypeError, SyntaxError, - Why3TranslatorError, Warning }; diff --git a/scripts/create_source_tarball.sh b/scripts/create_source_tarball.sh index 9ca72c31..7339e106 100755 --- a/scripts/create_source_tarball.sh +++ b/scripts/create_source_tarball.sh @@ -6,7 +6,7 @@ set -e REPO_ROOT="$(dirname "$0")"/.. ( cd "$REPO_ROOT" - version=$(grep -oP "PROJECT_VERSION \"?\K[0-9.]+(?=\")"? CMakeLists.txt) + version=$(scripts/get_version.sh) commithash=$(git rev-parse --short=8 HEAD) commitdate=$(git show --format=%ci HEAD | head -n 1 | cut - -b1-10 | sed -e 's/-0?/./' | sed -e 's/-0?/./') diff --git a/scripts/docker_deploy.sh b/scripts/docker_deploy.sh index 0abde840..00705725 100755 --- a/scripts/docker_deploy.sh +++ b/scripts/docker_deploy.sh @@ -3,7 +3,7 @@ set -e docker login -u="$DOCKER_USERNAME" -p="$DOCKER_PASSWORD"; -version=$(grep -oP "PROJECT_VERSION \"?\K[0-9.]+(?=\")"? $(dirname "$0")/../CMakeLists.txt) +version=$($(dirname "$0")/get_version.sh) if [ "$TRAVIS_BRANCH" = "develop" ] then docker tag ethereum/solc:build ethereum/solc:nightly; diff --git a/scripts/get_version.sh b/scripts/get_version.sh new file mode 100755 index 00000000..3df2b4c4 --- /dev/null +++ b/scripts/get_version.sh @@ -0,0 +1,31 @@ +#!/usr/bin/env bash + +#------------------------------------------------------------------------------ +# Bash script to execute the Solidity tests. +# +# The documentation for solidity is hosted at: +# +# https://solidity.readthedocs.org +# +# ------------------------------------------------------------------------------ +# This file is part of solidity. +# +# solidity is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# solidity is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with solidity. If not, see <http://www.gnu.org/licenses/> +# +# (c) 2017 solidity contributors. +#------------------------------------------------------------------------------ + +set -e + +grep -oP "PROJECT_VERSION \"?\K[0-9.]+(?=\")"? $(dirname "$0")/../CMakeLists.txt diff --git a/scripts/release_ppa.sh b/scripts/release_ppa.sh index 5e01347b..7c9abecb 100755 --- a/scripts/release_ppa.sh +++ b/scripts/release_ppa.sh @@ -55,10 +55,10 @@ wget -O ./solc/deps/downloads/jsoncpp-1.7.7.tar.gz https://github.com/open-sourc # Determine version cd solc -version=`grep -oP "PROJECT_VERSION \"?\K[0-9.]+(?=\")"? CMakeLists.txt` -commithash=`git rev-parse --short=8 HEAD` -committimestamp=`git show --format=%ci HEAD | head -n 1` -commitdate=`git show --format=%ci HEAD | head -n 1 | cut - -b1-10 | sed -e 's/-0?/./' | sed -e 's/-0?/./'` +version=$($(dirname "$0")/get_version.sh) +commithash=$(git rev-parse --short=8 HEAD) +committimestamp=$(git show --format=%ci HEAD | head -n 1) +commitdate=$(git show --format=%ci HEAD | head -n 1 | cut - -b1-10 | sed -e 's/-0?/./' | sed -e 's/-0?/./') echo "$commithash" > commit_hash.txt if [ $branch = develop ] diff --git a/scripts/test_emscripten.sh b/scripts/test_emscripten.sh index 3bb16aa4..a2dbe61c 100755 --- a/scripts/test_emscripten.sh +++ b/scripts/test_emscripten.sh @@ -45,20 +45,7 @@ rm -f soljson.js cp ../solc/soljson.js soljson.js # Update version (needed for some tests) -echo "Creating version.c" -rm -f version version.c -cat <<EOF > version.c -#include <stdio.h> -#include "../include/solidity/BuildInfo.h" -int main(int argc, char **argv) { - printf(ETH_PROJECT_VERSION); - return 0; -} -EOF -echo "Compiling version.c" -gcc -o version version.c -echo "Running version" -VERSION=`./version` +VERSION=$(../../scripts/get_version.sh) echo "Updating package.json to version $VERSION" npm version $VERSION diff --git a/solc/jsonCompiler.cpp b/solc/jsonCompiler.cpp index 1d31ea30..adf991d6 100644 --- a/solc/jsonCompiler.cpp +++ b/solc/jsonCompiler.cpp @@ -164,10 +164,6 @@ string compile(StringMap const& _sources, bool _optimize, CStyleReadFileCallback // "srcmapRuntime" = "0:1:2", // "assembly" = {} // } - // }, - // "formal": { - // "errors": [ "Error 1" ], - // "why3": "why3 source" // } // } Json::Value output = Json::objectValue; diff --git a/test/libsolidity/SolidityEndToEndTest.cpp b/test/libsolidity/SolidityEndToEndTest.cpp index da725581..a6c01283 100644 --- a/test/libsolidity/SolidityEndToEndTest.cpp +++ b/test/libsolidity/SolidityEndToEndTest.cpp @@ -3702,6 +3702,50 @@ BOOST_AUTO_TEST_CASE(enum_explicit_overflow) BOOST_CHECK(callContractFunction("getChoiceExp(uint256)", 0) == encodeArgs(0)); } +BOOST_AUTO_TEST_CASE(storing_invalid_boolean) +{ + char const* sourceCode = R"( + contract C { + event Ev(bool); + bool public perm; + function set() returns(uint) { + bool tmp; + assembly { + tmp := 5 + } + perm = tmp; + return 1; + } + function ret() returns(bool) { + bool tmp; + assembly { + tmp := 5 + } + return tmp; + } + function ev() returns(uint) { + bool tmp; + assembly { + tmp := 5 + } + Ev(tmp); + return 1; + } + } + )"; + compileAndRun(sourceCode); + BOOST_CHECK(callContractFunction("set()") == encodeArgs(1)); + BOOST_CHECK(callContractFunction("perm()") == encodeArgs(1)); + BOOST_CHECK(callContractFunction("ret()") == encodeArgs(1)); + BOOST_CHECK(callContractFunction("ev()") == encodeArgs(1)); + BOOST_REQUIRE_EQUAL(m_logs.size(), 1); + BOOST_CHECK_EQUAL(m_logs[0].address, m_contractAddress); + BOOST_CHECK(m_logs[0].data == encodeArgs(1)); + BOOST_REQUIRE_EQUAL(m_logs[0].topics.size(), 1); + BOOST_CHECK_EQUAL(m_logs[0].topics[0], dev::keccak256(string("Ev(bool)"))); +} + + BOOST_AUTO_TEST_CASE(using_contract_enums_with_explicit_contract_name) { char const* sourceCode = R"( |