Djordje Mijovic
6f7947cfa5
[Sol->Yul] Optimizing delete struct.
...
Co-authored-by: Daniel Kirchner <daniel@ekpyron.org>
2020-10-14 13:35:15 +02:00
chriseth
25b10b9643
Merge pull request #10028 from ethereum/useArrayLength
...
Use array length function.
2020-10-14 13:35:09 +02:00
chriseth
92a2cddbfa
Merge pull request #10024 from ethereum/outofBoundsGetter
...
Use revert for out-of-bounds array index access in getter.
2020-10-14 12:33:41 +02:00
chriseth
a737e51533
Use array length function.
2020-10-14 12:22:34 +02:00
chriseth
56d6855222
Merge pull request #9738 from ethereum/arrayCopyingSol2Yul
...
[Sol->Yul] Implementing copying of arrays to storage
2020-10-14 12:22:09 +02:00
chriseth
8d241fece9
Merge pull request #9849 from ethereum/fixIce9817
...
Fixing ICE on returning struct with mapping from library
2020-10-14 00:05:19 +02:00
Leonardo Alt
440e5b3935
[SMTChecker] Fix counterexample state reporting
2020-10-13 22:18:43 +01:00
Djordje Mijovic
850a94bdc9
[Sol->Yul] Implementing arrays copying to storage.
...
Co-authored-by: chriseth <chris@ethereum.org>
2020-10-13 20:31:08 +02:00
Djordje Mijovic
1272c474ba
Fixing ICE when returning Struct from library
2020-10-13 20:00:11 +02:00
chriseth
5dc3a971cb
Use revert for out-of-bounds array index access in getter.
2020-10-13 18:57:41 +02:00
Leonardo Alt
aec456021d
Add tx constraints to CHC
2020-10-13 17:49:04 +01:00
Leonardo Alt
a2cdde1191
Add tx data to symbolic state
2020-10-13 17:49:04 +01:00
Leonardo
8fd6de9403
Merge pull request #10014 from ethereum/smt_fix_predicagte
...
[SMTChecker] Fix implicit constructor summary predicate
2020-10-13 14:55:52 +01:00
Mathias Baumann
32b4f18023
Print warning for unnamed return parameters and no return statement
2020-10-13 13:11:29 +02:00
Leonardo Alt
1e568d7dc6
[SMTChecker] Fix implicit constructor summary predicate
2020-10-13 09:38:58 +01:00
chriseth
abfa136afb
Merge pull request #10012 from ethereum/extractSelectorFunction
...
Extract function to compute function selector from signature.
2020-10-12 20:32:05 +02:00
chriseth
4b342a7cad
Merge pull request #9816 from ethereum/exp-base-literals
...
[Sol->Yul] Optimization for exponentiation when the base is a literal
2020-10-12 19:34:38 +02:00
Harikrishnan Mulackal
418aa01c5b
Optimization for exponentiation when the base is a literal
2020-10-12 18:54:58 +02:00
chriseth
cb0d1134b7
Extract function to compute function selector from signature.
2020-10-12 17:57:34 +02:00
Djordje Mijovic
e23d8f5593
[SMTChecker] Supporting inline arrays.
2020-10-12 16:59:14 +02:00
Kamil Śliwak
e1cc888369
Fix checkBaseABICompatibility() to make it actually check return parameters and not just ordinary parameters twice
2020-10-12 15:14:56 +02:00
Kamil Śliwak
3128e82a9a
Look for experimental pragmas in the module containing the definition when generating code for modifiers and inherited functions
2020-10-12 14:29:53 +02:00
chriseth
1a125cf755
Merge pull request #10006 from ethereum/bug-9229-fix
...
Fixes internal compiler error with an unused reference to module member.
2020-10-12 13:43:35 +02:00
Leonardo Alt
18cf01c187
Add this and state to CHC
2020-10-12 11:11:52 +01:00
Leonardo Alt
a86f656704
Refactor state as tuple
2020-10-12 11:11:52 +01:00
Christian Parpart
712d0805eb
Fixes internal compiler error with an unused reference to module member.
2020-10-12 11:56:01 +02:00
chriseth
3739b03af6
Merge pull request #9877 from a3d4/fix-homonymous-declarations-warnings
...
Fix shadowing/same-name warnings for later declarations
2020-10-08 22:27:15 +02:00
a3d4
90c8c32d86
If a declaration shadows several others, group them together
2020-10-08 21:01:25 +02:00
chriseth
ca86eacfb2
Remove traces of errors due to shifts by negative amounts.
2020-10-08 20:24:53 +02:00
a3d4
f29ebc0847
Fix shadowing/same-name warnings for later declarations
2020-10-08 20:22:04 +02:00
chriseth
2d1bd03a98
Merge pull request #9994 from ethereum/revertOnFailingReadFromCalldata
...
Revert on failing read from calldata.
2020-10-08 20:11:45 +02:00
chriseth
3970c4e57d
Merge pull request #9892 from ethereum/constantsAtFileLevel
...
Constants at file-level.
2020-10-08 19:53:33 +02:00
chriseth
8b96d17cb5
Revert on failing read from calldata.
2020-10-08 19:43:16 +02:00
chriseth
f8d5c4db36
Merge pull request #9843 from ethereum/deleteStructSol2Yul
...
[Sol->Yul] Implementing delete struct
2020-10-08 19:08:40 +02:00
chriseth
b2be8e1c0f
Fix module member access.
2020-10-08 18:56:17 +02:00
chriseth
346fe1c6c5
Constants at file-level.
2020-10-08 18:56:17 +02:00
chriseth
21dee1c8ba
Check for circular constants across contracts.
2020-10-08 18:56:17 +02:00
chriseth
2d9479b06c
Properly set scope.
2020-10-08 18:56:17 +02:00
chriseth
b5a08f8641
Merge pull request #9958 from a3d4/fix-ice-storage-parameters-in-libraries
...
Fix ICE caused by storage parameters with nested mappings in libraries
2020-10-08 17:17:09 +02:00
Djordje Mijovic
ad8d840ee7
[Sol->Yul] Implementing conversion of struct to struct pointer.
...
Co-authored-by: Daniel Kirchner <daniel@ekpyron.org>
2020-10-08 16:37:57 +02:00
Djordje Mijovic
700390a68b
[Sol->Yul] Implementing deleting storage structs
2020-10-08 15:27:33 +02:00
Djordje Mijovic
3ede1f1bca
Adding support for recursive functions in MultiUseYulFunctionCollector
2020-10-08 15:27:33 +02:00
chriseth
fd6196af16
Copying of arrays from storage to memory.
2020-10-08 15:16:13 +02:00
a3d4
d7b4b4a7aa
Fix ICE caused by storage parameters with nested mappings in libraries
2020-10-07 22:07:57 +02:00
Mathias Baumann
6114cd8e8e
Add missing annotation assignments
2020-10-07 14:52:35 +02:00
Christian Parpart
99d48348de
Eliminate dead ASTReduce.
2020-10-07 13:38:46 +02:00
Christian Parpart
04079bff6f
Eliminates dead code around GasEstimator
...
- structuralEstimation()
- breakToStatementLevel()
2020-10-07 13:31:40 +02:00
chriseth
431397eddf
Merge pull request #9943 from ethereum/array-cleanup
...
Array cleanup
2020-10-07 11:53:06 +02:00
Kamil Śliwak
33ff79bf82
Add missing checks for parameter compatibilty with ABIEncoderV1 in calls
2020-10-06 21:28:46 +02:00
chriseth
25d408058b
Merge pull request #9954 from ethereum/issue-9948
...
Remove unneeded assert
2020-10-06 16:50:14 +02:00
Harikrishnan Mulackal
1bdbc10110
Properly cleanup after copying dynamic-array to storage for packed types
2020-10-06 16:06:02 +02:00
Djordje Mijovic
818afcbec2
[Sol->Yul] Implementing push for nested storage arrays and storage arrays of structs.
2020-10-06 13:06:40 +02:00
Mathias Baumann
6af16469e7
Remove unneeded assert
...
An error will trigger later in the name resolve phase
2020-10-05 13:01:11 +02:00
Alex Beregszaszi
7417965ae3
Merge pull request #9945 from ethereum/fix-storage-typo
...
Fix typo: storage
2020-10-02 13:25:27 +01:00
Harikrishnan Mulackal
7773bb3bd0
Fix typo: storage
2020-10-02 11:44:10 +02:00
Alex Beregszaszi
fedbea46cd
[SMTChecker] Support type conversions
2020-10-02 10:26:02 +02:00
Leonardo
87e1934bee
Merge pull request #9885 from ethereum/smt_array_slices
...
[SMTChecker] Support array slices
2020-10-01 18:12:57 +02:00
chriseth
e5771efdf8
Merge pull request #9905 from ethereum/deleteArrayPackedSol2Yul
...
[Sol->Yul] Implementing deleting of storage array of types that are packed in storage
2020-10-01 16:50:57 +02:00
Leonardo Alt
c8cc73c80c
Support array slices
2020-10-01 11:52:02 +02:00
Djordje Mijovic
aa23ebc8e6
[Sol->Yul] Implementing array resizing for packed array types.
2020-10-01 10:25:00 +02:00
chriseth
3af21c92d2
Merge pull request #9702 from a3d4/fix-7410-arrays-of-mappings
...
Fix ICE caused by an array of mappings
2020-09-30 20:24:09 +02:00
chriseth
fda8bde2d7
Stop after parsing.
2020-09-30 16:57:49 +02:00
Harikrishnan Mulackal
fd02ccc68c
Implemented events with indexed function as parameter in Yul
2020-09-30 12:11:39 +02:00
Harikrishnan Mulackal
3970412422
Implemented events with function type as one of its indexed parameters
2020-09-30 12:11:38 +02:00
a3d4
3c876fcb60
Fix ICE caused by an array of mappings
2020-09-29 18:17:46 +02:00
chriseth
2037b7d6b8
Merge pull request #9820 from ethereum/new-annotation-field-virtual
...
Add annotation field ``requiresVirtualLookup``
2020-09-29 15:33:54 +02:00
Leonardo Alt
352cce5fc8
[SMTChecker] Support addmod and mulmod.
2020-09-29 12:45:19 +02:00
Leonardo
7540ae4b3a
Merge pull request #9777 from ethereum/smt_refactor_predicate_instances
...
[SMTChecker] Refactor CHC predicate instances
2020-09-29 10:35:37 +02:00
Harikrishnan Mulackal
d23aff4cbb
Merge pull request #9918 from ethereum/isStateScopeCheck
...
Make isStateVariable regular scope check.
2020-09-29 09:33:03 +02:00
chriseth
cb82d8239c
Make isStateVariable regular scope check.
2020-09-28 19:31:54 +02:00
chriseth
8687b9a3dc
Merge pull request #9903 from a3d4/refactor-warnonshadow
...
Simplify DeclarationRegistrationHelper
2020-09-28 19:28:34 +02:00
Mathias Baumann
8584c98b6a
Add annotation field `requiresVirtualLookup
`
2020-09-28 17:36:23 +02:00
Leonardo Alt
fa7c9a0dc6
Simplify internal function calls
2020-09-28 15:31:15 +02:00
a3d4
9b740b03ff
Simplify DeclarationRegistrationHelper
2020-09-28 13:21:57 +02:00
Leonardo Alt
3519b38055
Move predicate functions from CHC to PredicateInstance
2020-09-28 12:43:19 +02:00
Leonardo Alt
ac93ee1d08
Move error flag from CHC to SymbolicState
2020-09-28 12:37:57 +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
Leonardo Alt
e6bd18525b
[SMTChecker] Add engine prefix to verification target error messages
2020-09-25 19:09:06 +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
d52b3839e2
Merge pull request #9882 from ethereum/invalidOnErrorYul
...
[SolYul] Use invalid opcode for internal errors
2020-09-24 19:37:44 +02:00
chriseth
1e3596ec71
Use invalid opcode on internal errors.
2020-09-24 16:02:35 +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
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
Alex Beregszaszi
ca743191b7
Report why assigning oversized hex strings to bytes fail
2020-09-23 16:46:47 +01:00
chriseth
27f768f4d6
Merge pull request #9868 from ethereum/conversion-result-msg
...
Display BoolResult from implicit/explicit conversions for more clarity
2020-09-23 17:19:41 +02:00
Alex Beregszaszi
af8d78010e
Display BoolResult from implicit/explicit conversions for more clarity in error messages
2020-09-23 16:04:07 +01:00
chriseth
e696c4eafd
Extract common loop.
2020-09-23 16:14:24 +02:00
chriseth
55e6a92692
Add specialization for small numbers.
2020-09-23 16:14:24 +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
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
79f550dba9
[SMTChecker] Supporting compound shift operators.
2020-09-23 11:31:37 +02:00
Djordje Mijovic
773e000227
[SMTChecker] Implementing compound bitwise And/Or/Xor operators
2020-09-23 11:31:37 +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
a3d4
6b77a20134
Introduce CompositeType
2020-09-21 16:18:04 +02:00
Daniel Kirchner
976abf4715
Easy review fixes.
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
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
chriseth
6e2d2feb10
Small fixes wrt ReasoningBasedSimplifier.
2020-09-16 18:08:54 +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
adccc0608d
Merge pull request #9736 from ethereum/yul_smt
...
Reasoning based optimizer using integers only
2020-09-15 18:45:55 +02:00
Leonardo Alt
d87e15e2cd
Refactor CHC sorts
2020-09-15 16:45:50 +02:00
chriseth
f73fb726af
Reasoning based optimizer.
2020-09-15 15:57:58 +02:00
chriseth
930646ba2b
Report locations of unimplemented features.
2020-09-15 14:41:46 +02:00
chriseth
b1ccf73511
Store current source location in Yul IR generation.
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
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
chriseth
eac175c08b
Merge pull request #9053 from ethereum/generatedSources
...
Export generated sources
2020-09-15 12:08:47 +02:00
chriseth
00c8fc73ad
Re-organize EVM object names.
2020-09-15 11:29:10 +02:00
chriseth
3b4024c2e1
Store optimized code if optimizer is activated.
2020-09-15 11:22:41 +02:00
chriseth
e7e9b03bd8
Store generated sources in standard-json output.
2020-09-15 11:22:16 +02:00
a3d4
4ca7655b74
Correct the warning for homonymous, but not shadowing declarations
2020-09-15 02:39:21 +02:00
Alex Beregszaszi
9aa9962f71
Add ContractDefinition::interfaceId() helper
2020-09-14 20:34:52 +01:00
Alex Beregszaszi
83934254ea
[SMTChecker] Support type(I).interfaceId
2020-09-14 20:34:52 +01: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
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
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
Leonardo Alt
00f6b303b1
[SMTChecker] Change warning message
2020-09-09 16:14:21 +02:00
Kamil Śliwak
5e9dd67a0a
FunctionType::canTakeArguments(): Use the correct index when comparing named parameter types
2020-09-09 14:45:58 +02: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
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
Kamil Śliwak
7681c7dddf
Remove dead code from ContractType::isImplicitlyConvertibleTo()
2020-09-08 00:26:29 +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