aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.travis.yml43
-rw-r--r--README.md15
-rw-r--r--appveyor.yml15
-rw-r--r--docs/installing-solidity.rst2
-rw-r--r--docs/miscellaneous.rst3
-rw-r--r--libsolidity/ast/ASTJsonConverter.cpp3
-rw-r--r--libsolidity/ast/Types.cpp5
-rw-r--r--libsolidity/codegen/ExpressionCompiler.cpp3
-rw-r--r--libsolidity/grammar.txt2
-rw-r--r--libsolidity/parsing/Token.h4
-rwxr-xr-xscripts/travis-emscripten/publish_binary.sh9
-rw-r--r--test/libsolidity/SolidityScanner.cpp6
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
diff --git a/README.md b/README.md
index 9eaae4dd..b2bf92f2 100644
--- a/README.md
+++ b/README.md
@@ -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{}"));