diff options
-rw-r--r-- | .travis.yml | 43 | ||||
-rw-r--r-- | README.md | 15 | ||||
-rw-r--r-- | appveyor.yml | 15 | ||||
-rw-r--r-- | docs/installing-solidity.rst | 2 | ||||
-rw-r--r-- | docs/miscellaneous.rst | 3 | ||||
-rw-r--r-- | libsolidity/ast/ASTJsonConverter.cpp | 3 | ||||
-rw-r--r-- | libsolidity/ast/Types.cpp | 5 | ||||
-rw-r--r-- | libsolidity/codegen/ExpressionCompiler.cpp | 3 | ||||
-rw-r--r-- | libsolidity/grammar.txt | 2 | ||||
-rw-r--r-- | libsolidity/parsing/Token.h | 4 | ||||
-rwxr-xr-x | scripts/travis-emscripten/publish_binary.sh | 9 | ||||
-rw-r--r-- | test/libsolidity/SolidityScanner.cpp | 6 |
12 files changed, 72 insertions, 38 deletions
diff --git a/.travis.yml b/.travis.yml index c116f1b2..19483bd5 100644 --- a/.travis.yml +++ b/.travis.yml @@ -26,10 +26,20 @@ language: cpp branches: + # We need to whitelist the branches which we want to have "push" automation. + # Pull requests will be built whatever the branches are for them. only: - develop - release - - standalone + + # This blacklisting is an (unsuccessful) attempt to filter out some currently + # unexplained 'untagged' builds which are endemic in bobsummerwill/cpp-ethereum + # in my 'merge_repos' branch. I suspect that these are rogue tags which + # are being created by Appveyor as part of the Github Releases flow, but + # I haven't pinned it down yet. + # + # See https://github.com/ethereum/webthree-umbrella/issues/697 + # See https://twitter.com/BobSummerwill/status/762802834857340929 except: - /develop-v[0-9]/ matrix: @@ -137,11 +147,40 @@ deploy: # which generates ZIPs per commit. We are in agreement that # generating ZIPs per commit for the develop branch is probably # just noise, so we only run this deployment target on 'release'. + # + # Unlike the Appveyor GitHub Releases target, the support in TravisCI + # seemingly doesn't provide a means for passing a description, tag, etc. + # In practice, we are letting the Appveyor CI do all that stuff, and + # then this deployment flow just seems to find that most recent tag, + # and just add our Linux and macOS ZIPs into the same tag, which is + # what we want to happen. But is very accidental and brittle-looking. + # + # The 'skip_cleanup' stops the workspace being cleaned out prior to + # generation of the artifacts. Strange that we should explicitly + # need to do that, but we do. + # + # Tokens in TravisCI can be generated a few different ways. Bob had + # success using the 'travis' gem, and then using that gem to + # create/edit this .travis.yml file, and then cut-and-pasting the + # good bits back out of what it generated. The gem changes all the + # whitespace and deletes comments, so cannot be used as-is. But + # it does generate an appropriate auth token. + # + # TODO - I do not know if the api_key below which work correctly + # for ethereum/solidity. I suspect not, for the same reason as + # my auth token does not work for Appveyor. I don't have enough + # permissions to enable this myself. Christian should be able to. + # + # See https://docs.travis-ci.com/user/deployment/releases + # See https://blog.travis-ci.com/2013-01-28-token-token-token/ + # See https://github.com/ethereum/webthree-umbrella/issues/658 + # - provider: releases api_key: - secure: mGeDrlCbhPNQVqrk5wSqFZe/7C5HUIBWcZECJcFrEldN6ELj3a8mhDX9EWebidyFmZsf3ipKVMycJtXZHlH2kVZ0nZdRulq4bYhLiUFRaFQCHMW35dml5mxO/FPp+jhhZaylDUx+cI6AULbj8DvNFqSCfjx8qimRhJjRY4JHeG71N6g5+LU2/dA01D4Y97BUbQ5dYcmEyuEsriSpXOElIQIIv3+Q6MJNnLzxUA6EXsp4Qt3Qf3R1+EkI/RWOPbQsddpFNJBcBNOscCUFSZV3+ZK9E2RyHbPaL+Da4aJKVpgD7X1TFudq4PClMUTkg8CuJh/kvy9wkpaWyYHbLGQqu1vQ+NQ+vlTAKf8U+1xhC1IkX6nA+g4TlRksZRltRhpkBPnFoaQQGjD9eYyT1V/Htrn8Y/VGbYPBVa0GcEYXG5pDCBPz91RBpYwDcyUg9DEPNI6zYfQY8jA8xqtFwPX79Y22MDXIKhBskK00geuzh7Npy5Rnh4fLqVKMlffvYx3kwp444EFWtQ5jxbRCym2Th6EldkOM8Kble1JvixQtVb4s+DpTuwHCTrXZhwMuJpmwgRx52zyIsGrBPF3MOmdlwl+l0TD8UEJXt0JM1XSF1AROyYwXKDZQ9Qt4sd9ZKSWWaLJMEJf4kkZWYgTEI/FhOWlfshQCt8Z9S9r4fq2ywoo= + secure: PWH37xVBCF0XiSjl+eH7XIdkrfxZXjzvqF4PiBOnD3VnFz+odrdnIwBmCeBYTHTWF8efpp8fmzWJk2UVq1JcpyZiC+SVxO8dx91W2ia1a+wKrEQuDgkUrZBkl5IQNCv0QS81DDQhliyZEaYh8wHO/7RReyMpGpw2U2u85WkFiZ+LdlHEZPfzUeh9lxQ9n8qwFL8Rja+Q05d4cQ8zaVEtofJJT4T6DUWhc3TzuxDYxOmjwg37rC9CkGSLn6VadSh8b3j5R0SZupFsAEvBL/imBLP9r9ewoo7o4p6By3jwiIgH9yNg7LM618xbffcNaYF/KtLBi9uPHfqF7hRD4PlECz+D0PR78nQItOX5HKm1QMg5kCnghRVCA0IVjpV5fiYQnMLM7dCRv34I5b3zLpa69wQ/GLYB2FViqNUfvPeiZTEeIJ2OmATlFx8AH2JoqpY1XJknWb35+vMfa8LSiJJW++SLWeV+ncC92hrvyZ1cy3trepRRZIfyYepxHifnfdWMkddQUJk5b2WS5Fy/TJLZNPeombnpvRhUC38dsYItarKeXTc6k4oADCEDZ2rgGIcEiqRxXV11Y5xHJekLDWzUs+YJNcCuL4pnAP//LOnbnH2w9rLpwhQYSl0anCd097NivAXQJXO2JI/byIYz1kiCVQWnW6EM8+72mLOklf/Qr8k= file: $TRAVIS_BUILD_DIR/solidity-$ZIP_SUFFIX.zip skip_cleanup: true on: repo: ethereum/solidity branch: release + condition: $JOB != docs && $JOB != emscripten @@ -1,23 +1,20 @@ # The Solidity Contract-Oriented Programming Language [![Join the chat at https://gitter.im/ethereum/solidity](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/ethereum/solidity?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -## Useful links -To get started you can find a basic introduction to the language in the [Solidity Documentation](https://solidity.readthedocs.org). +## Useful links +To get started you can find an introduction to the language in the [Solidity documentation](https://solidity.readthedocs.org). In the documentation, you can find [code examples](http://solidity.readthedocs.io/en/latest/solidity-by-example.html) as well as [a reference](http://solidity.readthedocs.io/en/latest/solidity-in-depth.html) of the syntax and details on how to write smart contracts. You can start using [Solidity in your browser](https://ethereum.github.io/browser-solidity/) with no need to download or compile anything. -[Changelog](https://github.com/ethereum/solidity/blob/develop/Changelog.md) - -The [Solidity Features](https://github.com/ethereum/wiki/wiki/Solidity-Features) page contains a list of already completed Solidity feature stories with explanations and demonstrations, it is being updated continuously. More technical information you can find in the [Pivotal Tracker](https://www.pivotaltracker.com/n/projects/1189488). +The changelog for this project can be found [here](https://github.com/ethereum/solidity/blob/develop/Changelog.md). -Solidity is still under development. So please do not hesitate and open an [issue in github](https://github.com/ethereum/solidity/issues) if you encounter anything strange. +Solidity is still under development. So please do not hesitate and open an [issue in GitHub](https://github.com/ethereum/solidity/issues) if you encounter anything strange. ## Building - -See the [Wiki](https://github.com/ethereum/webthree-umbrella/wiki) for build instructions, compatibility information and build tips. +See the [Solidity documentation](http://solidity.readthedocs.io/en/latest/installing-solidity.html#building-from-source) for build instructions. ## How to Contribute - This repository uses the same [coding style](https://github.com/ethereum/webthree-umbrella/blob/develop/CodingStandards.txt) as all of the cpp-ethereum projects. Please try to align with us in the gitter channel before making larger changes. + Any contributions are welcome! diff --git a/appveyor.yml b/appveyor.yml index 6f1836bb..82751373 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -27,8 +27,6 @@ # (c) 2016 cpp-ethereum contributors. #------------------------------------------------------------------------------ -version: 0.3.5.{build} -skip_tags: true os: Visual Studio 2015 configuration: - RelWithDebInfo @@ -64,15 +62,22 @@ artifacts: # We are in agreement that generating ZIPs per commit for the develop # branch is probably just noise, so we only run this deployment target # on 'release'. +# +# See https://www.appveyor.com/docs/deployment/github for information +# on GitHub Releases in Appveyor. +# +# You need to generate a GitHub personal access token for Appveyor +# See https://github.com/settings/tokens for more information on that. +# The token you generate there (in an encrypted form) is what is +# passed to this deployment target in the 'auth_token' parameter +# below. deploy: - release: solidity-develop-v$(APPVEYOR_BUILD_VERSION) - tag: develop-v$(APPVEYOR_BUILD_VERSION) description: 'Development build of solidity at commit $(APPVEYOR_REPO_COMMIT).\n\n$(APPVEYOR_REPO_COMMIT_MESSAGE)\n\nCommitted by $(APPVEYOR_REPO_COMMIT_AUTHOR), $(APPVEYOR_REPO_COMMIT_TIMESTAMP).' prerelease: true provider: GitHub auth_token: - secure: yukM9mHUbzuZSS5WSBLKSW0yGJerJEqAXkFhDhSHBBcKJE7GAryjQsdO9Kxh3yRv + secure: HPjiugbDSCsEFTphj/qwHuSw80/BV1xWoSvj95CPmtb16Ukh2VQbLVB7iFtZSans artifact: solidity-windows-zip on: branch: release diff --git a/docs/installing-solidity.rst b/docs/installing-solidity.rst index 33bba29b..47388c25 100644 --- a/docs/installing-solidity.rst +++ b/docs/installing-solidity.rst @@ -61,7 +61,7 @@ Set up Homebrew: brew upgrade brew install boost --c++11 # this takes a while - brew install cmake cryptopp gmp + brew install cmake cryptopp gmp jsoncpp Ubuntu Trusty (14.04) --------------------- diff --git a/docs/miscellaneous.rst b/docs/miscellaneous.rst index 304fce14..ca0cf593 100644 --- a/docs/miscellaneous.rst +++ b/docs/miscellaneous.rst @@ -228,7 +228,7 @@ The following is the order of precedence for operators, listed in order of evalu + +-------------------------------------+--------------------------------------------+ | | Unary plus and minus | ``+``, ``-`` | + +-------------------------------------+--------------------------------------------+ -| | Unary operations | ``after``, ``delete`` | +| | Unary operations | ``delete`` | + +-------------------------------------+--------------------------------------------+ | | Logical NOT | ``!`` | + +-------------------------------------+--------------------------------------------+ @@ -321,4 +321,3 @@ Modifiers - ``constant`` for functions: Disallows modification of state - this is not enforced yet. - ``anonymous`` for events: Does not store event signature as topic. - ``indexed`` for event parameters: Stores the parameter as topic. - diff --git a/libsolidity/ast/ASTJsonConverter.cpp b/libsolidity/ast/ASTJsonConverter.cpp index fc43976d..c4134f4e 100644 --- a/libsolidity/ast/ASTJsonConverter.cpp +++ b/libsolidity/ast/ASTJsonConverter.cpp @@ -362,6 +362,7 @@ void ASTJsonConverter::endVisit(FunctionDefinition const&) void ASTJsonConverter::endVisit(VariableDeclaration const&) { + goUp(); } void ASTJsonConverter::endVisit(TypeName const&) @@ -378,10 +379,12 @@ void ASTJsonConverter::endVisit(UserDefinedTypeName const&) void ASTJsonConverter::endVisit(Mapping const&) { + goUp(); } void ASTJsonConverter::endVisit(InlineAssembly const&) { + goUp(); } void ASTJsonConverter::endVisit(Block const&) diff --git a/libsolidity/ast/Types.cpp b/libsolidity/ast/Types.cpp index 28f7e1b7..d86a2caf 100644 --- a/libsolidity/ast/Types.cpp +++ b/libsolidity/ast/Types.cpp @@ -306,7 +306,7 @@ TypePointer IntegerType::unaryOperatorResult(Token::Value _operator) const // for non-address integers, we allow +, -, ++ and -- else if (_operator == Token::Add || _operator == Token::Sub || _operator == Token::Inc || _operator == Token::Dec || - _operator == Token::After || _operator == Token::BitNot) + _operator == Token::BitNot) return shared_from_this(); else return TypePointer(); @@ -416,8 +416,7 @@ TypePointer FixedPointType::unaryOperatorResult(Token::Value _operator) const _operator == Token::Add || _operator == Token::Sub || _operator == Token::Inc || - _operator == Token::Dec || - _operator == Token::After + _operator == Token::Dec ) return shared_from_this(); else diff --git a/libsolidity/codegen/ExpressionCompiler.cpp b/libsolidity/codegen/ExpressionCompiler.cpp index 80009a90..1d574556 100644 --- a/libsolidity/codegen/ExpressionCompiler.cpp +++ b/libsolidity/codegen/ExpressionCompiler.cpp @@ -297,9 +297,6 @@ bool ExpressionCompiler::visit(UnaryOperation const& _unaryOperation) case Token::BitNot: // ~ m_context << Instruction::NOT; break; - case Token::After: // after - m_context << Instruction::TIMESTAMP << Instruction::ADD; - break; case Token::Delete: // delete solAssert(!!m_currentLValue, "LValue not retrieved."); m_currentLValue->setToZero(_unaryOperation.location()); diff --git a/libsolidity/grammar.txt b/libsolidity/grammar.txt index 6d92fc59..0d1f68a6 100644 --- a/libsolidity/grammar.txt +++ b/libsolidity/grammar.txt @@ -56,7 +56,7 @@ VariableDefinition = VariableDeclaration ( '=' Expression )? // Precedence by order (see github.com/ethereum/solidity/pull/732) Expression = ( Expression ('++' | '--') | FunctionCall | IndexAccess | MemberAccess | '(' Expression ')' ) - | ('!' | '~' | 'after' | 'delete' | '++' | '--' | '+' | '-') Expression + | ('!' | '~' | 'delete' | '++' | '--' | '+' | '-') Expression | Expression '**' Expression | Expression ('*' | '/' | '%') Expression | Expression ('+' | '-') Expression diff --git a/libsolidity/parsing/Token.h b/libsolidity/parsing/Token.h index 581df3a5..5ac7aedd 100644 --- a/libsolidity/parsing/Token.h +++ b/libsolidity/parsing/Token.h @@ -185,7 +185,6 @@ namespace solidity K(SubDay, "days", 0) \ K(SubWeek, "weeks", 0) \ K(SubYear, "years", 0) \ - K(After, "after", 0) \ /* type keywords*/ \ K(Int, "int", 0) \ K(UInt, "uint", 0) \ @@ -215,6 +214,7 @@ namespace solidity T(Identifier, NULL, 0) \ \ /* Keywords reserved for future use. */ \ + K(After, "after", 0) \ K(As, "as", 0) \ K(Case, "case", 0) \ K(Catch, "catch", 0) \ @@ -277,7 +277,7 @@ public: static bool isBitOp(Value op) { return (BitOr <= op && op <= BitAnd) || op == BitNot; } static bool isBooleanOp(Value op) { return (Or <= op && op <= And) || op == Not; } - static bool isUnaryOp(Value op) { return (Not <= op && op <= Delete) || op == Add || op == Sub || op == After; } + static bool isUnaryOp(Value op) { return (Not <= op && op <= Delete) || op == Add || op == Sub; } static bool isCountOp(Value op) { return op == Inc || op == Dec; } static bool isShiftOp(Value op) { return (SHL <= op) && (op <= SHR); } static bool isVisibilitySpecifier(Value op) { return isVariableVisibilitySpecifier(op) || op == External; } diff --git a/scripts/travis-emscripten/publish_binary.sh b/scripts/travis-emscripten/publish_binary.sh index f44b1210..ac1fa95f 100755 --- a/scripts/travis-emscripten/publish_binary.sh +++ b/scripts/travis-emscripten/publish_binary.sh @@ -52,10 +52,11 @@ git config user.email "chris@ethereum.org" git checkout -B gh-pages origin/gh-pages git clean -f -d -x # We only want one release per day and we do not want to push the same commit twice. -for f in ./bin/soljson-"$VER-$DATE"-*.js ./bin/soljson-*-"$COMMIT.js" -do - [ -f "$f" ] && echo "Not publishing, we already published this version today." && exit 0 -done +if ls ./bin/soljson-"$VER-$DATE"-*.js || ls ./bin/soljson-*-"$COMMIT.js" +then + echo "Not publishing, we already published this version today." + exit 0 +fi # This file is assumed to be the product of the build_emscripten.sh script. cp ../soljson.js ./bin/"soljson-$VER-$DATE-$COMMIT.js" diff --git a/test/libsolidity/SolidityScanner.cpp b/test/libsolidity/SolidityScanner.cpp index 4443b9f6..624614d2 100644 --- a/test/libsolidity/SolidityScanner.cpp +++ b/test/libsolidity/SolidityScanner.cpp @@ -275,12 +275,6 @@ BOOST_AUTO_TEST_CASE(time_subdenominations) BOOST_CHECK_EQUAL(scanner.next(), Token::SubYear); } -BOOST_AUTO_TEST_CASE(time_after) -{ - Scanner scanner(CharStream("after 1")); - BOOST_CHECK_EQUAL(scanner.currentToken(), Token::After); -} - BOOST_AUTO_TEST_CASE(empty_comment) { Scanner scanner(CharStream("//\ncontract{}")); |