Commit Graph

2501 Commits

Author SHA1 Message Date
chriseth
0852ccc318
Merge pull request #4764 from ethereum/cbor-version
Store compiler version in CBOR metadata
2019-05-09 10:10:50 +02:00
Mathias Baumann
0abe00d393 [Sol -> Yul] Fix ForLoops and implement WhileLoops 2019-05-09 09:46:19 +02:00
chriseth
f61348728c
Merge pull request #6704 from ethereum/abiEncodeV2Cleanup
Add ABIEncoderV2 cleanup tests.
2019-05-09 09:30:58 +02:00
Leonardo Alt
3d52a6ca68 [SMTChecker] Fix ICE in branch-inline function call-modify local variable 2019-05-09 09:15:11 +02:00
Daniel Kirchner
a6a28ac475 Allow overwriting the release flag for tests and adjust test suite to CBOR metadata. 2019-05-08 22:21:50 +02:00
Alex Beregszaszi
e121c8f3c7 Store compiler version in CBOR metadata 2019-05-08 22:21:50 +02:00
Daniel Kirchner
62dc8d0a87 Add ABIEncoderV2 cleanup tests. 2019-05-08 22:16:06 +02:00
chriseth
4d460915f3
Merge pull request #6655 from ethereum/storageMappings
[SolYul] Storage mappings
2019-05-08 20:38:46 +02:00
Leonardo
241b6b4bae
Merge pull request #6702 from ethereum/smt_fix_asgn_unsupported_type
[SMTChecker] Fix unsupported type assignment
2019-05-08 16:12:46 +02:00
chriseth
595544645e Mappings. 2019-05-08 15:54:52 +02:00
chriseth
4037da9575
Merge pull request #6663 from ethereum/events
Events
2019-05-08 14:58:41 +02:00
chriseth
54a3116ab8
Merge pull request #6698 from ethereum/asmPrinterOneLine
Format short blocks and loops on a single line.
2019-05-08 14:46:02 +02:00
Leonardo Alt
0b046897ae [SMTChecker] Fix unsupported type assignment 2019-05-08 14:28:23 +02:00
chriseth
b4d6f847b4 Events. 2019-05-08 13:29:11 +02:00
chriseth
5fb85a6118
Merge pull request #6662 from ethereum/msgSender
Implement most trivial members.
2019-05-08 13:28:43 +02:00
chriseth
0532a8cef2 Format short blocks and loops on a single line. 2019-05-08 13:28:00 +02:00
chriseth
97f16421f5
Merge pull request #6692 from ethereum/runEndToEndTestsViaYul
Run end to end tests via yul
2019-05-08 12:49:45 +02:00
chriseth
ed450a31a3
Merge pull request #6696 from ethereum/sol-yul-while
Fix wrong test settings
2019-05-08 12:48:57 +02:00
Mathias Baumann
85b67d3820 Fix wrong test settings 2019-05-08 10:46:38 +02:00
Daniel Kirchner
76b88bdfd8 Allow test cases to indicate fatal errors. 2019-05-07 18:12:21 +02:00
Daniel Kirchner
0a99519142 Move gas cost tests from command line tests to interactive gas cost tests. 2019-05-07 18:12:21 +02:00
chriseth
6c9c54a657
Merge pull request #6657 from ethereum/smt_tuple_multi_decl
[SMTChecker] Support tuples as multi var decl
2019-05-07 17:55:36 +02:00
chriseth
701aed4beb Also run some end to end tests via yul. 2019-05-07 17:37:29 +02:00
chriseth
e43df3b72a Move compile to cpp file. 2019-05-07 17:37:29 +02:00
chriseth
acca390ef5 Most trivial members. 2019-05-07 17:19:45 +02:00
chriseth
b99ad2aaa3
Merge pull request #6639 from ethereum/yul-require-assert
Yul generation of "require" and "assert"
2019-05-07 16:59:37 +02:00
Leonardo Alt
3c7540ceb2 [SMTChecker] Support tuples with multiple var decls 2019-05-07 16:57:27 +02:00
chriseth
c604481cef Logical operators. 2019-05-07 15:59:35 +02:00
chriseth
3fa4c3da1e Comparison operations. 2019-05-07 12:35:05 +02:00
Mathias Baumann
7f14352bbf Yul generation of require and assert 2019-05-07 12:19:41 +02:00
chriseth
ad817ac630 Tests for string literals. 2019-05-07 11:55:18 +02:00
chriseth
49b1ff76ae Test file reorganisation. 2019-05-07 11:55:07 +02:00
chriseth
e12da81899
Merge pull request #6672 from ethereum/soltest-string-literals
[soltest] Add support for string literals
2019-05-07 11:54:54 +02:00
Erik Kundt
9956319e8b Adds support for string literals to soltest. 2019-05-07 11:36:38 +02:00
Leonardo Alt
2139c20776 [SMTChecker] Support delete 2019-05-06 18:32:10 +02:00
Leonardo
e99efec085
Merge pull request #6652 from ethereum/smt_tuple_function
[SMTChecker] Support tuples as function calls with multiple return values
2019-05-06 15:19:24 +02:00
chriseth
dee1c1109c
Merge pull request #6668 from ethereum/smt_fix_short_circuit
Fix short circuit with assignments
2019-05-06 11:40:07 +02:00
chriseth
36c78baa41
Merge pull request #6646 from ethereum/storageAccess
[Yul] Storage access for sol -> yul
2019-05-06 11:33:36 +02:00
Leonardo Alt
80712f44cb Fix short circuit with assignments 2019-05-06 11:04:43 +02:00
Leonardo Alt
5440a53d4d [SMTChecker] Support tuples as function calls with multiple return values 2019-05-03 06:10:22 +02:00
chriseth
5bd3ed97bd
Merge pull request #6649 from ethereum/smt_tuple_asgn
[SMTChecker] Support tuple assignment
2019-05-02 18:43:16 +02:00
chriseth
e9f41d1148
Merge pull request #6604 from ethereum/library-self-delegatecall
Error on library calling itself externally
2019-05-02 17:25:25 +02:00
chriseth
aa4d4afcdc LValues and state variables of value type. 2019-05-02 17:03:22 +02:00
chriseth
dcca6f6318 Tests that compile via Yul have to use the Yul optimizer. 2019-05-02 17:02:05 +02:00
chriseth
f5f0804c19
Merge pull request #6504 from ethereum/soltest-interactive-update
[soltest] Improve interactive update routine
2019-05-02 16:41:52 +02:00
Leonardo Alt
204dcf1771 [SMTChecker] Support tuple assignments 2019-05-02 12:55:34 +02:00
chriseth
54775a7880
Merge pull request #6647 from ethereum/smt_tuple_decl
[SMTChecker] Support tuple type declaration
2019-05-02 12:49:50 +02:00
Erik Kundt
07744dbd12 Throws error on library calling itself externally. 2019-05-02 12:41:07 +02:00
chriseth
d4c4a473d8
Merge pull request #6622 from ethereum/warn-this-super
Issue warning for variables called `super` or `this`
2019-05-02 12:38:53 +02:00
Leonardo Alt
6c7527ac90 [SMTChecker] Support tuple type declaration 2019-05-02 12:05:21 +02:00
Mathias Baumann
cf35e5ba02 Issue warning for variables called super or this 2019-05-02 11:30:24 +02:00
Leonardo Alt
dd4e938265 [SMTChecker] Fix ICE in inherited state var 2019-05-02 10:03:12 +02:00
Leonardo Alt
a6db37ac9c [SMTChecker] Fix bad cast in base constructor modifier. 2019-04-30 18:48:13 +02:00
chriseth
dc13469593
Merge pull request #6589 from ethereum/addReturn
[Yul] Add code generation for "return" and for loops.
2019-04-30 17:07:45 +02:00
Erik Kundt
8103d22acf Takes type formats in isoltest from contract ABI. 2019-04-30 16:01:04 +02:00
Mathias Baumann
00172192bf Reorganize 'shadows builtin" syntax tests 2019-04-30 15:37:03 +02:00
chriseth
bab2391a7c Test case for loops. 2019-04-30 13:10:37 +02:00
chriseth
c1ca16cd33 Implement return. 2019-04-30 13:10:36 +02:00
Leonardo Alt
0cdb9e48b0 Update SMTChecker JSON tests expectation 2019-04-30 11:08:36 +02:00
Erik Kundt
a6cc296cd9 Adds error reporter for auto-updates in (i)soltest. 2019-04-29 15:56:15 +02:00
chriseth
39d153b7a1
Merge pull request #6570 from ethereum/fixMetaSettings
Move metadata settings into its own object.
2019-04-29 15:09:27 +02:00
chriseth
e8ba10bfaa
Merge pull request #6612 from ethereum/abi-functions-assertion
Unifies behaviour for member access of ABI functions
2019-04-29 15:02:40 +02:00
chriseth
3a19d83671
Merge pull request #6578 from ethereum/fix_base_overload
Fix call to base class overloaded functions
2019-04-29 14:33:52 +02:00
Erik Kundt
381ed5a302 Unifies behavior for member access of ABI functions. 2019-04-29 14:27:10 +02:00
chriseth
eef3f95724 Move metadata settings into its own object. 2019-04-29 14:19:27 +02:00
Erik Kundt
c02257207b Removes assert on magic ABI functions during codegen. 2019-04-26 15:01:35 +02:00
Leonardo Alt
371b37b660 Fix direct call to base class overloaded functions 2019-04-26 09:34:15 +02:00
chriseth
00d81929b1
Merge pull request #6576 from ethereum/isoltest-evmversion-comparator
Allow additional EVMVersion comparators in isoltest
2019-04-25 17:37:46 +02:00
chriseth
169b555a22
Merge pull request #6507 from ethereum/smt_address_members
[SMTChecker] Address members
2019-04-25 17:29:42 +02:00
Erik Kundt
15d753a3e0 Allows additional EVMVersion comparators in isoltest. 2019-04-25 17:13:17 +02:00
chriseth
f9ec1231b6 Support period as part of identifiers for Yul and Inline Assembly. 2019-04-25 16:48:16 +02:00
chriseth
309d3e65cf
Merge pull request #6585 from ethereum/fixInvalidFunctionTags
Fix invalid function tags
2019-04-25 16:30:37 +02:00
Leonardo Alt
fc482de695 [SMTChecker] Support address members 2019-04-25 16:24:36 +02:00
chriseth
5b991c1e59 Fix use of uninitialized functions stored in storage. 2019-04-25 15:40:48 +02:00
Mathias Baumann
1ef213cc15 Sol -> Yul: Implement explicit cast 2019-04-24 22:52:17 +02:00
Mathias Baumann
944ac6fb6d Sol -> Yul Generation: Implicit conversions 2019-04-24 22:52:17 +02:00
Leonardo Alt
dd1afeba52 [SMTChecker] Support this as address 2019-04-18 17:56:52 +02:00
chriseth
b02fbc5d02
Merge pull request #6503 from ethereum/inlineAsm-yul
Inline asm yul
2019-04-18 17:15:09 +02:00
Mathias Baumann
3d061c83d7 IR: Generate inline asm blocks 2019-04-18 16:49:19 +02:00
chriseth
fce19bde58
Merge pull request #6545 from ethereum/smt_contracts
[SMTChecker] Support contract type
2019-04-18 13:01:18 +02:00
chriseth
0bfd587363
Merge pull request #6527 from rocky/move-SemVerHandler
Move SemVerHandler to analysis to parsing to increase modularity...
2019-04-18 13:00:45 +02:00
chriseth
fb302c1c4f
Merge pull request #6473 from ethereum/libeventhash-6435
Fix external ABI type name for contracts
2019-04-18 12:53:34 +02:00
Mathias Baumann
0f4b53e9a0 Fix external ABI type name for contracts 2019-04-18 11:39:48 +02:00
Leonardo Alt
ecd89393ee [SMTChecker] Support contract type 2019-04-17 16:30:11 +02:00
rocky
b424446c5f Move SemVerHandler to analysis to parsing to increase modularity...
If ever you want to separate building analysis from scanning/parsing/ast, this will help.
2019-04-17 10:13:42 -04:00
chriseth
4509e8efbb
Merge pull request #6543 from ethereum/typeprovider-bits
TypeProvider bits
2019-04-17 15:50:08 +02:00
chriseth
922ab0d72d
Merge pull request #6534 from ethereum/reuseLiteralContent-6472
Re-produce the original 'useLiteralContent' setting
2019-04-17 15:41:55 +02:00
Mathias Baumann
b24dd42e47 Re-produce the original 'useLiteralContent' setting 2019-04-17 14:54:51 +02:00
Christian Parpart
721bf367a3
[libsolidity] TypeProvider: eliminate redundant "Type" suffix in provider function signatures. 2019-04-17 14:42:07 +02:00
Grant Wuerker
69b4ce36de Some move semantics improvements. 2019-04-17 14:19:48 +02:00
Christian Parpart
58a45f2cb6 [libsolidity] TypeProvider: adds explicit uint256() accessor and removes default params in integerType(...). 2019-04-16 18:28:40 +02:00
Christian Parpart
bf43eebea9 libsolidity: Introducing TypeProvider API, for clear type system ownership. 2019-04-16 18:26:45 +02:00
Christian Parpart
862d798047 [test] AnalysisFramework's instance of CompilerStack to be lazily instanciated. 2019-04-16 18:25:03 +02:00
Mathias Baumann
efc8d79d53 Fix wrong location for inline asm blocks 2019-04-15 16:40:07 +02:00
chriseth
bf5792f7ca
Merge pull request #6483 from ethereum/smt_support_mod
[SMTChecker] Support mod
2019-04-15 13:42:18 +02:00
chriseth
73ac8f6220
Merge pull request #6421 from ethereum/smt_fix_variable_usage
[SMTChecker] Refactor VariableUsage
2019-04-15 13:39:10 +02:00
Leonardo Alt
af9f16e014 [SMTChecker] Support mod 2019-04-12 12:39:25 +02:00
Daniel Kirchner
65991c0922
Merge pull request #6481 from ethereum/smt_inline_asm_warning
[SMTChecker] Show unsupported warning for asm blocks
2019-04-12 12:36:26 +02:00
Leonardo
dbc9442f9c
Merge pull request #6484 from sifmelcara/create-SourceReferenceFormatter-shortcut
Add a shortcut for formatting error information
2019-04-12 12:34:08 +02:00
chriseth
565d9837e4 Virtual function calls. 2019-04-11 15:45:43 +02:00
chriseth
18ab8aeb85 Overflow-checked addition. 2019-04-11 15:45:14 +02:00
Mathias Baumann
71d752d878 Fix infinite loop when encountering unexpected test specifications 2019-04-11 13:37:42 +02:00
mingchuan
f1374066af
Add shortcuts for formatting error information 2019-04-10 18:44:45 +08:00
Leonardo Alt
4fe303530a [SMTChecker] Show unsupported warning for asm blocks 2019-04-05 16:41:15 +02:00
Leonardo Alt
79d8a4e13a [SMTChecker] Refactor VariableUsage 2019-04-05 11:38:37 +02:00
chriseth
3df4936b6f
Merge pull request #6179 from ethereum/solidity-yul1
Solidity to Yul compiler
2019-04-04 16:33:39 +02:00
chriseth
141c6da534 Semantic tests for compilation via Yul. 2019-04-04 15:02:43 +02:00
Daniel Kirchner
d0fda7ca7c
Merge pull request #6262 from ethereum/abiEncodeCalldataArray
ABIEncoderV2: implement encoding of calldata arrays and structs.
2019-04-04 14:51:45 +02:00
chriseth
c0ce540e26 Run tests with both ABIV2 and Yul optimizer. 2019-04-04 13:18:30 +02:00
Daniel Kirchner
91a2a9a9c3 Implement ABI encoding of calldata arrays and structs. 2019-04-04 13:05:32 +02:00
chriseth
8c570f31c5
Merge pull request #6442 from ethereum/smt_unary_inc_dec
[SMTChecker] Support unary inc/dec for array/mapping access
2019-04-04 11:45:13 +02:00
chriseth
ee2f566207
Merge pull request #5815 from ethereum/strict-abi-decoder
Strict abi decoder (validate incoming data instead of cleaning it)
2019-04-04 11:13:44 +02:00
Daniel Kirchner
5ff1f85231 Adjust semantics tests. 2019-04-03 17:59:04 +02:00
chriseth
aeb260cde1 Add settings framework for interactive tests. 2019-04-03 14:58:20 +02:00
chriseth
3282c72a21 Update tests. 2019-04-03 11:32:03 +02:00
Alex Beregszaszi
43008dd08e Validate value types in decoder of ABIEncoderV2. 2019-04-03 11:32:02 +02:00
Leonardo Alt
aa9b9aa87e [SMTChecker] Support unary inc/dec for array/mapping access 2019-04-02 16:53:19 +02:00
Daniel Kirchner
ab8dfed144 Implement copying recursive structs from storage to memory. 2019-04-02 16:01:44 +02:00
chriseth
f9820adb5e
Merge pull request #6396 from ethereum/optSetForAsmStack
Make optimiser settings available to assembly stack.
2019-03-28 19:03:23 +01:00
chriseth
84251e5a22
Merge pull request #6405 from ethereum/smt_compound_assignment
[SMTChecker] Support arithmetic compound assignment operators.
2019-03-28 18:27:25 +01:00
chriseth
3264e9abf0 Make optimiser settings available to assembly stack. 2019-03-28 18:24:13 +01:00
Leonardo Alt
dadafed022 Short circuit tests 2019-03-28 16:08:30 +01:00
Leonardo Alt
a7e826a224 [SMTChecker] Implement short circuit 2019-03-28 16:08:30 +01:00
chriseth
a1d59dfb4c
Merge pull request #6371 from ethereum/smt_variable_usage_function_calls
[SMTChecker] Merge SSA state vars properly
2019-03-28 15:54:31 +01:00
Leonardo Alt
c7e5468505 Arithmetic compound assignment operators tests 2019-03-28 15:27:52 +01:00
chriseth
2b0c653f57
Merge pull request #6241 from ethereum/yul-bc-codegen
Yul codegen for break & continue statements
2019-03-28 14:48:50 +01:00
Leonardo Alt
2764d2f525 Tests that used to give false negatives 2019-03-28 14:32:47 +01:00
Christian Parpart
b8c6274179 [yul] Implements EVM codegen for break/continue plus respective tests & ChangeLog entry. 2019-03-28 14:09:25 +01:00
chriseth
2308904f68 Remove "using namespace" from header and move Instruction to dev::eth. 2019-03-28 13:48:11 +01:00
chriseth
72c0e44907
Merge pull request #6338 from ethereum/compilerstack-setsource
Introduce setSources in CompilerStack
2019-03-26 15:31:57 +01:00
chriseth
d079cdbfaa
Merge pull request #6362 from ethereum/fixABIEncoderV2StorageRead
Fix abi encoder v2 storage read
2019-03-26 10:23:08 +01:00
Alex Beregszaszi
0432401e20 Emit warning when using the Yul optimiser 2019-03-25 18:38:06 +01:00
chriseth
6b9c44d5f9 Tests for arrays. 2019-03-25 18:28:44 +01:00
chriseth
3039456f48 Tests for encoder from storage bug. 2019-03-25 18:28:43 +01:00
Alex Beregszaszi
3ee8bb6814 Use setSource in tests 2019-03-25 15:11:08 +00:00
Alex Beregszaszi
d9303d4cfb Split imports tests to avoid resetting CompilerStack 2019-03-25 11:33:21 +00:00
Alex Beregszaszi
532d43e0c8 Exclude metadata in compiler test
In SolidityCompiler/does_not_include_creation_time_only_internal_functions.
2019-03-22 17:35:15 +00:00
Alex Beregszaszi
3bc2c35cc4 Support compiling Yul within StandardCompiler 2019-03-22 01:35:16 +00:00
Alex Beregszaszi
ed1ad2fc14
Merge pull request #6317 from ethereum/byte_optimization_bugfix
Fixes bug in byte optimization rule and adds tests.
2019-03-21 21:49:34 +00:00
Leonardo Alt
2ae778bf0a [SMTChecker] Add buggy short circuit test 2019-03-21 18:47:14 +01:00
Bhargava Shastry
f7b5a27581 Fixes bug in byte optimization rule and adds tests. 2019-03-21 14:29:06 +01:00
chriseth
d381e26fc8 Rename "enabled" optimizer setting stage to "standard". 2019-03-21 11:04:40 +01:00
Mathias Baumann
8e899a0d32 Disallow internal function types as parameters for public/external library function 2019-03-21 07:25:57 +01:00
chriseth
064f73be0c
Merge pull request #6249 from ethereum/optimizerTests
Change optimizer tests so that they also always test the peephole optimizer.
2019-03-20 18:38:06 +01:00
chriseth
9aab2329ed
Merge pull request #6244 from ethereum/smt_modifiers
[SMTChecker] Support modifiers
2019-03-20 18:04:28 +01:00
chriseth
d788a88873 Use "none" and "full" optimizer settings in the optimizer tests. 2019-03-20 16:11:37 +01:00
chriseth
2fd6661b09 Add tests for some optimizer rules. 2019-03-20 16:10:59 +01:00
Mathias Baumann
84b68006ba Fix function calls with named arguments for overloaded functions 2019-03-20 14:54:41 +01:00
Leonardo Alt
9659f40c8d [SMTChecker] Support modifiers 2019-03-20 11:32:20 +01:00
chriseth
4d89fc1644
Merge pull request #6320 from ethereum/callvalue_nonpayable
Inline Assembly: Issue error for callvalue in nonpayable function
2019-03-20 10:07:09 +01:00
Leonardo Alt
0386d39942 Add test with internal function 2019-03-19 20:45:27 +01:00
Leonardo Alt
9acec99c31 Issue error for callvalue in nonpayable function 2019-03-19 20:45:27 +01:00
chriseth
87ebb16890 Use ABI_CHECK for event data comparison. 2019-03-19 17:23:50 +01:00
Daniel Kirchner
a178486436 Review suggestions. 2019-03-18 14:34:00 +01:00
Daniel Kirchner
4a28e1eb43 Support EVM Version rules for extracted tests. 2019-03-15 17:23:20 +01:00
chriseth
308e3ef1cd Add test for standard compiler. 2019-03-14 15:34:23 +01:00
chriseth
49d914a391 Fix and test yul stack optimization flag for commandline interface. 2019-03-14 15:34:23 +01:00
chriseth
6d1ed93247 Use stack optimizations. 2019-03-14 15:34:23 +01:00
Erik Kundt
b9a7a88346 Improves Result<T> in order to prevent defects. 2019-03-14 14:33:28 +01:00
Erik Kundt
6ac5c52528 Implements merging of Result<T>. 2019-03-14 14:33:28 +01:00
Erik Kundt
ac5f860df9 Fixes hex string update via isoltest. 2019-03-14 11:01:26 +01:00
Erik Kundt
2a536911f2 Prints returned / expected byte ranges if conversion failed. 2019-03-13 17:45:02 +01:00
chriseth
2896d6176b
Merge pull request #6120 from ethereum/soltest-hex-strings
[soltest] Add support for hex string literals
2019-03-13 14:12:32 +01:00
Erik Kundt
25ddf85d95 Adds support for hex string literals in soltest. 2019-03-13 12:37:33 +01:00
chriseth
58a3f3cf68
Merge pull request #6248 from ethereum/shiftopt-fix-overflow
Fixes u256 overflow in logical shift optimization rule and adds tests.
2019-03-13 12:02:33 +01:00
Bhargava Shastry
515fa872c8 Fixes u256 overflow in logical shift optimization rule and adds tests. 2019-03-13 11:19:20 +01:00
Erik Kundt
39c45ac8ed Moves ecrecover tests to isoltest. 2019-03-13 10:53:10 +01:00
chriseth
8445449c7f
Merge pull request #6187 from ethereum/filter-library-abi-3409
Exclude internal functions in library ABIs
2019-03-11 17:39:51 +01:00
chriseth
6683ec90ca
Merge pull request #6209 from ethereum/dynamicCalldataStructs
Allow dynamically encoded calldata structs with ABIEncoderV2.
2019-03-11 17:05:34 +01:00
Daniel Kirchner
66fc7ffab2 Allow dynamically encoded calldata structs with ABIEncoderV2. 2019-03-11 16:40:13 +01:00
Mathias Baumann
fbbd03dbd7 Exclude internal functions in library ABIs 2019-03-11 16:33:44 +01:00
Mathias Baumann
e411a502fd Fix missing trailing dot in error message 2019-03-11 16:15:18 +01:00
Daniel Kirchner
f805939429
Merge pull request #6221 from ethereum/soltest-signature-struct-arrays
[soltest] Allow struct array in function signatures
2019-03-11 15:32:42 +01:00
Alex Beregszaszi
859f905b2e
Merge pull request #6237 from ethereum/smt_merkle_proof_test
[SMTChecker] Add MerkleProof test that used to crash
2019-03-11 15:17:46 +01:00
chriseth
0f98f2a15e
Merge pull request #6236 from ethereum/better-errors
isImplicitlyConvertibleTo(): Add better error messages
2019-03-11 14:58:45 +01:00
Erik Kundt
cd9c0914cb Allows struct array in soltest function. 2019-03-11 14:36:16 +01:00
Alex Beregszaszi
6718b62f94
Merge pull request #6233 from ethereum/metadata-tests
Improve metadata tests (add CBOR parser)
2019-03-11 14:35:04 +01:00
Leonardo Alt
365b59b1f9 Add MerkleProof test that used to crash 2019-03-11 14:29:47 +01:00
Mathias Baumann
d70cb375cf isImplicitlyConvertibleTo(): Add better error messages 2019-03-11 13:38:02 +01:00
Alex Beregszaszi
67c15a208d Use CBOR parser in metadata tests 2019-03-11 13:01:37 +01:00
Leonardo Alt
a8209e9899 [SMTChecker] Shortcut RationalNumber expressions 2019-03-11 12:53:49 +01:00
Alex Beregszaszi
12f34c8229 Add onlyMetadata helper in test/Metadata 2019-03-09 12:34:26 +01:00
chriseth
5c4a3aa270
Merge pull request #6213 from ethereum/iszeroJump
Peephole optimizer for "iszero iszero <tag> jumpi".
2019-03-07 18:16:29 +01:00
chriseth
0eb799424d
Merge pull request #6183 from ethereum/soltest-alignment
[soltest] Introduce explicit alignment
2019-03-07 17:43:59 +01:00
chriseth
e0d1b2f5b3 Peephole optimizer for "iszero iszero <tag> jumpi". 2019-03-07 15:52:02 +01:00
Leonardo Alt
02d0e609b9 [SMTChecker] Support enums 2019-03-07 15:15:12 +01:00
chriseth
8d9be8bb6d
Merge pull request #6211 from ethereum/fixFormatting
Fix formatting and compilation error.
2019-03-06 22:55:02 +01:00
chriseth
aa062221bb Tabs, not spaces! 2019-03-06 21:32:10 +01:00
chriseth
0f7b1b31a1
Merge pull request #5996 from ethereum/calldataArrays
Allow calldata arrays with dynamically encoded base type.
2019-03-06 19:55:57 +01:00
Erik Kundt
a40fbf0fc4 Right-aligns hex numbers and introduces alignment built-ins. 2019-03-06 18:24:13 +01:00
chriseth
3ccf73b3eb
Merge pull request #6204 from ethereum/soltest-signature-arrays
[soltest] Add support for arrays in function signatures
2019-03-06 18:12:39 +01:00
Daniel Kirchner
e3148b5c45 Tests for arrays with dynamically encoded base types. 2019-03-06 18:04:24 +01:00
Daniel Kirchner
f7c6eda2c3 Allow calldata arrays with dynamically encoded base type. 2019-03-06 18:04:12 +01:00
chriseth
cdf29277f7
Merge pull request #6055 from ethereum/smt_arrays
[SMTChecker] Add support to arrays
2019-03-06 18:00:23 +01:00
Erik Kundt
ab31c28ed9 Adds support for arrays in function signatures. 2019-03-06 16:47:00 +01:00
Leonardo Alt
29b2ab6f66 Handle aliasing 2019-03-06 11:29:54 +01:00
Leonardo Alt
cb6c2b33f8 Add tests 2019-03-06 11:29:26 +01:00
Leonardo Alt
e74f58130e Add SMT type support to Solidity arrays 2019-03-06 11:29:26 +01:00
Mathias Baumann
9919670ddd Check base contracts for abi encoder compatibility 2019-03-06 11:16:54 +01:00
chriseth
6c9961e040
Merge pull request #5941 from ethereum/metadata-compilerstack
Metadata should not require compilation
2019-03-04 18:53:07 +01:00
Alex Beregszaszi
fcbb8ec51c Allow returning metadata in StandardCompiler without compilation 2019-03-04 16:19:55 +01:00
chriseth
9a949c1bda Set default EVM version to Petersburg. 2019-03-04 14:53:00 +01:00
Alex Beregszaszi
ecd246aeb6 Support petersburg in evmVersion 2019-03-04 14:10:41 +01:00
chriseth
2e0ea16a0f
Merge pull request #5959 from ethereum/optimiser2
Introduce global optimiser settings.
2019-03-04 12:54:59 +01:00
chriseth
5490a5cd37
Merge pull request #6115 from ethereum/fixUnavailableOpcodes
Make unavailable opcodes errors.
2019-03-04 12:26:22 +01:00
chriseth
43850d55f3 Update tests. 2019-03-04 11:44:54 +01:00
chriseth
851dd635eb Remove defaults in constructor arguments. 2019-03-04 11:41:52 +01:00
chriseth
4d10f4b4cf Process and validate standard-json optimizer settings. 2019-03-04 11:40:28 +01:00
Alex Beregszaszi
cf5c13f9c7 Introduce global optimiser settings. 2019-03-04 11:40:28 +01:00
chriseth
8f5e12c192 Make unavailable opcodes errors. 2019-02-28 22:20:01 +01:00
Alex Beregszaszi
c3ab43dca7 Remove blockhash workaround in tests
This is now obsolete as final constantinople doesn't contain the blockhash EIP.

Revert 3e55aa3fa2.
2019-02-28 21:17:58 +00:00
chriseth
ab33ff1408
Merge pull request #6132 from ethereum/ossfuzz-nullref-typechecker
TypeChecker: Check if type exists before dereferencing it
2019-02-28 16:38:54 +01:00
Mathias Baumann
50b4193705 TypeChecker: Check if type exists before dereferencing it 2019-02-28 15:49:15 +01:00
chriseth
6aab3b1369
Merge pull request #6139 from ethereum/compilerstack-restrict
Restrict the state when settings can be altered in CompilerStack
2019-02-28 14:52:52 +01:00
Alex Beregszaszi
b04b86a938 Restrict the state when settings can be altered in CompilerStack 2019-02-28 12:55:36 +00:00
Mathias Baumann
f782125463 Fix SMT Checker crash due to missing type information 2019-02-28 11:55:45 +01:00
Erik Kundt
e13bb994fb Fix ambiguous type on Windows. 2019-02-27 10:40:58 +01:00
chriseth
ebec54aacb
Merge pull request #6093 from ethereum/mapping-string-keys
Allow dynamic types in public mappings
2019-02-26 17:05:18 +01:00
chriseth
4e74c508ce
Merge pull request #6089 from ethereum/extcodehash
Consider extcodehash as part of Constantinople
2019-02-26 17:04:01 +01:00
Mathias Baumann
e4a52aa2f6 Allow dynamic types in public mappings 2019-02-26 15:48:54 +01:00
Alex Beregszaszi
d2f493268b Provide access to the name of contracts. 2019-02-26 14:07:03 +00:00
Alex Beregszaszi
cb7b053a4a Consider extcodehash as part of Constantinople 2019-02-26 12:40:31 +00:00
Erik Kundt
3076d80480 Adds syntax test that covers arrays of contracts. 2019-02-25 23:05:33 +00:00
Erik Kundt
2d0daae796 Disallows index access on contracts and libraries. 2019-02-25 23:05:33 +00:00
Alex Beregszaszi
a498062816 Fix gas test after using shifts in constant optimiser 2019-02-25 19:44:47 +00:00
chriseth
7a2645f7d2
Merge pull request #6079 from ethereum/shift-tests
Add more test cases for shifts with constants
2019-02-25 16:28:06 +01:00
Alex Beregszaszi
7d52884247 Add more test cases for shifts with constants 2019-02-25 14:44:30 +00:00
Leonardo Alt
2405b2151a EVMVersion in langutil namespace instead of solidity 2019-02-25 15:29:57 +01:00
Erik Kundt
f683ceb3f8 Adds support for boolean literals in soltest. 2019-02-21 23:28:48 +01:00
chriseth
773a3ff880
Merge pull request #6036 from ethereum/soltest-hexliterals
[soltest] Add support for left-aligned hex literals
2019-02-21 19:11:27 +01:00
chriseth
13667d42ec
Merge pull request #6067 from ethereum/asm-parser-fatal
Do not ignore fatal error in AsmParser for inline assembly
2019-02-21 18:12:13 +01:00
Alex Beregszaszi
fcf884f201 Do not ignore fatal error in AsmParser for inline assembly 2019-02-21 16:18:53 +00:00
Erik Kundt
d40928f5fc Adds support for hex literals in soltest. 2019-02-21 17:04:40 +01:00
chriseth
98012135c6
Merge pull request #6060 from ethereum/soltest-formatting
[soltest] Create dedicated formatting
2019-02-21 16:43:50 +01:00
Erik Kundt
d1ad431887 Moves soltest function call to separate class. 2019-02-21 16:39:31 +01:00
chriseth
15d275ed37
Merge pull request #6023 from ethereum/assignment-whitespace-op
Add extra token for assembly assignment
2019-02-21 14:43:29 +01:00
Mathias Baumann
f395d5bab4 Add extra token for assembly assignment
Adding an extra token for := prevents whitespace between : = being valid
2019-02-21 13:58:21 +01:00
chriseth
27d936cf44
Merge pull request #5102 from ethereum/abiencoderv2-tests
Run all end-to-end tests with ABIEncoderV2
2019-02-21 13:11:06 +01:00
chriseth
8ace2c5b11 Special treatment for differences between ABI encoders. 2019-02-21 11:11:29 +00:00
Erik Kundt
6c7ad42e2d Shares langutil code with soltest. 2019-02-21 01:04:34 +01:00
Alex Beregszaszi
219406f45b Add CLI option to soltest to always use ABIEncoderV2 2019-02-20 16:55:19 +01:00
chriseth
b14d22d11e Tests for events with structs in libraries. 2019-02-20 14:35:02 +01:00
chriseth
0613c69c4a
Merge pull request #6043 from ethereum/asm-jump-invalidlabel
Proper error message for missing variables in inline assembly
2019-02-20 14:32:40 +01:00
chriseth
fcd82025de
Merge pull request #6046 from ethereum/smt_division_tests
[SMTChecker] Move tests that contain division to boost tests
2019-02-20 14:29:15 +01:00
Leonardo Alt
123d0857c5 [SMTChecker] Move tests that contain division to boost tests 2019-02-20 12:17:03 +01:00
Alex Beregszaszi
687522a2f5 Move inline assembly tests from nameAndTypeResolution to inlineAssembly 2019-02-20 11:00:02 +00:00
Alex Beregszaszi
52496ea719 Proper error message for missing variables in inline assembly 2019-02-20 10:36:55 +00:00
Mathias Baumann
a63f7ca9df Fix crash due to missing type info 2019-02-19 17:28:44 +01:00
chriseth
d9e4a10d5a
Merge pull request #6000 from ethereum/fixECRecoverABIV2
Fixed internal error related to ecrecover and ABIEncoderV2.
2019-02-19 14:36:08 +01:00
chriseth
874648b924
Merge pull request #5999 from ethereum/smt_lazy_overflow
[SMTChecker] Check for under/overflow in the end of the function
2019-02-19 14:28:55 +01:00
chriseth
05541e5adb Fixed internal error related to ecrecover and ABIEncoderV2. 2019-02-19 14:17:03 +01:00
chriseth
d5791fef41 Fix combination of delegatecall and ABIEncoderV2.
We can set the flag to false for bare delegatecall, because we always
send a memory string and never a storage reference.
2019-02-19 13:57:03 +01:00
chriseth
55c4131a03
Merge pull request #6030 from ethereum/fixABIEncoderV2Mapping
Allow cleanup for mappings (do nothing).
2019-02-19 13:56:21 +01:00
Leonardo Alt
34470f3549 [SMTChecker] Only check for overflow/underflow in the end of the function 2019-02-18 23:55:58 +01:00
Alex Beregszaszi
2949bd14dd
Merge pull request #6028 from ethereum/warn-about-unused-struct-array-expr
Detect custom type expressions that have no effect
2019-02-18 21:12:04 +00:00
Mathias Baumann
e3d4155fa8 Detect custom type expressions that have no effect 2019-02-18 18:59:31 +01:00
chriseth
c690f679cb Allow cleanup for mappings (do nothing). 2019-02-18 18:50:22 +01:00
chriseth
968ca88690
Merge pull request #5872 from ethereum/semantic-tests-split
Semantic test infrastructure
2019-02-18 18:13:55 +01:00
chriseth
1b6d87c5bd
Merge pull request #5979 from ethereum/fix-context-for-hint
Make sure "value" error hint is only displayed in the right context
2019-02-18 17:35:31 +01:00
chriseth
e88765f936
Merge pull request #6022 from ethereum/fixFunctionScoping
Properly detect name clashes with functions before their definition.
2019-02-18 16:47:21 +01:00
Mathias Baumann
ee9394b4aa Move 'warnUnused' tests to subfolder 2019-02-18 16:42:58 +01:00
Mathias Baumann
093b9ced97 Make sure "value" error hint is only displayed in the right context
Before, the hint would be shown for any "value" member, even a user-specified one.
2019-02-18 16:29:57 +01:00
chriseth
cb0ad2266c
Merge pull request #6008 from ethereum/smt_fix_abstract_assignment
[SMTChecker] Assert type is not function when assigning
2019-02-18 14:54:20 +01:00
chriseth
b4cd2d6a93 Properly detect name clashes with functions before their definition. 2019-02-18 14:51:05 +01:00
chriseth
db7b38e3c4
Merge pull request #5978 from ethereum/fix-broken-hint
Fix error msg hint for non-payable contracts
2019-02-18 11:49:07 +01:00
Erik Kundt
dacad629ef Adds semantic tests to test framework and isoltest. 2019-02-15 13:27:15 +01:00
Mathias Baumann
419a12db03 TypeChecker: Add test to increase coverage 2019-02-14 13:41:33 +01:00
Leonardo Alt
22cdfb18d4 [SMTChecker] Assert type is not function when assigning 2019-02-14 13:32:56 +01:00
Mathias Baumann
10a9960eb3 Fix error msg hint for non-payable contracts 2019-02-14 11:39:19 +01:00
chriseth
c5879589af
Merge pull request #5998 from ethereum/codingStyleCheck
More coding style checks
2019-02-13 17:36:34 +01:00
chriseth
17ea467e5b Fix style of "const". 2019-02-13 16:34:53 +01:00
Mathias Baumann
1e603c27ea Add tests to increase TypeChecker.cpp coverage 2019-02-13 16:31:26 +01:00
Mathias Baumann
6a6cc27b71 Rename & move tests of group typeChecking to subfolder 2019-02-13 15:52:31 +01:00
Erik Kundt
190634e1f9 Implements infrastructure for semantic tests. 2019-02-13 13:05:58 +01:00
chriseth
0bd049c849 Adapet uses of AssemblyStack. 2019-02-13 12:23:07 +01:00
chriseth
9ab72f0188
Merge pull request #5971 from ethereum/overloadedEvents
More tests for overloaded events.
2019-02-12 12:00:02 +01:00
chriseth
091bbdb459 More tests for overloaded events. 2019-02-12 10:54:58 +01:00
chriseth
0b392fff7e
Merge pull request #5968 from ethereum/calldataArrays
Disallow calldata arrays with dynamically encoded base types in TypeChecker.
2019-02-11 18:08:10 +01:00
Daniel Kirchner
9e32aa7510 Disallow calldata arrays with dynamically encoded base types in TypeChecker. 2019-02-11 17:13:12 +01:00
chriseth
91d224dfb6
Merge pull request #5966 from ethereum/AnsiColorized
Adapts tests/ to use AnsiColorized (the generalized/moved version of FormattedScope, which in turn is removed in this PR)
2019-02-11 16:41:14 +01:00
chriseth
92cb6cb793
Merge pull request #5936 from ethereum/calldataStructsV2
ABIEncoderV2: Implement calldata structs without dynamically encoded members.
2019-02-11 16:18:27 +01:00
Christian Parpart
53f9be8a23 Adapts tests/ to use AnsiColorized (the generalized/moved version of FormattedScope, which in turn is removed in this PR) 2019-02-11 16:00:24 +01:00
Mathias Baumann
259d803387 Conditional Expression: Delay invalid type fatal error
Check the whole conditional first and then output errors for
both, the true and false expressions.
2019-02-11 15:47:19 +01:00
Mathias Baumann
08977af843 Rename & move test to move away from number prefix 2019-02-11 15:47:19 +01:00
Daniel Kirchner
0e4912a203 ABIEncoderV2: Implement calldata structs without dynamically encoded members. 2019-02-11 15:46:58 +01:00
chriseth
b5a2c66771
Merge pull request #5957 from ethereum/function-param-fix
Ensure function parameter names always matches parameter types length
2019-02-11 15:45:28 +01:00
Mathias Baumann
66b24225fb Remove duplicate if-check 2019-02-11 14:56:57 +01:00
chriseth
49cd55d3a0
Merge pull request #5839 from ethereum/inplaceEncoding
Inplace and non-padded encoding for ABIEncoderV2.
2019-02-11 12:01:28 +01:00
Mathias Baumann
fe2429de9f Packed Encoding: Disallow types in v2 that aren't allowed in v1 2019-02-11 11:37:48 +01:00
chriseth
227addfcef Syntax tests. 2019-02-11 11:37:48 +01:00
chriseth
7684d886ae Semantic tests. 2019-02-11 11:37:47 +01:00
Mathias Baumann
feae01f042 Add tests to increase coverage of TypeChecker 2019-02-11 11:23:56 +01:00
Mathias Baumann
d41ffd1dcf Rename & move tests to get rid of old number prefix in name 2019-02-11 11:23:20 +01:00
Daniel Kirchner
9203363fe9
Merge pull request #5860 from ethereum/test-file-parser
Test file parser.
2019-02-07 19:02:13 +01:00
Mathias Baumann
ee28cb65a6 Add tests to increase coverage of TypeChecker 2019-02-06 20:45:30 +01:00
Erik Kundt
c9c4578023 Adds support for tuples in test file parser. 2019-02-06 17:25:40 +01:00
Erik Kundt
161b22bd13 Cleans up test file parser and its tests. 2019-02-06 17:22:40 +01:00
Erik Kundt
7fa167977b Adds multi-line support for test file parser. 2019-02-06 17:22:40 +01:00
Erik Kundt
f90c6f57bb Implements a test file parser. 2019-02-06 17:22:40 +01:00
chriseth
231cec56c6
Merge pull request #5926 from ethereum/inv-num-crash
Fix crash for too large struct array indicies
2019-02-06 14:11:25 +01:00
Mathias Baumann
9f431339ef Fix crash for too large struct array indicies 2019-02-06 11:50:25 +01:00
Alex Beregszaszi
26de5684a2 Move bytecodeSansMetadata(bytes) helper to test/Metadata 2019-02-05 23:13:01 +00:00
Alex Beregszaszi
be22032141 Clean up some includes in tests 2019-02-05 22:58:43 +00:00
Alex Beregszaszi
3cdcd06b66 Add last test case for callbacks in libsolc 2019-02-05 20:26:47 +00:00
chriseth
263eaaa516
Merge pull request #5937 from ethereum/libsolc-callback-test
Add test cases for libsolc with callbacks
2019-02-05 21:11:44 +01:00
chriseth
438e19aa0f
Merge pull request #5931 from ethereum/fix-mapping-storage-check
Fix check that mappings can only have storage location
2019-02-05 21:03:20 +01:00
Alex Beregszaszi
257dbf1f6a Add test cases for libsolc with callbacks 2019-02-05 19:34:56 +00:00
Alex Beregszaszi
e9a0d99218 Add optimiser test for triggering CopyMethod in ConstantOpimiser 2019-02-05 18:44:53 +00:00
Mathias Baumann
77f407d450 Fix check that mappings can only have storage location 2019-02-05 18:06:42 +01:00
Alex Beregszaszi
554511b68e Introduce solidity_free in libsolc 2019-01-31 15:53:55 +00:00
chriseth
35483422f3 Pad code to multiple of 32 bytes. 2019-01-30 11:31:28 +01:00
Alex Beregszaszi
9aafa32825 Disallow empty import statements 2019-01-28 13:52:15 +00:00
chriseth
14b553897e Tests. 2019-01-23 11:13:24 +01:00
Leonardo Alt
7f8ceaadab [SMTChecker] Clear state knowledge after external function calls 2019-01-21 12:58:40 +01:00
chriseth
f8e9aed839
Merge pull request #5717 from ethereum/smt_typecast
[SMTChecker] Support basic typecast without truncation
2019-01-21 12:35:07 +01:00
Daniel Kirchner
610ef9f199 Disallow calldata structs. 2019-01-21 10:30:57 +01:00
chriseth
2ec997e697
Merge pull request #5775 from ethereum/codeAccess
Provide access to code of contract types.
2019-01-18 00:16:06 +01:00
chriseth
2a0d4f358c Add test for content of creationCode and runtimeCode. 2019-01-17 20:36:48 +01:00
chriseth
fed56f33d5 Type is not reserved anymore. 2019-01-17 20:36:48 +01:00
chriseth
4669b06ab4 Warn if type(..).runtimeCode is used with assembly in the constructor. 2019-01-17 20:36:48 +01:00
chriseth
e6fee257e6 Code generation for access to contract code. 2019-01-17 20:36:48 +01:00
chriseth
2fcfb216b5 Syntax for meta type information. 2019-01-17 20:36:48 +01:00
chriseth
44237211d1 Tests. 2019-01-17 20:36:48 +01:00
Leonardo Alt
83e7233bb8 Change error message and add tests 2019-01-17 14:28:03 +01:00
Leonardo Alt
a10db051de [SMTChecker] Support basic typecast 2019-01-16 13:00:54 +01:00
Daniel Kirchner
4c8f8e9491 Disallow mismatching types in switch cases and detect duplicates by value for number literals. 2019-01-15 16:32:21 +01:00
Daniel Kirchner
0dfd4a726e Warn about unreachable code. 2019-01-10 10:36:50 +01:00
chriseth
ae08d7c375
Merge pull request #5681 from ethereum/limitOutput
Do not compile unless requested.
2018-12-19 17:02:28 +01:00
chriseth
4c7151e57f Do not include empty JSON objects in output. 2018-12-19 14:59:29 +01:00
Christian Parpart
62fe57479e
make use of C++ = default constructor declarations as well as more non-static member initialization syntax. 2018-12-19 11:26:42 +01:00
Christian Parpart
d10bae245e
liblangutil: SourceLocation to default initialize data members (w/o the use of ctor)
See: http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c45-dont-define-a-default-constructor-that-only-initializes-data-members-use-in-class-member-initializers-instead
2018-12-19 11:21:45 +01:00
Alex Beregszaszi
bd2f2ecbbd Move unsatisfied_version test from SolidityNameAndTypeResolution to SolidityParser 2018-12-18 15:02:59 +00:00
Alex Beregszaszi
ba15bc0a23 Fail if parsing failed in AnalysisFramework
Otherwise Compilerstack::analyze will throw an exception.
2018-12-18 15:02:37 +00:00
Alex Beregszaszi
c2ec6d71b4 Add version pragma parsing to Parser 2018-12-18 15:02:35 +00:00
Mathias Baumann
1b8570f829 Only generate sort/search code when interface functions exist 2018-12-17 21:24:37 +01:00
Leonardo Alt
9199718ec0 Clear all mapping knowledge after array variable assignment 2018-12-14 12:21:53 +01:00
Leonardo Alt
6a2809a582 [SMTChecker] Support to mapping 2018-12-14 12:21:53 +01:00
chriseth
17bf164afe
Merge pull request #4951 from ethereum/alethUpdates
Use current aleth release for testing.
2018-12-12 18:41:35 +01:00
Daniel Kirchner
123d33ad41 Add tolerance to gas meter tests. 2018-12-12 17:24:56 +01:00
chriseth
87237281bf
Merge pull request #5630 from ethereum/warn_functions_empty_body
Supress unused var and state mut warnings for functions with empty body
2018-12-12 17:00:50 +01:00
Leonardo Alt
508aae8a67 Disable state mutability warning for functions with empty body 2018-12-12 14:43:44 +01:00
Leonardo Alt
53537864a2 Disable unused var warning for functions with empty body 2018-12-12 14:43:44 +01:00
Daniel Kirchner
788612d2ef Refactoring of the ControlFlowGraph and use for detecting all uninitialized storage accesses. 2018-12-12 04:20:53 +01:00
chriseth
9f86ede32d
Merge pull request #5454 from ethereum/smt_math_functions
[SMTChecker] Abstract math functions
2018-12-11 18:35:10 +01:00
chriseth
b5deca0383
Merge pull request #4779 from ethereum/optimise-string-literals
Decide better in storing string literals as data
2018-12-11 17:50:14 +01:00
Leonardo Alt
08737e43dc [SMTChecker] Use SymbolicFunctionVariable for uninterpreted functions 2018-12-11 11:28:25 +01:00
Daniel Kirchner
6d82ad1338 Test updates for recent versions of aleth. 2018-12-11 04:47:05 +01:00
chriseth
d80d324de7 Tests for gas costs. 2018-12-10 18:06:07 +01:00
Yi Huang
81f703427e Add tests for implcit conversions from literals to fixed-point numbers. 2018-12-10 17:31:20 +01:00
Erik Kundt
e2395a3dcf Adds more detailed type errors and tests. 2018-12-07 12:35:35 +01:00
Erik Kundt
b2afb8cdda Adds an additional message to failing type conversions. 2018-12-07 11:55:53 +01:00
chriseth
0e8841005c
Merge pull request #5554 from ethereum/cp-SourceReferenceFormatter-refactor
[2/3] Refactor SourceReferenceFormatter (split-out data extraction & make use of new SourceLocation knowledge)
2018-12-06 14:01:39 +01:00
Christian Parpart
073b03d90c liblangutil: refactor SourceReferenceFormatter, splitting out retrieval and making use of new SourceLocation's CharStream knowledge 2018-12-06 14:01:01 +01:00
chriseth
5fde279d2a
Merge pull request #5514 from corollari/develop
Remove unary + from the type system
2018-12-06 10:27:09 +01:00
Albert
eee2f2b069 Update test 2018-12-06 01:54:04 +01:00
Albert
df08d79623 Fix #5470
Remove unary + from the type system
2018-12-06 01:54:04 +01:00
chriseth
bc6ddbdd09 Remove w parameter for toHex. 2018-12-05 22:51:49 +01:00
Kevin Kelley
fb6fd1b3c2 add a 'readable' format for large hex values 2018-12-05 22:15:02 +01:00
Leonardo Alt
8069bb61da [SMTChecker] Loops are unrolled once 2018-12-04 12:35:19 +01:00
chriseth
d829794737 Improve yul error messages around number of arguments and variables. 2018-12-04 11:37:03 +01:00
Anurag Dashputre
82f5763e7a Fix internal compiler error for unimplemented base contract function. 2018-12-03 12:25:31 +01:00
chriseth
3f613a44ec
Merge pull request #5557 from ethereum/fixInterfaceImplementedByPublicStateVariable
Public state variables are implementing external functions.
2018-12-03 10:46:44 +01:00
chriseth
0668a9ecfb Public state variables are implementing external functions. 2018-12-03 10:46:03 +01:00
chriseth
aaeb74f592
Merge pull request #5537 from ethereum/cp-SourceLocation-related-refactoring
[1/3] SourceLocation related refactoring.
2018-11-30 23:45:31 +01:00
Christian Parpart
757623e381
liblangutil: SourceLocation: Retricts == and != operator 2018-11-30 17:34:54 +01:00
Christian Parpart
435f7b3b72 liblangutil: Scanner: remove superfluous sourceName field (it's in CharStream already)
Also, ParserBase::sourceName() was dead code. Eliminating it should
increase test coverage (how sneaky) :-)
2018-11-30 17:07:17 +01:00
Christian Parpart
c48a5264be
liblangutil: SourceLocation: adds (shared) pointer to underlying CharStream source, eliminating sourceName
Also, adapted affecting code to those changes.
2018-11-30 17:07:12 +01:00
chriseth
621ce3df20 Test. 2018-11-30 16:30:19 +01:00
chriseth
6aa9ce2d43
Merge pull request #5550 from ethereum/moveSomeTests
Move inline array tests.
2018-11-30 09:26:31 +01:00
chriseth
d6d41b2bc7
Merge pull request #5548 from ethereum/fixMemberAccess
Fix bug related to state variables of function type accessed via base contract.
2018-11-30 09:26:08 +01:00
chriseth
f46dd91c20 Move inline array tests. 2018-11-29 19:49:38 +01:00
chriseth
c445e7dfa4 Disallow inline arrays of mapping type. 2018-11-29 19:45:06 +01:00
chriseth
73a64da041 Fix bug related to state variables of function type accessed via base contract. 2018-11-29 19:30:27 +01:00
Leonardo Alt
67bbcefe6c Report deprecation error on functions sha3 and suicide also without call. 2018-11-29 14:29:13 +01:00
Christian Parpart
22eff22492 liblangutil: extends CharStream to know about the respective (file-)name (and adapt codebase to it) 2018-11-29 12:45:27 +01:00
Leonardo Alt
1d47919c0c Fix ICE when function type struct parameter has field of non-existent type 2018-11-29 10:38:47 +01:00
chriseth
b4086ac870
Merge pull request #5526 from ethereum/fixGetterNewCoder
Fix: Disallow structs in getters for old encoder.
2018-11-28 17:05:52 +01:00
Leonardo Alt
c51e6a545a Remove boost test checks from SMTCheckerJSONTest 2018-11-28 14:16:43 +01:00
chriseth
c54814b47b Tests. 2018-11-28 14:11:51 +01:00
chriseth
728119bb11 Use yul parser in assembly stack. 2018-11-27 15:59:57 +01:00
chriseth
240ad0e34e
Merge pull request #5382 from ethereum/libraryMappingPublic
Allow mapping arguments for public and external library functions.
2018-11-26 19:47:32 +01:00
chriseth
1e7a23a205 Changelog entry and tests. 2018-11-26 16:51:45 +01:00
Daniel Kirchner
30e6f8d3fb Allow mapping arguments for public and external library functions. 2018-11-26 16:31:46 +01:00
Daniel Kirchner
597174119a Tests. 2018-11-26 14:30:32 +01:00
chriseth
7921e5f0b9
Merge pull request #5486 from ethereum/allowExternalPublicOverride
Allow external public override
2018-11-26 14:26:55 +01:00
chriseth
9ac7c748f8
Merge pull request #5494 from ethereum/scanner-error-handling
Improved Scanner error diagnostics.
2018-11-26 14:17:08 +01:00
chriseth
0b474d5299
Merge pull request #5497 from ethereum/langutil-SourceReferenceFormatter
Moving SourceReferenceFormatter into langutil namespace.
2018-11-26 12:44:25 +01:00
chriseth
ac5803bf3e Changelog entry and tests. 2018-11-26 12:41:26 +01:00
Lazaridis
56d5dd4668 decouple TestCase class from test/libsolidity 2018-11-25 02:34:59 +02:00
Christian Parpart
0ad56bca79 Adapting tests to Scanner's lexical error diagnostics change. 2018-11-24 12:59:37 +01:00
Christian Parpart
aeb66905de
Moving SourceReferenceFormatter into langutil namespace. 2018-11-24 12:33:36 +01:00
Lazaridis
e454737a3c adapt to latest code changes 2018-11-23 17:27:52 +01:00
Leonardo Alt
0ff4cbe51b Add SMTChecker tests for standard JSON 2018-11-23 10:51:06 +00:00
chriseth
ecd059cb92
Merge pull request #5451 from ethereum/bound_function_tests
Add assert and tests for bound functions
2018-11-22 18:23:46 +01:00
Leonardo Alt
06189ae57f Add assert and tests for bound functions 2018-11-22 14:41:39 +01:00
Leonardo Alt
32fe4768a9 Organize smt tests in subdirectories 2018-11-22 13:33:28 +00:00
Leonardo Alt
4a71080ae5 Remove pragma ABIEncoderV2 from smt test 2018-11-22 13:33:28 +00:00
Alex Beregszaszi
109cfcef69 Drop numbering in front of the SMTChecker tests 2018-11-22 13:33:28 +00:00
Alex Beregszaszi
636da48e82 Move most of SMTChecker tests from C++ to isoltest
But keep divison in C++ because results differ between different solvers
2018-11-22 13:33:24 +00:00
Christian Parpart
d67322a186 Introduce namespace langutil in liblangutil directory.
Also:
- Use {}-style list initialisation for SourceLocation construction
- Introduce new system includes
- Changes the API of the Scanner to take source as value (with move) as opposed to as a reference
2018-11-21 19:13:44 +00:00
Christian Parpart
87821c53c3 Isolating files shared between Yul- and Solidity language frontend. 2018-11-21 18:58:12 +00:00
mordax
ea8b7d803e Removing redundant virtual from override function declaration
Remove trailing whitespace

Remove changelog change
2018-11-21 14:37:32 +00:00
Leonardo Alt
06c3f0953a [SMTChecker] Support bound function calls 2018-11-19 15:29:00 +01:00
Leonardo Alt
70bb0eaf95 [SMTChecker] Implement uninterpreted functions and use it for blockhash() 2018-11-15 09:12:42 +01:00
chriseth
727e3f24bc Do not perform cleanup on unsigned integers when loading from calldata. 2018-11-14 20:52:30 +00:00
Alex Beregszaszi
b6c3257752 Remove old libsolc API (compileJSON, compileJSONMulti, compileJSONCallback) 2018-11-13 13:54:01 +00:00
Daniel Kirchner
b5e9d849ef Ignore unimplemented functions for storage returns. 2018-11-13 12:18:22 +01:00
Kristofer Peterson
f927da9182 Refactor of bool TypeChecker::visit(FunctionCall const& _functionCall).
Visit method now cleanly determines if node represents a function call,
struct construction or type conversion. Type checking, validation and
error message logic is moved to separate methods.
2018-11-09 16:35:54 +00:00
chriseth
6bbedab383
Merge pull request #5265 from ethereum/cleanupsha3
Simplify sha3.
2018-11-09 15:39:57 +01:00
chriseth
84e8a782d6
Merge pull request #5351 from ethereum/functionTypeConversion
Relax type equality requirement of function types during conversion in code generation.
2018-11-08 11:29:55 +01:00
chriseth
cc2de07bc6
Merge pull request #5348 from ethereum/boostRationalNegativeDenominatorFix
Fix negative denominator in ``boost::rational`` during exponentiation.
2018-11-08 11:25:30 +01:00
Daniel Kirchner
b16a3644fe Function type conversion test cases. 2018-11-08 10:51:51 +01:00
Christian Parpart
ab0de38f16
Eliminate byte-typedef and use uint8_t in all their places instead.
This change is made to (easily) be forward compatible with future C++
standards, in order to allow compiling the code with newer standards at
some point in the future.

* Removed the `using byte = uint8_t;` line from Common.h
* Mechanically change all uses of `byte` to `uint8_t`.

Tested with GCC 7.3 in C++11/14/17 modes :-)
2018-11-07 12:17:57 +01:00
Daniel Kirchner
e036133d1b Fix negative denominator in `boost::rational` during exponentiation. 2018-11-06 10:52:10 +01:00
Daniel Kirchner
36903d7e27 Remove uses of boost::rational with negative denominator, which breaks with boost 1.68. 2018-11-05 21:36:52 +01:00
Erik Kundt
1d8e9af407 Fixes crash while encoding too large arrays. 2018-10-30 15:14:57 +01:00
chriseth
c36a3bd683
Merge pull request #5283 from ethereum/smt_fixed_bytes
[SMTChecker] Support FixedBytes
2018-10-25 13:01:01 +02:00
chriseth
f714b0dd7c
Merge pull request #5242 from ethereum/someChecks
Some well-formedness checks for the Yul AST.
2018-10-25 12:44:28 +02:00
Leonardo Alt
d8cbf321da Grouping of symbolic variables in the same file and support to FixedBytes 2018-10-25 09:30:48 +02:00
chriseth
01566c2e1a
Merge pull request #5272 from ethereum/smt_special_vars
[SMTChecker] Support msg.*, tx.*, block.*, gasleft and blockhash
2018-10-24 14:34:17 +02:00
chriseth
a9a414bd0f Added some tests. 2018-10-24 14:29:33 +02:00
Leonardo Alt
e2cf5f6ed9 Add gasleft constraint and use full member access name 2018-10-22 18:19:11 +02:00
Christian Parpart
f112377dd4
Refactor solidity::Token into an enum class with TokenTraits helper namespace 2018-10-22 17:00:51 +02:00
Leonardo Alt
b46b827c30 [SMTChecker] Support msg.*, tx.*, block.*, gasleft and blockhash 2018-10-19 15:52:16 +02:00
chriseth
c13b5280c1
Merge pull request #5256 from ethereum/lvalueCleanup
Lvalue cleanup
2018-10-19 11:20:12 +02:00
chriseth
e78b95d9d4 Renamed SHA3.{h,cpp} files. 2018-10-18 14:31:36 +02:00
chriseth
56425bb2b1 Add a test for delete x.length 2018-10-17 22:07:05 +02:00
mordax
134f5cb798 Added test for flipping signs on signed type edge case 2018-10-15 16:08:43 -04:00
Leonardo Alt
e4851cf59e [SMTChecker] Inline calls to internal functions 2018-10-15 15:11:21 +02:00
chriseth
0778fb2dfc
Merge pull request #5208 from mestorlx/bug4156
[WIP] Bad identifier suggestion in certain cases
2018-10-15 13:03:49 +02:00
Christian Parpart
6d815a142f
Fixes invalid function calls to literals inside tuple assignment's LHS. 2018-10-15 10:35:11 +02:00
mestorlx
1ce9566e50 Updated MAXIMUM_STRING_DISTANCE to non static maximumStringDistance taking into account length of the identifier 2018-10-13 09:54:07 -03:00
chriseth
4607118d2e Add Yul optimizer test framework. 2018-10-11 16:59:57 +02:00
Erik Kundt
3e24a3d81b Adds syntax tests for array index access. 2018-10-10 23:18:32 +02:00
chriseth
2feaacba9d
Merge pull request #5195 from ethereum/unsigned-array-index
Do not crash on non-unsigned array index
2018-10-10 20:56:25 +02:00
Erik Kundt
763ae30023 Fixes crash on non-unsigned array index. 2018-10-10 19:49:25 +02:00
Martin Diz
ef25454a04 Improved error message for lookup in function types. 2018-10-10 11:53:53 -03:00
chriseth
4035c96a32
Merge pull request #5184 from ethereum/viewFunctionDocs
Library view functions
2018-10-10 15:21:40 +02:00
Erik Kundt
4beabf6686 Documents library view functions and adds unit test. 2018-10-10 12:28:24 +02:00
chriseth
06200b4b64
Merge pull request #5180 from ethereum/cpp-cleanup
Some C++ cleanup
2018-10-10 11:43:42 +02:00
Alex Beregszaszi
6c3d12d85b Do not require ctype/stdio if not needed 2018-10-09 19:06:22 +01:00
Alex Beregszaszi
9e032bff43 Use nullptr instead of NULL where appropriate 2018-10-09 18:06:39 +01:00
Christian Parpart
4d5216c2e0 Fixes large rational number literals being wrongly interpreted.
Fixes #5052.
2018-10-09 14:36:49 +02:00
Lazaridis
4bcd89105c provide general hex-literal error message, fixes #1802
dummy
2018-10-09 06:51:19 +03:00
chriseth
2fcbe74db0 Fix ast json test for function kind. 2018-10-08 23:07:10 +02:00
chriseth
7ff9a27979
Merge pull request #4734 from ethereum/astUpdate
JSON AST: replace ``isConstructor`` by ``kind`` which also supports fallbacks
2018-10-08 21:47:27 +02:00
Christian Parpart
9fb835b710 Fixes #5051 (introduced in #4684), effectively allowing underscores in address literals. 2018-10-02 15:37:15 +02:00
Alex Beregszaszi
c4b5101b9d
Merge pull request #4676 from jwasinger/extcodehash
Add support for EXTCODEHASH
2018-09-28 00:04:40 +01:00
Alex Beregszaszi
384a65f660 Be more strict about values in the optimizer block in StandardJSON 2018-09-26 16:51:08 +01:00
Alex Beregszaszi
5d985abcab Add test for extcodehash 2018-09-26 16:11:02 +01:00
chriseth
13cd7c3fed
Merge pull request #5061 from ethereum/fixedSizeArrayLength
Disallow fixed-size arrays with zero length
2018-09-26 14:55:07 +02:00
Alex Beregszaszi
8cfc6c98d6 CREATE2 is part of Constantinople now
Also add hasCreate2 to EVMVersion
2018-09-26 01:58:10 +01:00
chriseth
cb3a837251
Merge pull request #5003 from herrBez/cleanUpdated
Add syntax tests to fix #4627
2018-09-24 14:43:53 +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
Alex Beregszaszi
5dd3ee2d96
Merge pull request #5050 from ethereum/standard-json-crashes
Add proper error reporting when invalid settings are provided in StandardJSON
2018-09-21 15:48:05 +01:00
Alex Beregszaszi
a515173900 Add proper error reporting when invalid settings are provided in StandardJSON 2018-09-21 14:53:24 +01:00
herrBez
faa0caae08 Add syntax tests to augment the test coverage of
libsolidity/parsing/Scanner.cpp and libsolidity/parsing/Scanner.h
Fix #4627 and PR #5003.

- Add multiline comment test
- Add upper case hex literal test
- Add test for unicode escapes
- Add test for strings with escaped newlines
- Add test for string escapes
- Add test for strings that do not terminate before end of file
- Add test for unterminated blocks
2018-09-20 23:02:44 +02:00
chriseth
dc9853bb6e
Merge pull request #5030 from ethereum/payableConversion
Make non-payable default for conversion to address.
2018-09-20 21:20:46 +02:00
chriseth
d0461c49fe Make non-payable default for conversion to address. 2018-09-20 14:31:04 +02:00
hydai
b409faa675
Disallow uppercase X in hex number literals 2018-09-19 22:01:15 +08:00
liangdzou
808c3f3df5 fix some format typos 2018-09-17 22:13:21 +08: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
chriseth
5cf570e100
Merge pull request #4968 from ethereum/alethUpdateCompatible
Fix tests for newer versions of aleth.
2018-09-13 23:38:46 +02:00
Daniel Kirchner
3e55aa3fa2 Disable blockhash test for constantinople due to changes between aleth versions. 2018-09-13 17:18:42 +02:00
Daniel Kirchner
ae35a58124 Add `stateMutability field to JSON AST for address` types. 2018-09-13 15:15:49 +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
Daniel Kirchner
a434896458 Restore `isConstructor` in the legacy AST. 2018-09-11 14:47:25 +02:00
Daniel Kirchner
b6636e2570 Add new test cases. 2018-09-11 14:47:25 +02:00
Daniel Kirchner
395ab9a872 Replace `isConstructor field in the JSON AST by a kind` field. 2018-09-11 14:47:25 +02:00
chriseth
7118f53974 Tests. 2018-09-10 12:47:46 +02:00
chriseth
6a40048aa4 Tests. 2018-09-06 16:42:59 +02:00
chriseth
0b7b8162ca This fixes several bugs with regards to line breaks and comments:
- any unicode line break (line feed, vertical tab, form feed, carriage
   return, NEL, LS and PS) is considered to terminate a single-line
   comment. The line break itself is considered to be the next token
   after the comment, leading to a parser error if it is not an
   ascii character (i.e. for NEL, LS and PS).
 - unterminated multiline comments are considered illegal tokens
 - '/** /' is considered an unterminated multiline comment
   (previously, whitespace was allowed before the last '/'
2018-09-06 16:42:59 +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
e3097b30da Add another end-to-end test. 2018-09-04 15:34:21 +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
Daniel Kirchner
a102f3b783 Remove trailing whitespace for all files in the repository. 2018-09-04 11:30:30 +02:00
Leonardo Alt
b7c6e53d3d Fix endToEnd test 2018-09-03 18:35:57 +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
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
c3d3ae80fa Add end to end tests 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
a34735016c Add syntax test for `address.staticcall.value`. 2018-08-15 16:06:48 +02:00
Daniel Kirchner
ed5265598b Add view pure checker tests for `address.staticcall(...)`. 2018-08-15 16:06:48 +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