Commit Graph

716 Commits

Author SHA1 Message Date
Erik Kundt
e6d87e54c8 Simplifies zero-length check for fixed-size arrays. 2018-09-22 03:07:12 +02:00
Erik Kundt
d821cbdff5 Moves length check to reference resolver. 2018-09-22 00:25:52 +02:00
Erik Kundt
ff5be17990 Disallows fixed-size multidim. arrays with zero-length. 2018-09-21 18:44:56 +02:00
chriseth
d0461c49fe Make non-payable default for conversion to address. 2018-09-20 14:31:04 +02:00
liangdzou
f3cbdadec7 Do not set to ref for explicit conversion and add assertion for array
type conversion. Also, add some test cases for #4901 and #4948.
2018-09-14 08:42:40 +02:00
Jordan Last
d0497aacc0 fixing rebase conflicts
add ElementaryTypes::BytesMemory and ElementaryTypes::StringMemory

fix rebase conflicts

fixing rebase conflicts

use make_shared instead of new

fix tabs and StateMutability parameter

create address and addressType functions, fix spaces in comment

fix typo and switch nonpayable to payable

fix spaces

fix comment again
2018-09-13 15:53:06 -06:00
Daniel Kirchner
12aaca1645 Add payable and non-payable state mutability to AddressType. 2018-09-13 15:15:49 +02:00
Daniel Kirchner
1ce3581a52 Accept `address payable` during parsing. 2018-09-11 14:52:23 +02:00
chriseth
522174890f
Merge pull request #4872 from bakaoh/issue4716
Crash when array index value is too large
2018-09-05 21:47:42 +02:00
Daniel Kirchner
87804b6419 Split IntegerType into IntegerType and AddressType. 2018-09-05 12:19:14 +02:00
chriseth
a996ea266c
Merge pull request #4590 from ethereum/msgValueModifier
Warn if modifier uses msg.value in non-payable function
2018-09-05 10:32:10 +02:00
bakaoh
a7ffff6a29 Fix #4716: Crash when array index value is too large 2018-09-05 10:54:38 +07:00
chriseth
624dbbe142 Fix abi.decode returning single value. 2018-09-04 18:19:00 +02:00
chriseth
9daac90cf7
Merge pull request #4888 from ethereum/disallow_single_statement_vardecl_if_while_for
Disallow single statement var decl in if/while/for without blocks
2018-09-04 17:24:06 +02:00
Leonardo Alt
ac8892e0e3 Review suggestions 2018-09-04 12:14:04 +02:00
Leonardo Alt
17176871ab Changed error message and added tests 2018-09-04 11:48:58 +02:00
chriseth
431c2fbcf3 Turn warning into error. 2018-09-03 18:35:57 +02:00
Erik Kundt
75a92b0ffd Warns if modifier uses msg.value in non-payable function. 2018-09-03 18:35:57 +02:00
Leonardo Alt
4522c804f3 Disallow single statement var decl in if/while/for without blocks 2018-09-03 18:21:57 +02:00
Chase McDermott
551e0bf47c Rename Location::Default to Location::Unspecified. 2018-08-17 18:15:22 -05:00
Leonardo Alt
583e7156ba Dynamic type as mapping key returns error instead of assertion fail 2018-08-16 11:59:41 +02:00
chriseth
cc6fa6d61f
Merge pull request #4822 from ethereum/addressStaticCall
Add ``staticcall`` to ``address``.
2018-08-16 00:13:21 +02:00
Leonardo Alt
faed71c6b1 Review suggestions 2018-08-15 17:11:18 +02:00
Leonardo Alt
b6c839e817 Disallow indexed reference types in events when using ABIEncoderV2 2018-08-15 17:11:18 +02:00
Daniel Kirchner
7ca0aaaf6f Add `staticcall to address`. 2018-08-15 16:06:48 +02:00
chriseth
6c0261e6ab
Merge pull request #4390 from ethereum/abidecode
Add abi.decode
2018-08-15 12:31:26 +02:00
chriseth
9328ea4c3c Add abi.decode(bytes data, (...)) 2018-08-15 10:45:16 +02:00
bakaoh
3fa8829845 Fixes #4718: High CPU usage when using large variable names 2018-08-15 10:23:08 +02:00
chriseth
cc54f6c425
Merge pull request #4738 from ethereum/dataloc_merged
Enforce data location.
2018-08-14 21:38:07 +02:00
chriseth
8f27fb1f4a
Merge pull request #4542 from aarlt/constructor_natspec
Fix: natspec annotations on constructors
2018-08-14 19:13:25 +02:00
Chase McDermott
683bce1869 Refactor data location check. 2018-08-14 18:07:15 +02:00
Christian Parpart
81faafe7f2
Adds support for structs in interfaces.
Closes #4733.
2018-08-14 15:36:03 +02:00
chriseth
6ca3973944
Merge pull request #4777 from ethereum/typeConversionMemory
Defaul data location for type conversions is memory.
2018-08-14 11:36:19 +02:00
chriseth
3dd31b704a
Merge pull request #4798 from ethereum/mappingArgumentsAndReturns
Mapping arguments and returns
2018-08-13 17:27:29 +02:00
Daniel Kirchner
341128962f Allow mappings of arrays as arguments and return values of internal functions. 2018-08-13 16:33:37 +02:00
Daniel Kirchner
4ae59acc09 Consider mappings return values in control flow analysis. 2018-08-13 16:33:37 +02:00
Daniel Kirchner
a9f31da411 Allow mapping arguments and return values in all internal functions. 2018-08-13 15:50:22 +02:00
chriseth
bd567a22c9 Defaul data location for type conversions is memory. 2018-08-13 14:38:12 +02:00
Daniel Kirchner
57ada1d69e Allow mapping arguments and return values in internal library functions. 2018-08-13 14:31:10 +02:00
Daniel Kirchner
7d7abeb149 Disallow ambiguous conversions between number literals and bytesXX types. 2018-08-13 14:27:01 +02:00
chriseth
c9ca083d14 Fix data location of external reference parameters. 2018-08-09 15:04:00 +02:00
Alex Beregszaszi
ed52f422b7 Rename FunctionKind SHA3 to KECCAK256 (as the instruction was renamed in libevmasm) 2018-08-08 22:37:40 +01:00
Alexander Arlt
f76d4d5919 Fix: natspec annotations on constructors
- natspec annotations on constructore where ignored.
2018-08-08 21:53:35 +02:00
chriseth
d634d20b5b
Merge pull request #4684 from ethereum/underscores_in_numeric_literals
[BREAKING] Underscores in numeric literals
2018-08-08 21:36:57 +02:00
Alex Beregszaszi
3c791d637d Provide nicer error message when referencing overloaded references 2018-08-08 15:59:24 +01:00
chriseth
de8e9114fd
Merge pull request #4740 from ethereum/enforceNumberOfReturnValues
Disallow empty return in function with return arguments.
2018-08-08 14:59:09 +02:00
Christian Parpart
b9222808f6
Cleanup & polish numbers-with-underscores parsing, also improving tests. 2018-08-08 13:38:46 +02:00
chriseth
fd12c718f6
Merge pull request #4745 from ethereum/nameResolverNoEarlyExit
Do not stop after the first error in reference resolution.
2018-08-08 12:49:46 +02:00
Balajiganapathi S
09a36cba02 Add stricter hex underscore rules 2018-08-08 12:05:51 +02:00
chriseth
43d6a9d763 Do not stop after the first error in reference resolution. 2018-08-07 22:04:59 +02: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
a949cffd24
Merge pull request #4699 from ethereum/cleanup_VariableDeclaration
libsolidity: Remove dead code wrt. VariableDeclaration::canHaveAutoType
2018-08-07 16:14:41 +02:00
Alex Beregszaszi
13e37df97c Allow enums in interfaces 2018-08-07 13:28:53 +01: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
296ba24f7f Do not crash on using _slot and _offset suffixes on their own 2018-08-07 12:14:12 +01:00
Christian Parpart
4c90ddf64a
libsolidity: Remove dead code wrt. VariableDeclaration::canHaveAutoType()
Closes #4667
2018-08-07 11:34:13 +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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
chriseth
5cf6fa84ac Provide better suggestions in error messages with respect to call and hash functions. 2018-06-25 17:17:48 +02:00
D-Nice
b2f0d1db43 Fixes storage ref var typo error from 'prefix' to 'suffix' 2018-06-25 11:14:19 -04:00
chriseth
23c4142005 Bare functions take single bytes argument. 2018-06-25 17:01:45 +02:00
Alex Beregszaszi
6d9a091a8e Keep the 'if it not used as an address' helper message for all cases of address related warnings 2018-06-25 16:25:21 +02:00
Alex Beregszaszi
48b003d4d4 Better wording for invalid address literal error 2018-06-25 16:17:50 +02:00
Jason Cobb
51567c0513 Change invalid (not exactly 160 bits long) address literal to error 2018-06-25 16:17:50 +02:00