Commit Graph

5003 Commits

Author SHA1 Message Date
a3d4
3698cd54a5 Complete error coverage of Parser and SyntaxChecker 2020-09-29 16:07:02 +02:00
chriseth
4b67829328
Merge pull request #9917 from ethereum/leb-encoding
Add LEB128 encoding functions & tests.
2020-09-29 14:55:25 +02:00
Leonardo Alt
352cce5fc8 [SMTChecker] Support addmod and mulmod. 2020-09-29 12:45:19 +02:00
chriseth
4bdec8107c Merge remote-tracking branch 'origin/develop' into HEAD 2020-09-29 09:53:50 +02:00
Alexander Arlt
b6e1415509 Add LEB128 encoding functions & tests. 2020-09-28 16:06:19 -05:00
Leonardo Alt
fa7c9a0dc6 Simplify internal function calls 2020-09-28 15:31:15 +02:00
chriseth
9115100f2a
Merge pull request #9909 from ethereum/fix-9890
Fix missing annotation settings because of early return
2020-09-28 12:27:43 +02:00
Mathias Baumann
76bb2cafe9 Fix missing annotation settings because of early return 2020-09-28 12:12:44 +02:00
chriseth
bab2d6d644
Merge pull request #9852 from ethereum/fix-9851
Typechecker: Disallow free function redefinition
2020-09-28 11:15:47 +02:00
a3d4
9721bda36e Complete error coverage of ParserBase 2020-09-28 01:56:25 +02:00
Leonardo Alt
e6bd18525b [SMTChecker] Add engine prefix to verification target error messages 2020-09-25 19:09:06 +02:00
Leonardo Alt
0223571987 [SMTChecker] Do not report error when rlimit 2020-09-25 18:43:10 +02:00
Bhargava Shastry
e2a2276272 Contract level checker: Disallow free function redefinition and alias
shadowing another free function

Co-authored-by: chriseth <chris@ethereum.org>
2020-09-25 17:09:58 +02:00
Alex Beregszaszi
9f3d5d3e2f [SMTChecker] Implement support for memory allocation 2020-09-25 15:56:24 +01:00
Alex Beregszaszi
9c1b041dcb [SMTChecker] Keep constraints of string literals after assignment 2020-09-25 11:32:48 +01:00
Alex Beregszaszi
5090353a1a [SMTChecker] Keep knowledge about string literals 2020-09-25 11:32:23 +01:00
Leonardo
57e1b2cb92
Merge pull request #9881 from ethereum/smt_fixed_bytes_index_access
[SMTChecker] Support fixed bytes index access
2020-09-25 11:32:56 +02:00
Leonardo Alt
df8c6d94e3 [SMTChecker] Support fixed bytes index access 2020-09-25 09:59:38 +02:00
chriseth
5711d664aa
Merge pull request #9887 from ethereum/evmhost
EVMHost: keep precompile balance/settings across resets
2020-09-24 21:15:06 +02:00
Alex Beregszaszi
e93992257e Add more semantic tests for balance/extcodehash 2020-09-24 19:04:27 +01:00
Alex Beregszaszi
6479138dd4 EVMHost: keep precompile balance/settings across resets
Also set proper codehash for precompiles.
2020-09-24 18:51:39 +01:00
chriseth
c0954be254
Merge pull request #9886 from ethereum/develop
Merge develop into breaking.
2020-09-24 19:49:20 +02:00
chriseth
d52b3839e2
Merge pull request #9882 from ethereum/invalidOnErrorYul
[SolYul] Use invalid opcode for internal errors
2020-09-24 19:37:44 +02:00
chriseth
b5c340cd66 Update tests 2020-09-24 17:07:43 +02:00
Leonardo
d180d6cdaf
Merge pull request #9880 from ethereum/smt-abi-type
[SMTChecker] Do not warn on "abi" as an identifer
2020-09-24 17:02:17 +02:00
chriseth
763282343f
Merge pull request #9883 from ethereum/develop
Merge develop into breaking.
2020-09-24 16:05:51 +02:00
Harikrishnan Mulackal
ec25e960f9
Merge pull request #9863 from ethereum/signed-exp-tests
Signed exp tests
2020-09-24 15:59:01 +02:00
Alex Beregszaszi
6edfdff187 [SMTChecker] Do not warn on "abi" as an identifer
There is an approprate warning for the function call.
2020-09-24 13:57:42 +01:00
chriseth
a9f9b4db27
Merge pull request #9872 from ethereum/smt_remove_tests
Extract boost smt and remove unused tests
2020-09-24 13:20:19 +02:00
chriseth
0a3b836f5a
Merge pull request #9867 from ethereum/string-literals
More clear error messages with converting (hex) string literals
2020-09-24 12:49:46 +02:00
Leonardo
35a7d5d3e4
Merge pull request #9873 from ethereum/smt_dec_rlimit
[SMTChecker] Decrease rlimit
2020-09-23 23:11:59 +02:00
Leonardo Alt
ebb6f61506 [SMTChecker] Decrease rlimit 2020-09-23 19:28:47 +02:00
Alex Beregszaszi
e54110ff17 Return UTF-8 error in BoolResult and remove it from string type 2020-09-23 17:35:05 +01:00
Alex Beregszaszi
a154594de6 Display string literal as hex in error messages if it is not printable ASCII 2020-09-23 17:33:39 +01:00
Alex Beregszaszi
0e5abbd4a9 Display location of invalid UTF-8 sequence in unicode literals in SyntaxChecker 2020-09-23 17:01:02 +01:00
Leonardo Alt
8eba66daf9 Extract boost smt and remove unused tests 2020-09-23 17:55:55 +02:00
Alex Beregszaszi
ca743191b7 Report why assigning oversized hex strings to bytes fail 2020-09-23 16:46:47 +01:00
Alex Beregszaszi
af8d78010e Display BoolResult from implicit/explicit conversions for more clarity in error messages 2020-09-23 16:04:07 +01:00
Harikrishnan Mulackal
c314ca3cf2 Tests for signed exponentiation 2020-09-23 16:27:33 +02:00
Đorđe Mijović
858b4507e2
Merge pull request #9854 from ethereum/bitwiseSmt
[SMTChecker] Support compound shifts and bitwise and, or, and xor
2020-09-23 12:35:48 +02:00
chriseth
0c6dc1dce4
Merge pull request #9862 from ethereum/develop
Merge develop into breaking
2020-09-23 12:22:32 +02:00
chriseth
91f7c6644f Only expect more failure data params if they are there. 2020-09-23 12:22:11 +02:00
chriseth
9c5e14e309
Merge pull request #9839 from ethereum/annotations-optional
Make annotations ``SetOnce`` or ``optional`` where feasible
2020-09-23 11:44:21 +02:00
Djordje Mijovic
96bafb9ba3 [SMTChecker] Updating old and adding new tests for compound shift operators. 2020-09-23 11:31:37 +02:00
Djordje Mijovic
0193952106 [SMTChecker] Updating old and adding new tests for compound bitwise xor operator. 2020-09-23 11:31:37 +02:00
Djordje Mijovic
e2e0b33ee7 [SMTChecker] Updating old and adding new tests for compound bitwise or operator. 2020-09-23 11:31:41 +02:00
Djordje Mijovic
69df163dcb [SMTChecker] Updating old and adding new tests for compound bitwise and operator. 2020-09-23 11:31:37 +02:00
Leonardo Alt
f4ee4cd479 Update tests 2020-09-22 20:51:28 +02:00
Alex Beregszaszi
709d25bd3d [SMTChecker] Support address type conversion with literals 2020-09-22 18:49:11 +01:00
Mathias Baumann
dd81d05559 Make annotations `SetOnce or optional` where feasible 2020-09-22 17:38:21 +02:00
chriseth
700cc4c9d3
Merge pull request #9836 from ethereum/fix-missing-check-for-nested-dynamic-arrays-with-abi-encode-decode-v1
Add missing check for nested dynamic arrays in abi.encode()/decode() functions in ABIEncoderV1
2020-09-22 15:49:17 +02:00
chriseth
83aa8c1e23
Merge pull request #9818 from a3d4/introduce-compositetype
Introduce CompositeType
2020-09-21 22:33:04 +02:00
Daniel Kirchner
7fa9a9d312
Merge pull request #9162 from ethereum/memoryEscalator
Memory Escalator
2020-09-21 20:03:38 +02:00
chriseth
8e77bb5bfc
Merge pull request #9838 from ethereum/fix-wrong-name-reported-for-invalid-named-argument
Fix wrong name reported for invalid named argument
2020-09-21 17:17:14 +02:00
a3d4
6b77a20134 Introduce CompositeType 2020-09-21 16:18:04 +02:00
chriseth
306fef334b
Merge pull request #9546 from ethereum/expToShift
Optimization rule: Replace exp by shl.
2020-09-21 12:21:47 +02:00
Daniel Kirchner
48f620fb50 Reverse the order of the memory offsets assigned to variables. 2020-09-17 22:13:27 +02:00
Daniel Kirchner
f4b42d1c72 Add stack limit evader. 2020-09-17 22:13:27 +02:00
Kamil Śliwak
aae640dd3a Fix wrong name used in error message when reporting invalid named argument 2020-09-17 18:59:18 +02:00
Kamil Śliwak
4045f41c8d Make the test for invalid named arguments more robust
- Add more parameters and use different types.
- Now it's clear that the name used in the error message is wrong.
2020-09-17 17:29:28 +02:00
Kamil Śliwak
dc62d763eb Move syntax tests for named arguments from namedAndTypeResolution/ to functionCalls/ 2020-09-17 17:29:28 +02:00
Kamil Śliwak
1a4cc4e64d Fix type check for nested arrays in abi.encode/decode functions in ABIEncoderV1
- Without this fix, nested arrays are not detected as unsupported and compiler fails on an UnimplementedError.
- Now it's consistent with how structs are handled in ABIEncoderV1.
2020-09-17 17:29:16 +02:00
Kamil Śliwak
89e696ca1b Allow using zero in patterns passed to isoltest --test 2020-09-17 17:28:49 +02:00
chriseth
684fff34a9 Replace exp by shl. 2020-09-17 16:06:52 +02:00
chriseth
aa7a6922e7 Restrict unary negation to signed integers. 2020-09-17 15:01:53 +02:00
chriseth
e4231b879b
Merge pull request #9834 from ethereum/develop
Merge develop into breaking.
2020-09-17 15:00:41 +02:00
chriseth
6e4205e445 Do not run reasoning test if no SMT Solver is available. 2020-09-17 13:43:35 +02:00
Harikrishnan Mulackal
64ddf2c699 Verify simplification rule exp(2, X) to shl(X, 1) 2020-09-16 17:36:39 +02:00
chriseth
9750286ee4
Merge pull request #9823 from ethereum/develop
Merge develop into breaking.
2020-09-16 14:24:58 +02:00
chriseth
5000785ff8
Merge pull request #9822 from ethereum/fix-ice-on-returning-string-literal-in-calldata
Mark string literals as not implicitly convertible to calldata arrays
2020-09-16 14:23:47 +02:00
Alex Beregszaszi
a187a1c4c4
Merge pull request #9798 from ethereum/smt-log
[SMTChecker] Support events and low-level logs
2020-09-16 12:26:27 +01:00
Kamil Śliwak
3ba3bde65e Mark string literals as not implicitly convertible to calldata arrays 2020-09-16 12:44:57 +02:00
Alex Beregszaszi
c8c17b693b [SMTChecker] Support events and low-level logs 2020-09-16 11:50:39 +02:00
Kamil Śliwak
2916ae5bda Fix static arrays with dynamic elements not being treated as dynamic in FunctionType::returnParameterTypesWithoutDynamicTypes() 2020-09-16 11:15:52 +02:00
chriseth
b08b76ffca
Merge pull request #9776 from ethereum/reportUnimplemented
Sol->Yul: Report source locations related to unimplemented features.
2020-09-15 18:46:45 +02:00
chriseth
39ecc18d4d
Merge pull request #9812 from ethereum/develop
Merge develop into breaking.
2020-09-15 15:58:45 +02:00
chriseth
9bcc2f1713 Make ReasoningBasedSimplifier available as step. 2020-09-15 15:57:59 +02:00
chriseth
2d7e28769a Skip smt optimizer tests if smt is disabled. 2020-09-15 15:57:59 +02:00
chriseth
f73fb726af Reasoning based optimizer. 2020-09-15 15:57:58 +02:00
chriseth
2f41245e43 Commandline test for unimplemented IR. 2020-09-15 14:42:04 +02:00
chriseth
8c8c83a104 Adjust testing framework. 2020-09-15 14:41:46 +02:00
Alex Beregszaszi
5355e85639
Merge pull request #9782 from ethereum/smt-revert
[SMTChecker] Support revert()
2020-09-15 13:26:19 +01:00
chriseth
ff93d8ac6c
Merge pull request #9804 from ethereum/extractYulSyntaxTests
Extract (some) yul syntax tests.
2020-09-15 13:50:45 +02:00
chriseth
9eda69f637
Merge pull request #9793 from ethereum/same-syntax-test
[Trivial] Use same multi-source-syntax for test files
2020-09-15 13:49:34 +02:00
chriseth
74efd5ba46
Merge pull request #9703 from a3d4/fix-4558-shadowed-declaration-warning
Corrected warning for homonymous, but not shadowing declarations
2020-09-15 13:48:55 +02:00
Alex Beregszaszi
783d66c1a4 [SMTChecker] Support revert() 2020-09-15 11:46:33 +01:00
Alex Beregszaszi
8f36408ef9 Add test case for revert() in SMTChecker 2020-09-15 11:46:16 +01:00
Mathias Baumann
a1eb0f7225 Use same multi-source-syntax for test files 2020-09-15 12:44:02 +02:00
chriseth
768e0e96e4 Extract yul syntax tests. 2020-09-15 12:13:30 +02:00
chriseth
eac175c08b
Merge pull request #9053 from ethereum/generatedSources
Export generated sources
2020-09-15 12:08:47 +02:00
chriseth
33cdefc40e New test. 2020-09-15 11:22:43 +02:00
chriseth
7f0a86ce56 Remove version from combined-json. 2020-09-15 11:22:43 +02:00
chriseth
3f9f63b829 Test updates. 2020-09-15 11:22:16 +02:00
Daniel Kirchner
e93d74398b
Merge pull request #9807 from ethereum/smt_readd_tests
Readd SMTChecker tests
2020-09-15 02:57:42 +02:00
a3d4
4ca7655b74 Correct the warning for homonymous, but not shadowing declarations 2020-09-15 02:39:21 +02:00
Leonardo Alt
28c8e01149 Readd SMTChecker tests 2020-09-14 23:44:13 +02:00
Alex Beregszaszi
83934254ea [SMTChecker] Support type(I).interfaceId 2020-09-14 20:34:52 +01:00
chriseth
efe829b4b2
Merge pull request #9805 from ethereum/develop
Merge develop into breaking.
2020-09-14 20:48:03 +02:00
chriseth
552a5f0913
Merge pull request #9314 from ethereum/inlineStartingFromLeaves
Handle "leaf functions" first in full inliner.
2020-09-14 20:22:48 +02:00
chriseth
c6281f29d5
Merge pull request #9577 from ethereum/removeflag
Remove "removesNonConstant" flag.
2020-09-14 20:20:46 +02:00
chriseth
de51531366
Merge pull request #9791 from a3d4/refactor-collision-warnings
Refactor collision warnings
2020-09-14 20:19:53 +02:00
Leonardo Alt
fd6c665548 Update SMTChecker tests with z3 4.8.9 2020-09-14 19:04:13 +02:00
Harikrishnan Mulackal
b7944477a1 Update UnusedFunctionParameterPruner tests to avoid getting inlined 2020-09-14 17:59:50 +02:00
chriseth
8e39110a30 Remove flag. 2020-09-14 17:35:04 +02:00
Kamil Śliwak
ea1c249822 [yul-phaser] Chromosome: Use more samples and higher tolerance in tests checking the distribution
- This makes them run a second longer (which might seem small but it's a 3x increase).
- Hopefully they will break less when the random seed changes.
2020-09-14 16:17:39 +02:00
Kamil Śliwak
5637bdcaec [yul-phaser] Replace mutation tests with hard-coded expectations with more robust ones that check the statistical distribution
- The old tests would easily break when adding/removing optimiser steps.
2020-09-14 16:17:39 +02:00
Kamil Śliwak
d75f0ba437 [yul-phaser] Chromosome: Make it possible to use genes that do not correspond to existing optimiser steps 2020-09-14 16:17:39 +02:00
chriseth
fb205b719e
Merge pull request #9783 from ethereum/yul-phaser-fix-slow-tests-for-classic-algorithm
[yul-phaser] Fix slow tests for classic genetic algorithm
2020-09-14 16:16:59 +02:00
a3d4
d8520b0af0 Move collision warnings to StaticAnalyzer 2020-09-14 02:52:00 +02:00
a3d4
e7a6534d4f Unify collision warnings 2020-09-14 02:17:53 +02:00
Leonardo
31b5102aa0
Merge pull request #9731 from ethereum/smt_import
[SMTChecker] Fix CHC encoding
2020-09-12 00:56:04 +02:00
Alex Beregszaszi
961a199cf5 [SMTChecker] Support type(T).min and type(T).max 2020-09-11 21:37:51 +01:00
Kamil Śliwak
e024032a67 Revert "[yul-phaser] Temporarily disable very slow tests for the classic algorithm"
This reverts commit b23f7d8790.
2020-09-11 22:05:56 +02:00
Kamil Śliwak
952a9c6115 [yul-phaser] Chromosome: store step abbreviations instead of full names 2020-09-11 22:05:56 +02:00
Kamil Śliwak
2a707e7685 [yul-phaser] Chromosome: Add stepsToGenes() and genesToSteps() 2020-09-11 22:05:56 +02:00
Leonardo Alt
3fea11e1a9 Remove problematic test 2020-09-11 22:02:18 +02:00
Leonardo Alt
23ee011c56 [SMTChecker] Fix imports 2020-09-11 13:34:46 +02:00
Leonardo
72f8a753a9
Merge pull request #9586 from ethereum/scoper
Assign scopes as a separate step.
2020-09-11 10:45:54 +02:00
Leonardo Alt
84c707cd2a Adjust problematic SMTChecker tests 2020-09-10 19:32:17 +02:00
chriseth
42c26e0bf5 Inline tiny functions first. 2020-09-10 17:01:20 +02:00
chriseth
f102feaf09 Handle "leaf functions" first in full inliner. 2020-09-10 17:01:19 +02:00
chriseth
6101bdf7e2 Name simplifier. 2020-09-10 16:23:29 +02:00
Leonardo Alt
40197df104 [SMTChecker] Support shifts 2020-09-09 19:47:52 +02:00
chriseth
c966971fd3
Merge pull request #9770 from ethereum/smt_dot
[SMTChecker] Change warning message
2020-09-09 17:17:04 +02:00
chriseth
6508986077
Merge pull request #9768 from ethereum/move-event-syntax-tests-from-name-and-type-resolution
Group event-related syntax tests together
2020-09-09 16:57:30 +02:00
Leonardo Alt
00f6b303b1 [SMTChecker] Change warning message 2020-09-09 16:14:21 +02:00
Kamil Śliwak
6f41e83b48 Move most event-related syntax tests from nameAndTypeResolution/ to events/ 2020-09-09 14:53:46 +02:00
Kamil Śliwak
5e9dd67a0a FunctionType::canTakeArguments(): Use the correct index when comparing named parameter types 2020-09-09 14:45:58 +02:00
Alexander Arlt
23d9b1567e Add support for ewasm evmc vm. 2020-09-08 12:41:42 -05:00
chriseth
202332405f
Merge pull request #9760 from ethereum/sol2YulStorageArrayIndexAccessFix
[Sol->Yul] Fixing storage array index access
2020-09-08 16:33:54 +02:00
Djordje Mijovic
ec6d21cde2 [Sol->Yul] Fixing storage array index access 2020-09-08 16:02:56 +02:00
Mathias Baumann
b72fb1333b Adjust docs example to work with v0.8.0 2020-09-08 13:36:16 +02:00
Kamil Śliwak
41bcb97e36 Don't consider contracts implicitly convertible to the type of super
- `super` for all intents and purposes behaves like a type and should be a TypeType rather than ContractType. We have an issue to fix it but it's a breaking change. Until then let's at least not treat other contracts as convertible to the ContractType that `super` represents.
2020-09-08 00:29:44 +02:00
Alexander Arlt
df8bbeeb22 ViewPureChecker::reportMutability: don't check visibility on constructors. 2020-09-07 11:35:33 -05:00
Harikrishnan Mulackal
acec8f271d Type Checker: Disallow `virtual` for modifiers in libraries. 2020-09-07 11:17:38 +02:00
Leonardo Alt
69a7808838 Add new tests 2020-09-03 15:19:33 +02:00
Leonardo Alt
afcd44e77c Update current tests 2020-09-03 15:19:03 +02:00
Harikrishnan Mulackal
974e35d09c Tests and changelog 2020-09-03 13:15:38 +02:00
Harikrishnan Mulackal
e2fd41f097 Implemented UnusedFunctionArgumentPruner 2020-09-03 13:15:38 +02:00
chriseth
2934a1f037 Assign scopes as a separate step. 2020-09-02 20:45:33 +02:00
chriseth
3a48be546d
Merge pull request #9602 from ethereum/structMemToStorageSol2Yul
[Sol->Yul] Implementing various copying of structs
2020-09-02 13:50:46 +02:00
chriseth
23514c1749
Merge pull request #9724 from ethereum/superForYul
Implement ``super``.
2020-09-02 12:48:39 +02:00
Djordje Mijovic
a740cb619b Adding tests for copying structs with function pointers between storage and memory 2020-09-02 12:28:53 +02:00
Djordje Mijovic
23f6369a46 Implementing struct copying from calldata to storage 2020-09-02 12:28:53 +02:00
Djordje Mijovic
762e3f3cee [Sol->Yul] Implementing struct copying from calldata to storage 2020-09-02 12:28:53 +02:00
Djordje Mijovic
381784dd89 [Sol->Yul] Implementing struct copying from storage to memory 2020-09-02 12:28:53 +02:00
Djordje Mijovic
b89c863e11 [Sol->Yul] Implementing struct copying from memory to storage 2020-09-02 12:28:53 +02:00
chriseth
8f34ac472f Implement `super`. 2020-09-02 11:00:42 +02:00
Djordje Mijovic
e7a05324af Adding simple array copying tests 2020-09-02 09:39:28 +02:00
Leonardo
0d83977d5a
Merge pull request #9648 from ethereum/smt_refactor_predicates
[SMTChecker] Refactor CHC predicates
2020-09-01 20:38:47 +02:00