Commit Graph

2208 Commits

Author SHA1 Message Date
Alex Beregszaszi
4dc3335cda
Merge pull request #4744 from ethereum/smt-magic-variable
SMT: do not crash on referencing MagicVariableDeclaration
2018-08-07 21:30:14 +01:00
chriseth
43d6a9d763 Do not stop after the first error in reference resolution. 2018-08-07 22:04:59 +02:00
Alex Beregszaszi
f024efb7ab SMT: do not crash on referencing MagicVariableDeclaration 2018-08-07 20:43:20 +01:00
Daniel Kirchner
cc83e69469 Disallow empty return expressions in functions with non-empty return parameters. 2018-08-07 20:48:07 +02:00
Daniel Kirchner
b11e39e25e Remove remaining instances of `fillRight` left over from tuple wildcards assignments. 2018-08-07 18:51:53 +02:00
chriseth
d7756322c0
Merge pull request #4731 from ethereum/interface-enum
Allow enums in interfaces
2018-08-07 17:20:05 +02:00
chriseth
901550e473
Merge pull request #4692 from ethereum/devcore-path
Move absolutePath/sanitizePath helpers from CompilerStack to libdevcore
2018-08-07 16:15:49 +02:00
chriseth
a949cffd24
Merge pull request #4699 from ethereum/cleanup_VariableDeclaration
libsolidity: Remove dead code wrt. VariableDeclaration::canHaveAutoType
2018-08-07 16:14:41 +02:00
chriseth
c61cc98d0d
Merge pull request #4726 from ethereum/moveNothrow
Make MemberList nothrow move constructible.
2018-08-07 16:11:59 +02:00
Alex Beregszaszi
a765b5b31c
Merge pull request #4720 from ethereum/abi-rational-type-identifier
Fix type identifiers for RationalNumberType (on negative numbers)
2018-08-07 14:25:11 +01:00
Alex Beregszaszi
13e37df97c Allow enums in interfaces 2018-08-07 13:28:53 +01:00
Alex Beregszaszi
b0f9fc5af0 Fix type identifiers for RationalNumberType 2018-08-07 13:23:14 +01:00
chriseth
133fd3d302 Make MemberList nothrow move constructible. 2018-08-07 14:20:18 +02:00
Alex Beregszaszi
05cc7e79e1 More precise error message if using non-variables with _slot/_offset 2018-08-07 13:18:54 +01:00
Alex Beregszaszi
eb7b3862ac Properly handle invalid references used together with _slot and _offset. 2018-08-07 13:18:38 +01:00
Alex Beregszaszi
8b2d630275
Merge pull request #4724 from ethereum/slot-in-assembly
Do not crash on using _slot and _offset suffixes on their own
2018-08-07 12:55:40 +01:00
Alex Beregszaszi
296ba24f7f Do not crash on using _slot and _offset suffixes on their own 2018-08-07 12:14:12 +01:00
chriseth
71e26f6adb Remove clone feature. 2018-08-07 11:10:50 +01:00
Christian Parpart
4c90ddf64a
libsolidity: Remove dead code wrt. VariableDeclaration::canHaveAutoType()
Closes #4667
2018-08-07 11:34:13 +02:00
Alex Beregszaszi
bd75d4268b Move fullyQualifiedName to ContractDefinition only 2018-08-06 18:58:27 +02:00
chriseth
276724dedc
Merge pull request #4663 from ethereum/dropConstantAST
[BREAKING] Drop constant field from JSON AST
2018-08-06 18:55:12 +02:00
Alex Beregszaszi
eccc603291 FixedBytes(0) is invalid, do not check for it in ABIEncoderV2 2018-08-06 16:54:05 +02:00
chriseth
bc73617f5e
Merge pull request #4689 from ethereum/cleanup-050-tests
Cleanup 0.5.0 test cases
2018-08-06 14:45:31 +02:00
Alex Beregszaszi
3de0b8b7f0 Move absolutePath/sanitizePath helpers from CompilerStack to libdevcore 2018-08-06 12:54:22 +01:00
Alex Beregszaszi
3481d4e2ec
Merge pull request #4690 from ethereum/equalParameterTypes
Renamed FunctionType::hasEqualArgumentTypes to FunctionType::hasEqual…
2018-08-06 12:50:04 +01:00
Jesse Busman
3fcd62921e Renamed FunctionType::hasEqualArgumentTypes to FunctionType::hasEqualParameterTypes 2018-08-06 13:05:06 +02:00
Alex Beregszaszi
08e431f94e Remove unused 050 variable in ReferencesResolver 2018-08-06 12:03:00 +01:00
chriseth
9d03de1f25
Merge pull request #4671 from ethereum/mappingTupleAssignment
Disallow assignments to mappings within tuple assignments; allow for local variables.
2018-08-06 12:59:16 +02:00
chriseth
3576980710
Merge pull request #4644 from ethereum/event_struct_error
Disallow structs in events without ABIEncoderV2
2018-08-06 11:44:05 +02:00
chriseth
30f981fc2c
Merge pull request #4681 from ethereum/var-suggestion-crash
Fix declaration suggestion for var with different number of components
2018-08-06 11:21:54 +02:00
Daniel Kirchner
44374a5846 Remove "constant" from JSON AST. 2018-08-06 11:15:25 +02:00
Alex Beregszaszi
83e6c34526 Fix declaration suggestion for var with different number of components 2018-08-04 15:22:22 +01:00
Christian Parpart
a4ee1dfc83
Merge pull request #4412 from ethereum/v050-reference-resolver-errorTypeForLoose
[BREAKING] permanently set errorTypeForLoose from Warning to SyntaxError
2018-08-03 19:30:33 +02:00
Daniel Kirchner
f9b90feea0 Review suggestions; to be squashed. 2018-08-03 17:38:06 +02:00
Daniel Kirchner
1e4b5886d6 Allow assignments to local variables of mapping types. 2018-08-03 16:22:03 +02:00
Daniel Kirchner
c0a169ca90 Disallow assignments to mappings within tuple assignments. 2018-08-03 15:46:26 +02:00
Leonardo Alt
20c6cea7bb Disallow structs in events without ABIEncoderV2 2018-08-03 13:41:27 +02:00
Daniel Kirchner
35c5b7de25 Turn warning about uninitialized storage returns into an error. 2018-08-02 19:34:38 +02:00
chriseth
009a55c82d
Merge pull request #4327 from ethereum/document-internals
Properly explain all the analsys steps in CompilerStack
2018-08-02 15:07:35 +02:00
chriseth
90a5928b88
Merge pull request #4522 from ethereum/fullEncodingType
Isolate determining the encoding type into its own function.
2018-08-02 15:01:38 +02:00
Christian Parpart
5d9320c70b Disallow loos assembly in Solidity by permanently setting it to SyntaxError (from Warning) 2018-08-02 13:36:05 +01:00
Alex Beregszaszi
6003ed2abd
Merge pull request #4603 from ethereum/smtlib2
[SMTLib2] Fix repeated declarations
2018-08-02 12:04:58 +01:00
Leonardo Alt
90f319615f SMT model variables are sorted and printed as secondary source location 2018-08-01 23:27:46 +02:00
Leonardo Alt
b6a2655513 Replace "value" by "<result>" in the SMT model 2018-08-01 23:27:11 +02:00
Daniel Kirchner
ce7c7aca79 Extend code comment about signatures. 2018-08-01 17:18:17 +02:00
Daniel Kirchner
30d9961efb Do not exclude public state variables when looking for conflicting declarations. 2018-08-01 14:31:04 +02:00
Alex Beregszaszi
ce99a5ce7f
Merge pull request #4378 from ethereum/noBaseWithoutArguments
[BREAKING] Disallow calling base constructors without arguments.
2018-08-01 13:18:37 +01:00
chriseth
061ea0cfc6 Correctly determine whether base constructor is called without parentheses. 2018-08-01 12:28:27 +01:00
chriseth
7e5406dd89 Disallow calling base constructors without arguments. 2018-08-01 12:28:27 +01:00
Christian Parpart
38f9667e09 Guard CycleDetector against recursion exhaustion.
fixes #3935.
2018-08-01 12:02:59 +01:00
chriseth
7a8a243eef Isolate determining the encoding type into its own function. 2018-08-01 11:55:57 +01:00
chriseth
c8232d9759 Disallow conversion between unrelated contract types. 2018-08-01 11:04:35 +01:00
Alex Beregszaszi
21888e246b
Merge pull request #4507 from ethereum/v050-var-keyword-trace-removals
Ensures an empty use of var keyword is caught with the proper non-fatal error message
2018-08-01 10:59:26 +01:00
Leonardo Alt
41ac3d6cfb Remove repeated declarations in Z3 and CVC4 as well 2018-08-01 11:12:56 +02:00
Christian Parpart
a7150f85a6
Ensures an empty use of var keyword is caught with the proper error message. 2018-08-01 09:59:06 +02:00
Leonardo Alt
210fee571f Fix crash when FunctionType has undeclared type as parameter 2018-07-31 11:17:51 +02:00
Alex Beregszaszi
f74cff622d Properly explain all the analsys steps in CompilerStack 2018-07-31 00:39:18 +01:00
Alex Beregszaszi
179427fd65 Import dev::solidity namespace in SMTPortfolio 2018-07-27 23:17:17 +01:00
Leonardo Alt
f249f9c86f [SMTLib2] Fix repeated declarations 2018-07-27 17:34:44 +01:00
Alex Beregszaszi
dea0567e06 Fix unterminated parentheses typo in SMTLib2
Found by @leonardoalt
2018-07-27 17:33:53 +01:00
Leonardo Alt
55c1fb60b4 [SMTChecker] Add CheckResult::CONFLICTING 2018-07-27 16:16:26 +01:00
Leonardo Alt
87a38e1abe [SMTChecker] SMTPortfolio: use all SMT solvers available 2018-07-27 16:15:34 +01:00
Leonardo Alt
b356f6a7f9 Setting timeout to Z3 and CVC4 2018-07-27 16:01:48 +02:00
Leonardo Alt
06dbcb3afe Only ask for a model if it's SAT 2018-07-27 14:13:22 +02:00
Alex Beregszaszi
ae15b52d93
Merge pull request #4565 from ethereum/smt-stringutils-crash
Add assert for both branches in mergeVariables in SMTChecker
2018-07-25 11:08:47 +01:00
Alex Beregszaszi
a5a61a0b77 More consistent catch statements
Also take const& in all cases.
2018-07-25 01:18:09 +01:00
Alex Beregszaszi
d30a6de942 Add better warning on binary operation on non-integer types in SMT Checker 2018-07-24 23:23:54 +01:00
Alex Beregszaszi
278372c13d Add assert for both branches in mergeVariables in SMTChecker 2018-07-24 22:43:05 +01:00
Leonardo Alt
a2f03ea9e5 Fix abiDecode comment 2018-07-23 23:31:02 +02:00
Alex Beregszaszi
de90290c28
Merge pull request #4527 from ethereum/mappingEnforceStorage
Enforces explicit data location for mappings
2018-07-23 20:43:38 +01:00
Erik Kundt
c622a1e56c Enforces data location of local mappings to storage. 2018-07-23 19:30:07 +02:00
Christian Parpart
9f35f0b805 Disallow functions without implementation to use modifiers. This was already the case in the experimental 0.5.0 mode. 2018-07-23 17:29:08 +01:00
chriseth
3fa0ac5822
Do not handle balance member of contract types specially. 2018-07-20 10:50:05 +02:00
chriseth
e3c2f20f6e
Merge pull request #4439 from ethereum/address_members
[BREAKING] Enforce address members not accessible by contract instance
2018-07-19 09:24:27 +02:00
Leonardo Alt
faa9c221d4 Changes in ExpressionCompiler 2018-07-18 19:51:24 +02:00
Erik Kundt
b0b35e1e6b Adds warning if function is shadowing a contract. 2018-07-18 14:29:01 +02:00
Erik Kundt
182a0a9551 Disallows old constructor syntax. 2018-07-18 14:29:01 +02:00
chriseth
dfd2fee91d Suggests external for fallback and interface functions. 2018-07-17 18:07:36 +02:00
Erik Kundt
b5ecfbe5bc Enforces visibility specifier and updates docs. 2018-07-17 17:44:51 +02:00
Leonardo Alt
563e0fc9a7 Add suggestion to error message 2018-07-17 16:38:36 +01:00
Leonardo Alt
0075f4239a Address members not accessible by contract instance 2018-07-17 13:33:23 +01:00
Leonardo Alt
fdfdddd8dc Add missing period in the end of error messages 2018-07-16 16:11:39 +01:00
Alex Beregszaszi
21e97da294 Deprecate the throw statement 2018-07-16 15:33:20 +02:00
Christian Parpart
396bf11858 enforce interface-functions to be external-declared
- libsolidity: Enforce interface-functions must be external-declared.
- Changelog adapted to reflect changes wrt. functions in interfaces.
- test: Adjustments according to prior interface-function changes.
- tests: Adapting SolidityEndToEndTest to interface-function change.
- docs: Adapted documentation to interface-function change.
2018-07-16 12:15:36 +02:00
chriseth
bab4a3975f
Merge pull request #4501 from ethereum/recursiveStructsWithFixedArrays
Consider fixed-size arrays when checking for recursive structs.
2018-07-13 01:26:50 +02:00
Daniel Kirchner
fc370591f0 Disallow multi variable declarations with mismatching number of values. 2018-07-12 20:33:51 +02:00
Daniel Kirchner
d71a023c0b Use CycleDetector and account for multi-dimensional arrays. 2018-07-12 20:14:02 +02:00
Daniel Kirchner
d4dfd28694 Consider fixed size array members when checking for recursive structs. 2018-07-12 20:14:02 +02:00
chriseth
5d8a8f7265
Merge pull request #4437 from ethereum/report-empty-var-decls
[BREAKING] Report empty var tuple decls
2018-07-12 19:22:38 +02:00
chriseth
6dcafac44e
Merge pull request #4447 from hosho/develop
Fix NatSpec json output for "@notice" and "@dev" tags on contract definitions
2018-07-12 18:42:30 +02:00
chriseth
81271801b4
Merge pull request #4478 from ethereum/requireStorageLocation
Turn missing storage locations into an error.
2018-07-12 18:00:05 +02:00
Alex Beregszaszi
0dd79bc172
Merge pull request #4479 from ethereum/fixFixedPointCrash
Fix handling of fixed point types in arithmetics.
2018-07-12 15:04:16 +01:00
Matt Little
4efe3544f7 Fix NatSpec json output for "@notice" and "@dev" tags on contract definitions. 2018-07-12 14:39:13 +02:00
Christian Parpart
cc585138bc Generates a syntax error when declaring a variable declaration's LHS has no named components 2018-07-12 13:26:52 +02:00
chriseth
fa8102880f
Merge pull request #4428 from ethereum/enforce_staticcall_view
[BREAKING] Enforce STATICCALL for view and pure
2018-07-12 13:14:02 +02:00
chriseth
576f3ef18c
Merge pull request #4083 from ethereum/variable_stack_slot
[BREAKING] Allocate local variables according to their scope
2018-07-12 13:01:15 +02:00
Daniel Kirchner
a1f54f4e40 Require storage location. 2018-07-12 12:48:18 +02:00
chriseth
99bee7e233
Merge pull request #4443 from ethereum/double_var_decl_fix
Fix crash when declaring the same var twice in the same scope
2018-07-12 00:05:32 +02:00
chriseth
2b8091526f
Merge pull request #4472 from ethereum/complexCalldataArraysNotYetImplemented
Throw unimplemented exception for complex calldata arrays.
2018-07-11 23:48:42 +02:00
chriseth
0c9645c978
Merge pull request #4480 from ethereum/fixZeroWithExponent
Fix literals with exponents with mantissa of zero.
2018-07-11 23:45:41 +02:00
Christian Parpart
08345209e6
Merge pull request #4404 from ethereum/v050-var-keyword-suggest
[WIP] v0.5.0 var keyword type suggestion
2018-07-11 16:33:09 +02:00
Daniel Kirchner
e8e5e12ad2 Fix literals with exponents with mantissa of zero. 2018-07-11 15:34:17 +02:00
chriseth
7355298c2f Fix handling of fixed point types in arithmetics. 2018-07-11 14:56:53 +02:00
Leonardo Alt
38026d3114 Use STATICCALL for view and pure 2018-07-11 14:45:22 +02:00
chriseth
f3abfa81ad
Merge pull request #4454 from ethereum/constructorArgCount
[BREAKING] Wrong argument count in constructor call
2018-07-11 14:45:05 +02:00
chriseth
238dbe1b99
Merge pull request #4388 from ethereum/noPackedLiterals
Disallow packed encoding of literals.
2018-07-11 14:28:20 +02:00
Erik Kundt
7c7e154a7b Improves error with suggestion to remove parantheses. 2018-07-11 01:58:17 +02:00
Erik Kundt
34a031609e Updates Changelog, syntax test and simplifies type checker. 2018-07-11 01:58:17 +02:00
Erik Kundt
0b960f5a9c Turns wrong argument count in base constructor call into en error. 2018-07-11 01:56:07 +02:00
Cryptomental
140dbfdbd8 Code, Changelog, ReleaseChecklist: Fix typos.
Refs: #4442
2018-07-11 00:26:23 +02:00
chriseth
458a4c8aa5 Coding style. 2018-07-10 22:29:53 +02:00
Christian Parpart
1505e28b56 semantics: Suggest auto-deduced type when user declares variable with var keyword. 2018-07-10 22:14:19 +02:00
chriseth
d84976dc87
Merge pull request #4376 from ethereum/fallbackExternal
Fallback functions have to be external
2018-07-10 21:39:25 +02:00
chriseth
383b88793c Throw unimplemented exception for complex calldata arrays. 2018-07-10 21:23:20 +02:00
chriseth
12045d2e11
Merge pull request #4464 from cryptomental/bugfix/fix-typos-in-AsmParser-and-TypeChecker
AsmParser,TypeChecker: Fix typos.
2018-07-10 21:07:56 +02:00
chriseth
6567cd3e51
Merge pull request #4466 from ethereum/tupleNotEmpty
Disallow empty tuple components.
2018-07-10 21:03:30 +02:00
Leonardo Alt
cee4775a58 Add comment explaining new code 2018-07-10 18:54:46 +02:00
Leonardo Alt
c286cdaa62 Fix crash for double variable declaration in the same scope. 2018-07-10 18:54:46 +02:00
Leonardo Alt
0c5e0e0d59 Added assertion and tests suggestions 2018-07-10 18:39:38 +02:00
Leonardo Alt
b750ca9741 Add more tests and assertions 2018-07-10 18:39:38 +02:00
Leonardo Alt
9d895e002d Added tests and review suggestions 2018-07-10 18:39:38 +02:00
Leonardo Alt
1f77deada1 [050] Reserving and popping local vars in their scope 2018-07-10 18:39:38 +02:00
chriseth
0e9415bc31
Merge pull request #4468 from ethereum/variableDeclarationClenaup
Remove mentions of ``var`` in VariableDeclarationStatement comment.
2018-07-10 17:50:02 +02:00
Christian Parpart
8ca69ed8d8 defaulting to v0.5.0 behaviour of unary + operator (disallow); also adapting all tests to it 2018-07-10 16:27:57 +02:00
chriseth
64abfd3e4a Remove special `(x,)` case from type assignment. 2018-07-10 15:58:46 +02:00
Daniel Kirchner
a6e5a51d61 Disallow empty tuple components. 2018-07-10 15:27:46 +02:00
chriseth
7650905567
Merge pull request #4415 from ethereum/uninitializedStoragePointer
[BREAKING] Turn uninitialized storage variables into error.
2018-07-10 15:24:01 +02:00
chriseth
187eef36ad Remove mentions of `var` in VariableDeclarationStatement comment. 2018-07-10 14:55:50 +02:00
Cryptomental
a55abb550d AsmParser,TypeChecker: Fix typos.
Fix typos. The change requested as a separate PR during codespell PR.
Adapt tests as well.

Refs: #4442
2018-07-10 12:33:19 +02:00
Daniel Kirchner
ece9afef8f Check for matching number of components in TupleType::isImplicitlyConvertibleTo instead of the TypeChecker. 2018-07-10 12:17:01 +02:00
Daniel Kirchner
fe1d5da2a6 Turn uninitialized storage variables into an error. 2018-07-10 11:37:45 +02:00
Leonardo Alt
c1b67a845b Enforce error on hex number combined with unit denomination 2018-07-09 17:19:41 +02:00
chriseth
f3e0bf1dd8
Merge pull request #4418 from ethereum/initialConstants
Only allow compile-time constants for constant state variables.
2018-07-05 17:07:32 +02:00
chriseth
c8ac861832 Fix allocation of byte arrays. 2018-07-05 14:18:14 +02:00
chriseth
4a332ab324
Merge pull request #4409 from ethereum/viewPureChecker
Enforce state mutability in view pure checker.
2018-07-04 14:09:46 +02:00
Leonardo Alt
8202d512e0 Enforcing error on msg.gas and block.blockhash() 2018-07-04 11:42:05 +02:00
Daniel Kirchner
7ea8365ab0 Remove v050 check for enforcing "view" in ViewPureChecker. 2018-07-04 10:14:58 +02:00
chriseth
8ed3da1d5f Only allow compile-time constants for constant state variables. 2018-07-03 23:03:26 +02:00
chriseth
87241fd58c Fallback function has to be external. 2018-07-03 22:51:36 +02:00
chriseth
533d5d4b1c
Merge pull request #4379 from ethereum/constructorArgsTwice
Disallow constructor arguments given multiple times.
2018-07-03 22:49:02 +02:00
Daniel Kirchner
3984beef7d Remove constant keyword from parser. 2018-07-03 15:31:34 +02:00
Christian Parpart
1486d215b9 libsolidity: turns the var-keyword use from deprecation-warning to an error and include explicit type suggestion 2018-07-03 10:53:09 +02:00
chriseth
f7a9c4203e Disallow packed encoding of literals. 2018-07-03 01:02:00 +02:00
Daniel Kirchner
9aefe2f118 Remove trailing whitespace in missing visibility warning. 2018-07-02 13:14:58 +02:00
chriseth
85b9d3927a
Merge pull request #4224 from ethereum/revert_wrong_calldata
[BREAKING] Revert if calldata has wrong size
2018-07-02 12:55:22 +02:00
chriseth
f69e24c85e Disallow constructor arguments given multiple times. 2018-06-29 16:11:21 +02:00
chriseth
d469df45d8
Merge pull request #4352 from D-Nice/develop
Fixes storage ref var typo error from 'prefix' to 'suffix'
2018-06-29 12:27:29 +02:00
chriseth
4a842ecc82
Merge pull request #4097 from ethereum/noPackedExceptForPacked
[BREAKING] call only takes a single argument and does not pad
2018-06-27 18:29:01 +02:00
chriseth
92cb4acd8a Also mention regular abi.encode in error message. 2018-06-27 15:00:34 +02:00
Alex Beregszaszi
80b7d36187 Remove non-0.5.0 warning for emit keyword (make it mandatory) 2018-06-26 20:00:54 +02:00