Commit Graph

403 Commits

Author SHA1 Message Date
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
Daniel Kirchner
12aaca1645 Add payable and non-payable state mutability to AddressType. 2018-09-13 15:15:49 +02:00
Daniel Kirchner
879251a78b Update test suite to use address payable. 2018-09-12 16:21:43 +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
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
e6aa15bae1
Merge pull request #4895 from ethereum/abidecodesingle
Fix abi.decode returning single value.
2018-09-04 23:47:56 +02:00
chriseth
85debe77d9
Merge pull request #4866 from bakaoh/issue4743
Fix#4743: Incorrect source location for nameless parameters
2018-09-04 20:21:03 +02: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
Daniel Kirchner
82f512a7d4 Add return data to bare calls. 2018-09-04 13:31:10 +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
bakaoh
3d7b0d691f Update test to correct source location for nameless parameters 2018-08-31 09:54:11 +07:00
Leonardo Alt
583e7156ba Dynamic type as mapping key returns error instead of assertion fail 2018-08-16 11:59:41 +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
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
13905a2094 Update tests. 2018-08-14 18:53:06 +02:00
mingchuan
16de7a0493 New test cases. 2018-08-14 18:53:06 +02:00
Chase McDermott
b000a022f2 Update tests 2018-08-14 18:53:06 +02:00
chriseth
3f42118d19
Merge pull request #4765 from ethereum/fixes-issue-4673
[WIP] Fixes issue where computing storage size for a number would take too long (or even cause a crash).
2018-08-14 17:34:04 +02:00
Jesse Busman
c059119145 Add implicit convertibility to function pointer with higher state mutability 2018-08-14 17:13:10 +02:00
chriseth
ec7ccbdf86
Merge pull request #4782 from ethereum/encodePackedArrayOfStructs
Encode packed array of structs
2018-08-14 16:32:57 +02:00
Christian Parpart
43bda53410
Fixes issue where computing storage size for a number would take too long.
Fixes #4673.
2018-08-14 15:38:10 +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
dfcfc4c35b Add tests for mappings in function types. 2018-08-13 16:33:37 +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
a38352569b Tests. 2018-08-09 21:16:51 +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
Daniel Kirchner
99d3e8e45a Add back lost test case to a more reasonable location. 2018-08-08 12:48:59 +02:00
Daniel Kirchner
bb518b59aa Update and extend tests for return expressions. 2018-08-07 20:49:52 +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
Alex Beregszaszi
ce29aac8ad Add more syntax tests for enums and interfaces/libraries 2018-08-07 13:39:21 +01: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
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
2ab66bf798 Cleanup 0.5.0 test cases 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
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
Christian Parpart
9b8a05ebfb Update tests to remove support for loose assembly 2018-08-02 13:37:13 +01: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
e1b695f199
Merge pull request #4399 from ethereum/contractWhitespace
Remove trailing whitespace in all contract files.
2018-08-01 21:59:19 +01:00
Daniel Kirchner
8781990ff3 Remove trailing whitespace in all contract files. 2018-08-01 21:57:12 +02:00
Daniel Kirchner
4bcc4d2fcf Add additional test cases. 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
cb200cf7e1 Adds positive/negative tests for checking error on cyclic dependency checker exhaustion 2018-08-01 12:04:08 +01:00
chriseth
b800bfb021 Fix tests regarding contract type conversion. 2018-08-01 11:04:35 +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
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
Alex Beregszaszi
fe28814d83
Merge pull request #4625 from ethereum/pragma-cleanup
Remove unnecessary or stray version pragmas
2018-07-31 11:15:45 +01:00
Leonardo Alt
210fee571f Fix crash when FunctionType has undeclared type as parameter 2018-07-31 11:17:51 +02:00
Alex Beregszaszi
db6c1c8ddd Remove unnecesary version pragma from some syntax tests 2018-07-31 00:12:42 +01:00
Alex Beregszaszi
61b94b7ea4
Merge pull request #4556 from ethereum/library-data-locations
Add tests for data locations within libraries
2018-07-25 18:03:30 +01:00
Alex Beregszaszi
05e608d778
Merge pull request #4562 from ethereum/parser-tests
Add comprehensive tests for the parser
2018-07-25 16:38:54 +01:00
Alex Beregszaszi
7b5e912874 Add syntax tests for import statements 2018-07-25 11:01:41 +01:00
Alex Beregszaszi
49573bad46 Add syntax test for illegal pragma key 2018-07-25 11:01:41 +01:00
Alex Beregszaszi
fa68e0019f Add syntax test for location specifier redeclarations 2018-07-25 11:01:41 +01:00
Alex Beregszaszi
008eb1c2c9 Add syntax test for empty emit statement 2018-07-25 11:01:41 +01:00
Alex Beregszaszi
640b8af802 Add syntax tests for assembly block type (evmasm) 2018-07-25 11:01:41 +01:00
Alex Beregszaszi
ee85430f93 Add tests for data locations within libraries 2018-07-25 10:55:23 +01:00
Alex Beregszaszi
ab3978723a Add more tests for inlineasm/AsmAnalyzer 2018-07-25 10:45:31 +01:00
Alex Beregszaszi
d647761058 Add more comprehensive tests for embedded inline assembly LValue/RValue access 2018-07-25 10:45:31 +01:00
Alex Beregszaszi
1dbf2d1923 Add comprehensive syntax tests for indexed access 2018-07-24 20:26:36 +01:00
Alex Beregszaszi
3e17438c41 Add syntax tests for unknown / invalid pragma 2018-07-24 18:35:47 +01: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
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
Leonardo Alt
25fa1142bc Removing tests that are not useful anymore 2018-07-18 14:52:16 +01:00
Erik Kundt
b0b35e1e6b Adds warning if function is shadowing a contract. 2018-07-18 14:29:01 +02:00
Erik Kundt
de6cd2425b Adjusts syntax tests to new constructor syntax. 2018-07-18 14:29:01 +02:00
Erik Kundt
05d0e5c8fa Adds comment about reasoning behind syntax test. 2018-07-17 20:06:07 +02:00
Erik Kundt
7d8b39ff4f Removes obsolete syntax tests. 2018-07-17 19:30:15 +02:00
chriseth
dfd2fee91d Suggests external for fallback and interface functions. 2018-07-17 18:07:36 +02:00
Erik Kundt
75bba5c9f0 Adjusts tests to expect type errors on default visibility. 2018-07-17 18:03:35 +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
chriseth
29dae15c50
Merge pull request #4481 from ethereum/disallow-throw
[BREAKING] Deprecate the throw statement
2018-07-16 16:25:22 +02:00
Alex Beregszaszi
21e97da294 Deprecate the throw statement 2018-07-16 15:33:20 +02:00
Erik Kundt
63b6f1532e Specifies visibility in syntax test. 2018-07-16 14:49:55 +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
62645d5302 Update tests. 2018-07-12 20:33:52 +02:00
Daniel Kirchner
faa55f6544 Add test cases. 2018-07-12 20:14:31 +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
8b4b8bdbae Update test wrt requiring storage locations. 2018-07-12 12:54:42 +02:00
Chase McDermott
fc78b32847 Added default data locations to parameters for syntax tests. 2018-07-11 20:24:50 -05: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
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
dedf13633c Split test case into failing and succeeding case. 2018-07-11 15:37:37 +02:00
Daniel Kirchner
e8e5e12ad2 Fix literals with exponents with mantissa of zero. 2018-07-11 15:34:17 +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
e7dc9d27fc Cleans up syntax test. 2018-07-11 13:26:52 +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
4116704442 test: Fix typos.
Fix typos using codespell.

Refs: #4442
2018-07-10 22:57:59 +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
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
Daniel Kirchner
ad47fe23c1 Update tests. 2018-07-10 15:28:05 +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
8c0297b400 libsolidity/syntaxTests: Add a test case for unwanted named arguments.
Refs: #4442
2018-07-10 14:10:09 +02:00
Daniel Kirchner
afa5f528f5 Update tests. 2018-07-10 12:17:01 +02:00
Daniel Kirchner
46d6454b1f Update tests. 2018-07-10 11:38:32 +02:00
chriseth
ab99893396
Merge pull request #4440 from ethereum/hex_denomination_enforce_error
[BREAKING] Enforce error on hex combined with denomination
2018-07-09 17:57:16 +02:00
chriseth
e950fd434a
Merge pull request #4403 from ethereum/syntaxTestsVisibility
Specify default visibility in syntax tests (pt. 2)
2018-07-09 17:53:23 +02:00
Leonardo Alt
c1b67a845b Enforce error on hex number combined with unit denomination 2018-07-09 17:19:41 +02:00
Erik Kundt
19f6b5ad05 Updates interface constructor and function type test. 2018-07-06 19:42:44 +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
Erik Kundt
3f53db402f Fixes wrong visibility specifier in interface constructor test. 2018-07-04 15:15:30 +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
Erik Kundt
0dd3e6052c Fixes broken syntax tests. 2018-07-04 11:47:35 +02:00