Commit Graph

2027 Commits

Author SHA1 Message Date
Christian Parpart
a211b89118 Enforce disallowing empty structs
This patch enfoces an error when it encounters an empty struct,
effectively eliminating the deprecation warning.

Also adjust 419_interface_structs to explicitely test for (non-empty) structs,
as this behaviour "may" change in the future.
2018-06-14 00:24:43 +01:00
chriseth
014bbc6c97
Merge pull request #4272 from ethereum/assert-break-continue
Fail if break/continue statements are used outside for/while loops in ContractCompiler
2018-06-13 12:10:39 +02:00
chriseth
1dc28c065d Properly pad data from calldata. 2018-06-12 18:51:40 +01:00
Alex Beregszaszi
9de45383d8 Disallow sha3/suicide aliases 2018-06-12 18:16:18 +01:00
Alex Beregszaszi
d1e7e9ef5e
Merge pull request #3627 from ethereum/additional-keywords
[BREAKING] Add new reserved keywords.
2018-06-12 16:33:26 +01:00
Daniel Kirchner
e2f4a9fcf4
Merge pull request #4277 from ethereum/signedRightShift
Signed Right Shift: Additional test and more explanation.
2018-06-12 17:19:20 +02:00
chriseth
cc62d7ce6a
Merge pull request #4229 from ethereum/smt_storage_vars_refactor
Refactoring how storage and local variables are managed.
2018-06-12 16:11:05 +02:00
Daniel Kirchner
e4b7b2160e Add new reserved keywords. 2018-06-12 16:02:53 +02:00
Daniel Kirchner
510f227bd7 Additional test and more explanation. 2018-06-12 15:53:15 +02:00
Leonardo Alt
207d5859d1 Refactoring Declaration -> VariableDeclaration (more precise) 2018-06-12 10:58:50 +02:00
Leonardo Alt
48652c88af Review comments 2018-06-12 10:58:50 +02:00
Leonardo Alt
678a769cd7 Refactoring how storage and local variables are managed. 2018-06-12 10:58:50 +02:00
Daniel Kirchner
e84b55bd6f Extend explanatory remark and argue using bitwise operations instead of rounding. 2018-06-12 09:32:19 +01:00
Daniel Kirchner
f33dc92cbd Use proper SAR for signed right shifts and emulate on pre-constantinople. 2018-06-12 09:32:19 +01:00
Alex Beregszaszi
1d57d74e82 Fail if break/continue statements are used outside for/while loops in ContractCompiler 2018-06-12 00:46:23 +01:00
Erik Kundt
2e9f5d1c98 Introduces emit token and removes identifier workaround. 2018-06-11 21:21:22 +01:00
Alex Beregszaszi
8d38d4d296 Use boost::multiprecision::pow explicitly 2018-06-11 19:31:26 +01:00
Alex Beregszaszi
0f572159ec Show named argument name in error 2018-06-06 15:59:27 +01:00
chriseth
4073c02cf3
Merge pull request #4208 from ethereum/extract-name-and-type-tests
Extract name and type tests
2018-06-04 19:54:14 +02:00
chriseth
283cdef98c Fix view/pure error ordering problem. 2018-06-04 17:00:37 +02:00
chriseth
c59a06bb97
Merge pull request #4213 from ethereum/fixpop
Fix bug related to byte array pop.
2018-06-04 16:10:56 +02:00
Jason Cobb
6e29775d39 Remove suicide and sha3 assembly instructions 2018-06-04 01:04:48 +01:00
chriseth
7cf36331a6 Fix bug related to byte array pop. 2018-05-31 14:53:33 +02:00
chriseth
0a1a8bfb09
Merge pull request #4172 from ethereum/trailing_dot
[BREAKING] Disallow trailing dot not followed by number
2018-05-30 18:51:52 +02:00
chriseth
5a73044fa7
Merge pull request #3743 from ethereum/popStorageArray
pop() for storage arrays
2018-05-30 18:32:08 +02:00
Erik Kundt
fea0d116f7 Fixes assembly bug and adds tests to cover it. 2018-05-30 17:46:43 +02:00
Erik Kundt
98d52beba3 Adds syntax tests, documentation and changelog entry.
Refines comment for array utility function.
2018-05-30 17:43:20 +02:00
Erik Kundt
34b5eca1f8 Improves assembly and adds more tests. 2018-05-30 17:40:33 +02:00
Leonardo Alt
ac68710789 Disallow trailing dots that are not followed by a number 2018-05-30 15:14:53 +01:00
mingchuan
b7cafcbdf9
Allow using calldata keyword to specify data location 2018-05-30 18:05:55 +08:00
Erik Kundt
7156a01acc Implements pop() for byte arrays. 2018-05-29 12:53:02 +02:00
bitshift
e9dcfb0b62 Implements pop() for value type arrays. 2018-05-29 12:53:02 +02:00
chriseth
9d5064d04d
Merge pull request #4173 from sifmelcara/add/allow-storage-calldata-suffix
Allow data location suffix for internal elementary type parsing
2018-05-28 22:52:45 +02:00
chriseth
5ee2ce353e
Merge pull request #4067 from ethereum/050
[BREAKING] Version 0.5.0
2018-05-23 18:11:20 +02:00
mingchuan
9865012f7b
Allow data location suffix for internal elementary type parsing 2018-05-22 23:28:12 +08:00
mingchuan
3cd57866a9
Fix assert message about function visibility 2018-05-20 22:29:11 +08:00
Julius Huelsmann
1d3a37faff Avoid "unneccesary parentheses in declaration of" warning with keeping a temporary variable. 2018-05-17 14:48:15 +02:00
Julius Huelsmann
9e26f5fa0a Do not catch exceptions by value in StandardCompiler 2018-05-17 14:44:01 +02:00
Daniel Kirchner
1cbc037a45 Update control flow graph. 2018-05-16 18:32:48 +02:00
Daniel Kirchner
f627dc77d0 Fix continue inside do-while. 2018-05-16 18:32:48 +02:00
Daniel Kirchner
5c59d56335 Disallow conversions between bytesX and uintY of different size. 2018-05-16 18:32:47 +02:00
Leonardo Alt
0b6eea0c55 Bool variables should not allow arithmetic comparison 2018-05-16 18:32:47 +02:00
Alex Beregszaszi
221a4d1f1f Split warning for multi arguments for hash functions 2018-05-16 11:12:25 +02:00
chriseth
894122c508 Warn/enforce single bytes argument for certain builtins (hashing functions).
In 0.5.0 mode, only accept a single bytes argument for ``.call``,
``keccak256`` and others and do not pad when encoding.
2018-05-16 09:48:03 +02:00
chriseth
3ca6738114 Add assert about source location. 2018-05-16 03:52:24 +02:00
chriseth
67d208d144 Parse multi variable declaration statement. 2018-05-16 03:22:45 +02:00
chriseth
2ba0002998
Merge pull request #4139 from ethereum/abiEncodeIsPure
ABI encoding functions are pure and should be usable in constants.
2018-05-15 16:59:48 +02:00
chriseth
63861aac4a
Merge pull request #3947 from ethereum/smt_storage
[SMTChecker] Support to integer and Bool storage vars
2018-05-15 14:54:41 +02:00
chriseth
dac0029d16 ABI encoding functions are pure and should be usable in constants. 2018-05-15 14:45:54 +02:00
chriseth
dce6224052
Merge pull request #4062 from ethereum/revert-variable
Fix revert with reason coming from a string variable
2018-05-15 14:44:39 +02:00
Leonardo Alt
4117e859eb [SMTChecker] Declaring all state vars before any function is visited 2018-05-15 14:28:08 +02:00
Leonardo Alt
2dbb35d4a8 [SMTChecker] Support to integer and Bool storage vars 2018-05-15 14:22:50 +02:00
Daniel Kirchner
16e966dea0 Add control flow analyzer and test for uninitialized storage returns. 2018-05-14 20:23:40 +02:00
Daniel Kirchner
995623f0fa Add control flow graph. 2018-05-14 20:23:40 +02:00
mingchuan
dbd0a7ed60
Fix link error when using boost shared library 2018-05-11 11:20:19 +08:00
Alex Beregszaszi
e96bbe70d4 Assert that mandatory fields in the AST are present in AsmAnalysis 2018-05-10 10:48:48 +02:00
Alex Beregszaszi
c03a29dea8 Fix revert with reason coming from a string variable 2018-05-09 17:53:17 +02:00
Alex Beregszaszi
868d449c38
Merge pull request #4047 from ethereum/refactorToMulti
Refactor to allow implementing multi variable declarations.
2018-05-09 15:37:19 +01:00
chriseth
fe8f38a7a4 Assert integrity of empty IndexAccessPath structure. 2018-05-09 14:55:36 +02:00
Daniel Kirchner
02380113d4 Use the entire token as source location for parser errors. 2018-05-09 14:08:22 +02:00
chriseth
be54f48197 Further refactor. 2018-05-09 11:48:21 +02:00
chriseth
86b7adc18f Refactor expression parser. 2018-05-09 11:48:21 +02:00
chriseth
54aa10ce36
Merge pull request #4054 from ethereum/token-names
Improve parser error messages
2018-05-09 11:06:23 +02:00
chriseth
fe12f05c08 Deprecate wildcard assignments. 2018-05-08 15:13:32 +01:00
njwest
51b4dc3752 fixed grammar in error in CompilerUtils.cpp line 399, 'less variables.' should be 'fewer variables.' 2018-05-06 18:52:12 -04:00
chriseth
150d226603
Merge pull request #4063 from ethereum/emit-non-event
Show proper error when trying to emit a non-event
2018-05-04 15:02:04 +02:00
Alex Beregszaszi
cc10839073 Have more uniform parser errors 2018-05-04 13:27:05 +01:00
Alex Beregszaszi
c7ee649d80 More user friendly output in case of Identifier and Token keywords 2018-05-04 13:27:05 +01:00
Alex Beregszaszi
882248ce75 Remove code duplication in expectToken 2018-05-04 13:27:05 +01:00
Alex Beregszaszi
252bde8542 Introduce Token::friendlyName() helper 2018-05-04 13:11:23 +01:00
Alex Beregszaszi
e3279d8af8 Display nicer error messages in the parser (display tokens and not internal names) 2018-05-04 12:39:37 +01:00
chriseth
81d61ca086
Merge pull request #4059 from ethereum/parser-simplify
Simplify the parser expectations
2018-05-04 12:50:12 +02:00
Alex Beregszaszi
ffe7f224a6 Show proper error when trying to emit a non-event 2018-05-04 12:47:01 +02:00
daniel
aa1542a9e1 Change bytes to unsigned in FixedBytesType 2018-05-03 23:11:34 +01:00
Alex Beregszaszi
ed9f80690b Simplify expectIdentifierToken by using expectToken 2018-05-03 22:10:51 +01:00
Alex Beregszaszi
73c99d15cd Remove useless helper expectAssignmentOperator in parser 2018-05-03 21:35:38 +01:00
Alex Beregszaszi
b34428249a Change numBits to unsigned IntegerType 2018-05-02 23:22:25 -07:00
Alex Beregszaszi
2c00ebbee1 Change totalBits and fractionalDigits to unsigned in FixedPointType 2018-05-02 23:22:25 -07:00
chriseth
a856135bbf
Merge pull request #3797 from ethereum/shift-constantinople
Use native shift instructions on Constantinople
2018-05-02 16:50:15 +02:00
chriseth
8debded743
Revert "BREAKING: Bool variables should not allow arithmetic comparison" 2018-05-02 15:56:59 +02:00
chriseth
42289b642f
Merge pull request #4003 from ethereum/bool_vars_comparison
BREAKING: Bool variables should not allow arithmetic comparison
2018-05-02 15:56:06 +02:00
Alexander Arlt
f94b793472 Add virtual destructors on base classes. 2018-05-02 13:29:16 +02:00
Alex Beregszaszi
059e232e69 Support shifts in gas estimator 2018-04-30 21:22:59 +01:00
chriseth
2968639406 Removed signed shift right from the utilities. 2018-04-30 20:34:43 +01:00
Alex Beregszaszi
52c9441879 Do not use SAR instead of SDIV in shifts because it rounds differently 2018-04-30 20:34:43 +01:00
Alex Beregszaszi
c3608eaf90 Use native shift instructions in ABIFunctions on Constantinople 2018-04-30 20:34:43 +01:00
Alex Beregszaszi
22bfd3da41 Use native shift instructions on Constantinople 2018-04-30 20:34:43 +01:00
chriseth
d26b6b64c0
Merge pull request #3996 from ethereum/refactorParser
Refactor parser.
2018-04-30 19:15:11 +02:00
chriseth
15024154ab
Merge pull request #4018 from ethereum/disable-bytes0
Disable FixedBytesType(0) aka bytes0
2018-04-30 18:19:07 +02:00
chriseth
9e61b25dc4
Merge pull request #3958 from meowingtwurtle/fixedPointTypes
Types class changes for fixed points
2018-04-30 15:56:55 +02:00
Alex Beregszaszi
548bf2ff28 Remove unused function smallestTypeForLiteral 2018-04-30 14:35:26 +01:00
Alex Beregszaszi
e0b178e1c5 Disable FixedBytesType(0) aka bytes0 2018-04-30 12:23:30 +01:00
Leonardo Alt
ab251c7e7d Bool variables should not allow arithmetic comparison 2018-04-27 11:35:58 +02:00
chriseth
d44fb03322 Refactor parser. 2018-04-26 10:59:02 +02:00
Alexander Arlt
3ec667f59b Add virtual destructor in LValue class. 2018-04-24 23:39:25 +02:00
chriseth
d1e1293fbd
Merge pull request #3981 from ethereum/years-suffix
The "year" denomination is deprecated
2018-04-24 12:12:03 +02:00
Alex Beregszaszi
258ae8927e
Merge pull request #3970 from elopio/test/docstring-tag-end
docstring: add missing space
2018-04-24 02:16:27 +01:00
Leo Arias
b74566e4ea docstring: add missing space 2018-04-23 21:47:53 +00:00
chriseth
e685f9f59e
Merge pull request #3976 from ethereum/emptyTupleComponent
Empty tuple components should not be possible
2018-04-23 17:35:00 +02:00
Alex Beregszaszi
1ac0090f31 The "year" denomination is deprecated 2018-04-23 16:19:51 +01:00
Erik Kundt
896018c8a3 Treats inline array as an error. 2018-04-23 17:11:41 +02:00
Erik Kundt
b2ff9bc88d Turns it into warning (error for 0.5.0) and adds Changelog entry. 2018-04-23 17:09:42 +02:00
Erik Kundt
f2b58de92c Prevents null type from being used in tuple. 2018-04-22 16:54:33 +02:00
Alex Beregszaszi
5423974e87 Remove category check in FixedPointType:binaryOperatorResult as commonType handles the same 2018-04-20 17:54:34 +01:00
Jason Cobb
57003c534a Types changes for fixed points 2018-04-20 17:53:42 +01:00
Alex Beregszaszi
0493e3b053 Turn deprecated warnings for sha3/suicide into errors (experimental 0.5.0) 2018-04-20 17:40:48 +01:00
Alex Beregszaszi
069ea38916 Make literals an error for tight packing (experimental 0.5.0) 2018-04-20 11:58:16 +01:00
chriseth
676732776e
Merge pull request #3943 from ethereum/smt_remove_branch_warning
[SMTChecker] Remove 'information is erase' message for if-else
2018-04-20 09:01:59 +02:00
chriseth
2546a274ca
Merge pull request #3941 from ethereum/bytes-contract
Disallow explicit conversion of bytesXX to contract
2018-04-19 16:10:15 +02:00
Alex Beregszaszi
754d79edfa Disallow explicit conversion of bytesXX to contract 2018-04-19 15:58:14 +02:00
Leonardo Alt
ba3d16fc58 [SMTChecker] Remove 'information is erase' message for if-else 2018-04-19 09:28:44 +02:00
chriseth
a94945dfe4 Improve error message for failed member lookup. 2018-04-18 22:56:45 +01:00
Alex Beregszaszi
39b7b44a8d
Merge pull request #3923 from ethereum/warnConstructor
Warn about functions named "constructor".
2018-04-18 22:22:58 +01:00
Alex Beregszaszi
377254d5a8
Merge pull request #3922 from ethereum/smt_sol_unimplementedassert
[SMTChecker] Using solUnimplementedAssert instead of solAssert
2018-04-18 20:28:47 +01:00
chriseth
4895864302 Warn about functions named "constructor". 2018-04-18 21:23:09 +02:00
chriseth
29a97f1641 Fix name clashes between constructor and fallback function. 2018-04-18 14:24:35 +02:00
Leonardo Alt
78ba34608f [SMTChecker] Using solUnimplementedAssert instead of solAssert when applicable 2018-04-18 13:17:59 +02:00
Leonardo Alt
ae3350ae03 [SMTChecker] Integration with CVC4 2018-04-17 12:26:58 +01:00
chriseth
3d04d83297
Merge pull request #3868 from ethereum/bytescleanup
Properly force-clean for shortening bytesXX conversions.
2018-04-16 15:23:36 +02:00
chriseth
533d08517f
Merge pull request #3793 from ethereum/rationalNumberLimit
Rational number limit
2018-04-16 13:10:50 +02:00
Alex Beregszaszi
0201492bbf Remove redundant cleanup for abi.encode. 2018-04-16 12:47:38 +02:00
chriseth
4c1d39b7a2 Properly force-clean for shortening bytesXX conversions. 2018-04-16 12:47:38 +02:00
Erik Kundt
33fbf88707 Limits rational numbers to 4096 bits. 2018-04-16 11:45:55 +02:00
chriseth
d8030c9b2a
Merge pull request #3880 from ethereum/addressMemberDocAndWarn
Improve documentation and warning about accessing contract members in…
2018-04-16 11:05:05 +02:00
chriseth
95c49b367e
Merge pull request #3875 from ethereum/constructorSelfRef
Stricter check for "this" in constructor.
2018-04-13 18:39:31 +02:00
Daniel Kirchner
05c5ab19fb Improve documentation and warning about accessing contract members inherited from address. 2018-04-13 18:26:24 +02:00
Daniel Kirchner
be37e3a912 Stricter check for member access to "this" in constructor. 2018-04-13 15:57:13 +02:00
Erik Kundt
8935c0dd2f Uses short string representation of TypePointer 2018-04-12 21:14:50 +02:00
chriseth
7054defdd6
Merge pull request #3364 from ethereum/revertWithReason
Revert with reason
2018-04-12 21:01:08 +02:00
chriseth
44416d1ac6
Merge pull request #2980 from ethereum/abi-api
Add abi.encode and abi.encodePacked
2018-04-12 20:55:03 +02:00
chriseth
75b8828666 Allow struct encoding with new encoder. 2018-04-12 16:37:16 +02:00
Daniel Kirchner
6862f22943 Fix internal compiler error when parsing `var` declaration without identifier. 2018-04-12 14:57:14 +02:00
chriseth
4faa839813 Use error signature for revert data. 2018-04-12 13:09:38 +02:00
chriseth
fcb7a27216 Only forward returndata if EVM version supports it. 2018-04-12 13:09:38 +02:00
chriseth
7a9ee69e98 Bubble up error messages. 2018-04-12 13:09:38 +02:00
chriseth
ae1d040285 Allow error string for `require`. 2018-04-12 13:09:37 +02:00
chriseth
012ab37fe3 Code generator for revert with reason string. 2018-04-12 13:09:37 +02:00
chriseth
8ab7dc036a Register overload for `revert()` that can receive a reason string. 2018-04-12 13:09:37 +02:00
chriseth
f00bb43593 Allow function overloads involving MagicVariableDeclarations. 2018-04-12 13:09:37 +02:00
chriseth
17fc0f54b5 Use FunctionTypePointer (adds `const`). 2018-04-12 13:09:37 +02:00
chriseth
c3dc67d0e0
Merge pull request #3848 from ethereum/constantDivisionByZero
Error on invalid arithmetic with constant expressions.
2018-04-12 11:49:08 +02:00
chriseth
7343c40283 Check partial function parameters if rest is arbitrary. 2018-04-12 00:10:25 +02:00
Alex Beregszaszi
d56acb68ab Add abi.encode, abi.encodePacked, abi.encodeWithSelector and abi.encodeWithSignature. 2018-04-11 22:32:10 +02:00
chriseth
b5a696ad48 Properly cope with constructor headers. 2018-04-11 22:00:21 +02:00
chriseth
2ad1acaf72 Warn if modifiers are applied to functions without implementation. 2018-04-11 22:00:21 +02:00
chriseth
6d289783b4 Fix state variable parsing. 2018-04-11 22:00:04 +02:00
chriseth
ae3fca6db2
Merge pull request #3863 from ethereum/fixGasEstimation
Correctly ignore costs of fallback for other functions.
2018-04-11 21:53:41 +02:00
Daniel Kirchner
daa69df447 Error on invalid arithmetic with constant expressions. 2018-04-11 21:17:10 +02:00
chriseth
928ce08845 Correctly ignore costs of fallback for other functions. 2018-04-11 19:42:34 +01:00
Daniel Kirchner
cb548f6f53 Fix ConstantEvaluator to correctly handle single element tuples. 2018-04-11 18:30:34 +02:00