diff options
-rw-r--r-- | circle.yml | 85 | ||||
-rw-r--r-- | libsolidity/analysis/ReferencesResolver.cpp | 5 | ||||
-rwxr-xr-x | scripts/test_emscripten.sh | 29 | ||||
-rw-r--r-- | test/libsolidity/SolidityNameAndTypeResolution.cpp | 10 | ||||
-rwxr-xr-x | test/solcjsTests.sh | 63 |
5 files changed, 146 insertions, 46 deletions
@@ -6,21 +6,6 @@ jobs: steps: - checkout - run: - name: Install external tests deps - command: | - apt-get -qq update - apt-get -qy install netcat curl - curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | NVM_DIR=/usr/local/nvm bash - - run: - name: Test external tests deps - command: | - export NVM_DIR="/usr/local/nvm" - [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm - nvm --version - nvm install 6 - node --version - npm --version - - run: name: Init submodules command: | git submodule update --init @@ -40,14 +25,65 @@ jobs: key: *boost-cache-key paths: - boost_1_57_0 + - store_artifacts: + path: build/libsolc/soljson.js + destination: soljson.js + - run: mkdir -p workspace + - run: cp build/libsolc/soljson.js workspace/soljson.js + - run: scripts/get_version.sh > workspace/version.txt + - persist_to_workspace: + root: workspace + paths: + - soljson.js + - version.txt + test_emscripten_solcjs: + docker: + - image: trzeci/emscripten:sdk-tag-1.37.21-64bit + steps: + - checkout + - attach_workspace: + at: /tmp/workspace - run: - name: Test + name: Install external tests deps + command: | + apt-get -qq update + apt-get -qy install netcat curl + curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | NVM_DIR=/usr/local/nvm bash + export NVM_DIR="/usr/local/nvm" + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm + nvm --version + nvm install 6 + node --version + npm --version + - run: + name: Test solcjs command: | . /usr/local/nvm/nvm.sh - scripts/test_emscripten.sh - - store_artifacts: - path: build/solc/soljson.js - destination: soljson.js + test/solcjsTests.sh /tmp/workspace/soljson.js $(cat /tmp/workspace/version.txt) + test_emscripten_external: + docker: + - image: trzeci/emscripten:sdk-tag-1.37.21-64bit + steps: + - checkout + - attach_workspace: + at: /tmp/workspace + - run: + name: Install external tests deps + command: | + apt-get -qq update + apt-get -qy install netcat curl + curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.4/install.sh | NVM_DIR=/usr/local/nvm bash + export NVM_DIR="/usr/local/nvm" + [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm + nvm --version + nvm install 6 + node --version + npm --version + - run: + name: External tests + command: | + . /usr/local/nvm/nvm.sh + test/externalTests.sh /tmp/workspace/soljson.js build_x86: docker: - image: buildpack-deps:artful @@ -90,10 +126,19 @@ jobs: command: build/test/soltest --logger=JUNIT,test_suite,test_results/opt.xml -- --optimize --no-ipc - store_test_results: path: test_results/ + - store_artifacts: + path: build/solc/solc + destination: solc workflows: version: 2 build_all: jobs: - build_emscripten + - test_emscripten_solcjs: + requires: + - build_emscripten + - test_emscripten_external: + requires: + - build_emscripten - build_x86 diff --git a/libsolidity/analysis/ReferencesResolver.cpp b/libsolidity/analysis/ReferencesResolver.cpp index 30b06615..451d6c93 100644 --- a/libsolidity/analysis/ReferencesResolver.cpp +++ b/libsolidity/analysis/ReferencesResolver.cpp @@ -153,6 +153,11 @@ void ReferencesResolver::endVisit(Mapping const& _typeName) void ReferencesResolver::endVisit(ArrayTypeName const& _typeName) { TypePointer baseType = _typeName.baseType().annotation().type; + if (!baseType) + { + solAssert(!m_errorReporter.errors().empty(), ""); + return; + } if (baseType->storageBytes() == 0) fatalTypeError(_typeName.baseType().location(), "Illegal base type of storage size zero for array."); if (Expression const* length = _typeName.length()) diff --git a/scripts/test_emscripten.sh b/scripts/test_emscripten.sh index b659e5e5..1804f23a 100755 --- a/scripts/test_emscripten.sh +++ b/scripts/test_emscripten.sh @@ -30,32 +30,9 @@ set -e REPO_ROOT=$(cd $(dirname "$0")/.. && pwd) SOLJSON="$REPO_ROOT/build/libsolc/soljson.js" +VERSION=$("$REPO_ROOT"/scripts/get_version.sh) -DIR=$(mktemp -d) -( - echo "Preparing solc-js..." - git clone --depth 1 https://github.com/ethereum/solc-js "$DIR" - cd "$DIR" - # disable "prepublish" script which downloads the latest version - # (we will replace it anyway and it is often incorrectly cached - # on travis) - npm config set script.prepublish '' - npm install - - # Replace soljson with current build - echo "Replacing soljson.js" - rm -f soljson.js - cp "$SOLJSON" soljson.js - - # Update version (needed for some tests) - VERSION=$("$REPO_ROOT/scripts/get_version.sh") - echo "Updating package.json to version $VERSION" - npm version --no-git-tag-version $VERSION - - echo "Running solc-js tests..." - npm run test -) -rm -rf "$DIR" - +echo "Running solcjs tests...." +"$REPO_ROOT/test/solcjsTests.sh" "$SOLJSON" "$VERSION" echo "Running external tests...." "$REPO_ROOT/test/externalTests.sh" "$SOLJSON" diff --git a/test/libsolidity/SolidityNameAndTypeResolution.cpp b/test/libsolidity/SolidityNameAndTypeResolution.cpp index e8405281..ee6a0633 100644 --- a/test/libsolidity/SolidityNameAndTypeResolution.cpp +++ b/test/libsolidity/SolidityNameAndTypeResolution.cpp @@ -2196,6 +2196,16 @@ BOOST_AUTO_TEST_CASE(array_copy_with_different_types_dynamic_static) CHECK_ERROR(text, TypeError, "Type uint256[] storage ref is not implicitly convertible to expected type uint256[80] storage ref."); } +BOOST_AUTO_TEST_CASE(array_of_undeclared_type) +{ + char const* text = R"( + contract c { + a[] public foo; + } + )"; + CHECK_ERROR(text, DeclarationError, "Identifier not found or not unique."); +} + BOOST_AUTO_TEST_CASE(storage_variable_initialization_with_incorrect_type_int) { char const* text = R"( diff --git a/test/solcjsTests.sh b/test/solcjsTests.sh new file mode 100755 index 00000000..27797cb4 --- /dev/null +++ b/test/solcjsTests.sh @@ -0,0 +1,63 @@ +#!/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 + +if [ ! -f "$1" -o -z "$2" ] +then + echo "Usage: $0 <path to soljson.js> <version>" + exit 1 +fi + +SOLJSON="$1" +VERSION="$2" + +DIR=$(mktemp -d) +( + echo "Preparing solc-js..." + git clone --depth 1 https://github.com/ethereum/solc-js "$DIR" + cd "$DIR" + # disable "prepublish" script which downloads the latest version + # (we will replace it anyway and it is often incorrectly cached + # on travis) + npm config set script.prepublish '' + npm install + + # Replace soljson with current build + echo "Replacing soljson.js" + rm -f soljson.js + cp "$SOLJSON" soljson.js + + # Update version (needed for some tests) + echo "Updating package.json to version $VERSION" + npm version --no-git-tag-version $VERSION + + echo "Running solc-js tests..." + npm run test +) +rm -rf "$DIR" |