aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlex Beregszaszi <alex@rtfs.hu>2017-04-27 00:12:26 +0800
committerAlex Beregszaszi <alex@rtfs.hu>2017-04-27 17:08:02 +0800
commit35f1cf92dbc6082b675e41e184aefe3b24325918 (patch)
treed5300dd01e397c5afb8ab892181bc295fb12a3b0
parent2c1fb46bc341d9e44074af23cd4eadd3a9f732c5 (diff)
downloaddexon-solidity-35f1cf92dbc6082b675e41e184aefe3b24325918.tar.gz
dexon-solidity-35f1cf92dbc6082b675e41e184aefe3b24325918.tar.zst
dexon-solidity-35f1cf92dbc6082b675e41e184aefe3b24325918.zip
Remove parentheses from around function return parameters
-rw-r--r--docs/assembly.rst8
-rw-r--r--libsolidity/inlineasm/AsmParser.cpp4
-rw-r--r--libsolidity/inlineasm/AsmPrinter.cpp2
-rw-r--r--test/libsolidity/InlineAssembly.cpp12
4 files changed, 12 insertions, 14 deletions
diff --git a/docs/assembly.rst b/docs/assembly.rst
index eb1bf276..420cea17 100644
--- a/docs/assembly.rst
+++ b/docs/assembly.rst
@@ -29,7 +29,7 @@ arising when writing manual assembly by the following features:
* labels: ``let x := 10 repeat: x := sub(x, 1) jumpi(repeat, eq(x, 0))``
* loops: ``for { let i := 0 } lt(i, x) { i := add(i, 1) } { y := mul(2, y) }``
* switch statements: ``switch x case 0: { y := mul(x, 2) } default: { y := 0 }``
-* function calls: ``function f(x) -> (y) { switch x case 0: { y := 1 } default: { y := mul(x, f(sub(x, 1))) } }``
+* function calls: ``function f(x) -> y { switch x case 0: { y := 1 } default: { y := mul(x, f(sub(x, 1))) } }``
.. note::
Of the above, loops, function calls and switch statements are not yet implemented.
@@ -566,7 +566,7 @@ The following example implements the power function by square-and-multiply.
.. code::
assembly {
- function power(base, exponent) -> (result) {
+ function power(base, exponent) -> result {
switch exponent
0: { result := 1 }
1: { result := base }
@@ -701,12 +701,12 @@ The following assembly will be generated::
}
default: { jump(invalidJumpLabel) }
// memory allocator
- function $allocate(size) -> (pos) {
+ function $allocate(size) -> pos {
pos := mload(0x40)
mstore(0x40, add(pos, size))
}
// the contract function
- function f(x) -> (y) {
+ function f(x) -> y {
y := 1
for { let i := 0 } lt(i, x) { i := add(i, 1) } {
y := mul(2, y)
diff --git a/libsolidity/inlineasm/AsmParser.cpp b/libsolidity/inlineasm/AsmParser.cpp
index 0fc0a34f..9513cf77 100644
--- a/libsolidity/inlineasm/AsmParser.cpp
+++ b/libsolidity/inlineasm/AsmParser.cpp
@@ -242,15 +242,13 @@ assembly::FunctionDefinition Parser::parseFunctionDefinition()
{
expectToken(Token::Sub);
expectToken(Token::GreaterThan);
- expectToken(Token::LParen);
while (true)
{
funDef.returns.push_back(expectAsmIdentifier());
- if (m_scanner->currentToken() == Token::RParen)
+ if (m_scanner->currentToken() == Token::LBrace)
break;
expectToken(Token::Comma);
}
- expectToken(Token::RParen);
}
funDef.body = parseBlock();
funDef.location.end = funDef.body.location.end;
diff --git a/libsolidity/inlineasm/AsmPrinter.cpp b/libsolidity/inlineasm/AsmPrinter.cpp
index a70b0b78..252e91f9 100644
--- a/libsolidity/inlineasm/AsmPrinter.cpp
+++ b/libsolidity/inlineasm/AsmPrinter.cpp
@@ -116,7 +116,7 @@ string AsmPrinter::operator()(assembly::FunctionDefinition const& _functionDefin
{
string out = "function " + _functionDefinition.name + "(" + boost::algorithm::join(_functionDefinition.arguments, ", ") + ")";
if (!_functionDefinition.returns.empty())
- out += " -> (" + boost::algorithm::join(_functionDefinition.returns, ", ") + ")";
+ out += " -> " + boost::algorithm::join(_functionDefinition.returns, ", ");
return out + "\n" + (*this)(_functionDefinition.body);
}
diff --git a/test/libsolidity/InlineAssembly.cpp b/test/libsolidity/InlineAssembly.cpp
index 0e9b640a..8bf4df8e 100644
--- a/test/libsolidity/InlineAssembly.cpp
+++ b/test/libsolidity/InlineAssembly.cpp
@@ -209,17 +209,17 @@ BOOST_AUTO_TEST_CASE(blocks)
BOOST_AUTO_TEST_CASE(function_definitions)
{
- BOOST_CHECK(successParse("{ function f() { } function g(a) -> (x) { } }"));
+ BOOST_CHECK(successParse("{ function f() { } function g(a) -> x { } }"));
}
BOOST_AUTO_TEST_CASE(function_definitions_multiple_args)
{
- BOOST_CHECK(successParse("{ function f(a, d) { } function g(a, d) -> (x, y) { } }"));
+ BOOST_CHECK(successParse("{ function f(a, d) { } function g(a, d) -> x, y { } }"));
}
BOOST_AUTO_TEST_CASE(function_calls)
{
- BOOST_CHECK(successParse("{ function f(a) -> (b) {} function g(a, b, c) {} function x() { g(1, 2, f(mul(2, 3))) x() } }"));
+ BOOST_CHECK(successParse("{ function f(a) -> b {} function g(a, b, c) {} function x() { g(1, 2, f(mul(2, 3))) x() } }"));
}
BOOST_AUTO_TEST_CASE(opcode_for_functions)
@@ -230,7 +230,7 @@ BOOST_AUTO_TEST_CASE(opcode_for_functions)
BOOST_AUTO_TEST_CASE(opcode_for_function_args)
{
CHECK_PARSE_ERROR("{ function f(gas) { } }", ParserError, "Cannot use instruction names for identifier names.");
- CHECK_PARSE_ERROR("{ function f() -> (gas) { } }", ParserError, "Cannot use instruction names for identifier names.");
+ CHECK_PARSE_ERROR("{ function f() -> gas { } }", ParserError, "Cannot use instruction names for identifier names.");
}
BOOST_AUTO_TEST_CASE(name_clashes)
@@ -295,7 +295,7 @@ BOOST_AUTO_TEST_CASE(print_string_literal_unicode)
BOOST_AUTO_TEST_CASE(function_definitions_multiple_args)
{
- parsePrintCompare("{\n function f(a, d)\n {\n mstore(a, d)\n }\n function g(a, d) -> (x, y)\n {\n }\n}");
+ parsePrintCompare("{\n function f(a, d)\n {\n mstore(a, d)\n }\n function g(a, d) -> x, y\n {\n }\n}");
}
BOOST_AUTO_TEST_CASE(function_calls)
@@ -304,7 +304,7 @@ BOOST_AUTO_TEST_CASE(function_calls)
function y()
{
}
- function f(a) -> (b)
+ function f(a) -> b
{
}
function g(a, b, c)