Commit Graph

4753 Commits

Author SHA1 Message Date
Kamil Śliwak
1bf700e088 Return a type error when an enum has more than 256 members 2020-11-16 18:58:19 +01:00
Kamil Śliwak
b97c6c55ad StandardCompiler: Don't assume that link reference always contains a colon 2020-11-16 17:41:54 +01:00
Leonardo
f1846b57a2
Merge pull request #10244 from blishko/this-external-calls
[SMTChecker] Analyzing external calls to `this`
2020-11-13 11:28:34 +00:00
Martin Blicha
5ca7a24896 [SMTChecker] Added support for precise modeling of external calls to this.
Modeling external calls to this, since we can trust these calls.

fixed problem with transaction data not being restored after trusted external call

update to the tests

additional tests

changelog entry

added tests for external getters of this
2020-11-13 11:49:09 +01:00
Alex Beregszaszi
a3381d7260 Add settings.viaIR to standard json 2020-11-12 22:38:44 +00:00
Alex Beregszaszi
301d7ea39e Add viaIR option to CompilerStack
It also sets the experimental flag in the metadata to true.
2020-11-12 22:34:31 +00:00
Alex Beregszaszi
fcedaba7f7 [ewasm] Allow compiling abstract/interface contracts 2020-11-12 15:26:11 +00:00
chriseth
d744a8fb48 Fail on invalid storage encoding for byte arrays. 2020-11-12 11:12:42 +01:00
chriseth
14ed67ac4b Merge remote-tracking branch 'origin/develop' into breaking 2020-11-11 20:33:40 +01:00
chriseth
44eb63fad0
Merge pull request #10263 from ethereum/fixTryCreateYul
Fix Yul codegen for try with create.
2020-11-11 20:10:54 +01:00
chriseth
571e1e5269
Merge pull request #10266 from ethereum/fixCalldataIndexAccess
Fix calldata index access.
2020-11-11 19:03:19 +01:00
chriseth
e7e76131c8
Merge pull request #10265 from ethereum/fixMappingInit
Fix initializing mapping return variables.
2020-11-11 18:42:45 +01:00
chriseth
8f570a3184 Fix calldata index access. 2020-11-11 18:42:26 +01:00
chriseth
01d7d50750 Fix initializing mapping return variables. 2020-11-11 18:08:42 +01:00
chriseth
59da25056b Fix Yul codegen for try with create. 2020-11-11 17:52:50 +01:00
Alex Beregszaszi
2f899bbffa [SMTChecker] Avoid implicit conversion 2020-11-11 16:29:03 +00:00
chriseth
141277dadf Merge remote-tracking branch 'origin/develop' into breaking 2020-11-10 17:28:36 +01:00
Leonardo
55ac5de472
Merge pull request #10240 from ethereum/immutablesPureValue
Immutables with literal values are pure.
2020-11-10 15:23:33 +00:00
chriseth
6cc264ff0a
Merge pull request #10221 from ethereum/refactorArrayConversions
[Sol->Yul] Refactor array conversions
2020-11-10 16:18:11 +01:00
hrkrshnn
2348b721bb Tests after changing type of super to TypeType 2020-11-10 15:38:21 +01:00
hrkrshnn
9eafa1fa1a Change type of super to TypeType 2020-11-10 15:38:21 +01:00
Djordje Mijovic
efba9e45e4 [Sol->Yul] Refactoring array conversions so that they end up in same function. 2020-11-10 15:13:45 +01:00
chriseth
da92fe548e Merge remote-tracking branch 'origin/develop' into breaking 2020-11-10 13:48:32 +01:00
chriseth
b981a2a74a
Merge pull request #10229 from ethereum/linking-in-assembly-mode
Linking in assembly mode
2020-11-10 13:21:57 +01:00
chriseth
3c1d990964
Merge pull request #10224 from ethereum/strict-literal-to-enum-conversion
[BREAKING] Strict explicit conversion between literals and enums
2020-11-10 13:15:12 +01:00
chriseth
765ed13814 Immutables with literal values are pure. 2020-11-10 13:08:42 +01:00
Leonardo
25b2a38d8b
Merge pull request #10202 from ethereum/smt_fix_modifiers_branches
[SMTChecker] Fix CHC false positives when using branches inside modifiers
2020-11-09 16:42:30 +00:00
Kamil Śliwak
df8e182b46 Link binaries produced in assembly mode 2020-11-09 17:17:43 +01:00
chriseth
768ac9514b Merge remote-tracking branch 'origin/develop' into breaking 2020-11-09 14:48:48 +01:00
chriseth
04195439b7 Merge remote-tracking branch 'origin/develop' into HEAD 2020-11-09 14:28:05 +01:00
Kamil Śliwak
c970fb46ce YulUtilFunctions::conversionFunction: Add more info to the assertion that fails on invalid conversion 2020-11-09 13:41:03 +01:00
hrkrshnn
03f58c6b52 Strict explicit conversion between literals and enums
Explicit conversions between literals and enums are only allowed if the literal can represent a
value in the enum.
2020-11-06 19:15:02 +01:00
Leonardo Alt
00858c0ccf Isoltets SMTChecker option and BMC specific tests 2020-11-06 15:03:38 +00:00
Leonardo Alt
89dce24f24 Force SMT variable creation order 2020-11-06 11:51:01 +00:00
Leonardo Alt
646be53f2f Sort variables and expressions by AST id 2020-11-06 11:50:43 +00:00
chriseth
b40fb527de Remove access to functions from inline assembly (unused code). 2020-11-05 14:43:29 +01:00
Leonardo Alt
1dbd8f8d67 Fix CHC false positives when using branches inside modifiers 2020-11-04 21:47:07 +00:00
Leonardo
62535c2fd4
Merge pull request #10181 from ethereum/smt_user_timeout
[SMTChecker] User timeout option
2020-11-04 10:55:28 +00:00
Leonardo Alt
daf859c15b [SMTChecker] report SMTEncoder warnings also via CHC 2020-11-03 16:06:17 +00:00
chriseth
001eac546e
Merge pull request #10161 from ethereum/VirtualLookup-static
Fix incorrectly set annotation.requiredLookup
2020-11-03 17:03:17 +01:00
chriseth
1f3239d097 Simplify split parameter. 2020-11-03 14:34:18 +01:00
chriseth
fea3f848f9 Prepare store for external function types. 2020-11-03 14:34:18 +01:00
hrkrshnn
a555556559 Stricter explicit conversions from Literals to Integers.
Explicit conversions from Literals to Integers will now be as strict as implicit conversions between
the same.
2020-11-03 14:31:44 +01:00
chriseth
06d0459a72
Merge pull request #10187 from ethereum/validateExternal
[SolYul] Properly validate external functions from calldata.
2020-11-03 14:29:28 +01:00
chriseth
5ffee049fa Merge remote-tracking branch 'origin/develop' into breaking 2020-11-03 14:05:14 +01:00
chriseth
e27a1b786b Wording in error messages. 2020-11-03 13:31:51 +01:00
chriseth
834da7be90 Introduce abicoder pragma. 2020-11-03 13:31:50 +01:00
chriseth
c16b535804 Validate external functions from calldata. 2020-11-03 13:28:08 +01:00
Leonardo Alt
d03ddeb0fa [SMTChecker] User timeout option 2020-11-03 10:46:11 +00:00
chriseth
22b31054b6
Merge pull request #10174 from ethereum/storeInternalFunctions
Implement internal functions in storage.
2020-11-03 09:56:12 +01:00
Đorđe Mijović
e0529989da
Merge pull request #10180 from ethereum/convertDuringStoring
[SolYul] Convert properly during storing.
2020-11-03 08:42:14 +01:00
chriseth
129b095b09 Implement internal functions in storage. 2020-11-02 23:10:03 +01:00
chriseth
49bd3f2af4 Convert properly during storing. 2020-11-02 21:15:34 +01:00
chriseth
b287a6e995 Disallow specifying call options multiple times. 2020-11-02 20:07:23 +01:00
Leonardo Alt
e38d0db683 [SMTChecker] Fix internal error when array.push() is used as LHS of assignment 2020-11-02 13:32:53 +00:00
Leonardo Alt
94e2506132 Fix inherited state vars for BMC 2020-11-02 11:42:39 +00:00
Martin Blicha
c1a57ffbfe [SMTChecker] More precise creation of verification targets. 2020-10-30 19:11:28 +01:00
hrkrshnn
adcf9eba8d Fix incorrectly set annotation.requiredLookup 2020-10-30 15:40:06 +01:00
chriseth
1066af3b98 Copy byte array to storage. 2020-10-29 18:53:15 +01:00
chriseth
14d7ca49c0 Rename function. 2020-10-29 18:53:15 +01:00
chriseth
ace810b078
Merge pull request #10137 from ethereum/fixedBytesOps
[Sol->Yul] Bit operations for fixed bytes types.
2020-10-29 18:04:07 +01:00
chriseth
f215042cf6 Fix style. 2020-10-29 17:35:55 +01:00
chriseth
ce50f05fc1 Merge remote-tracking branch 'origin/develop' into HEAD 2020-10-29 16:44:47 +01:00
Alex Beregszaszi
1ab6340828 Move AsmJsonImporter from libsolidity to libyul
It is next to AsmJsonConverter now and interdependencies are shrunk.
2020-10-29 14:06:34 +00:00
chriseth
e93a84ccd4 Merge remote-tracking branch 'origin/develop' into HEAD 2020-10-28 18:19:31 +01:00
chriseth
0c12b2e53a Bit operations for fixed bytes types. 2020-10-28 18:04:54 +01:00
Đorđe Mijović
1f50b86aad
Merge pull request #10073 from ethereum/smt_format_array_cex
Format array cex
2020-10-28 12:39:19 +01:00
Leonardo Alt
25f75ce547 Remove nondet tests 2020-10-28 11:03:42 +00:00
chriseth
cc4b44058d
Merge pull request #10126 from ethereum/fixIceStructCalldataToStorageSol2Yul
[Sol->Yul] Fixing ice when copying struct that contains nested array to storage
2020-10-28 11:46:22 +01:00
Leonardo
07c454949f
Merge pull request #10127 from ethereum/fixIceSmtBitwise
[SMTChecker] Fix ICE when using >>>
2020-10-28 09:28:18 +00:00
Djordje Mijovic
28f92064b9 [Sol->Yul] Fixing ice when copying struct that contains nested array to storage 2020-10-28 09:28:40 +01:00
Djordje Mijovic
9cc37c3fa4 [SMTChecker] Fix ICE when using >>> 2020-10-28 09:25:14 +01:00
Leonardo Alt
f2f84a7f97 Format array cex 2020-10-27 16:32:43 +00:00
Leonardo Alt
446e46fe06 Use Expression instead of plain strings for counterexamples 2020-10-27 12:04:51 +00:00
Leonardo Alt
4755cfe157 Fix assignment to contract member access 2020-10-26 14:39:02 +00:00
Leonardo Alt
d3d77e482c Fix ICE on conditions with tuples of rationals 2020-10-23 14:47:53 +01:00
chriseth
20f39ab6e9
Merge pull request #10097 from ethereum/develop
Merge develop into breaking.
2020-10-23 10:30:24 +02:00
chriseth
bfd267459c Panic codes. 2020-10-22 19:25:55 +02:00
chriseth
bfc8e26007 Remove low-level log functions. 2020-10-22 17:50:14 +02:00
Martin Blicha
ade3b9951c [SMTChecker] Added support for selector when expression's value is known at compile time 2020-10-22 14:18:52 +02:00
Leonardo Alt
b087fa9750 [SMTChecker] Fix ICE implicit conversion string literal -> byte 2020-10-21 22:03:01 +01:00
Martin Blicha
f0d81601db [SMTChecker] Adding division by zero checks in the CHC engine 2020-10-21 14:48:33 +02:00
chriseth
a83ad58109
Merge pull request #10081 from ethereum/maskBytes
Extract mask bytes function.
2020-10-21 10:09:40 +02:00
chriseth
3920f398aa
Update libsolidity/codegen/YulUtilFunctions.h
Co-authored-by: Harikrishnan Mulackal <webmail.hari@gmail.com>
2020-10-21 09:48:22 +02:00
chriseth
53d6721e47 Extract mask bytes function. 2020-10-20 17:36:46 +02:00
Mathias Baumann
a4dc110b38 Fix dependency tracking for abstract contracts for Yul codegen 2020-10-20 16:58:24 +02:00
Mathias Baumann
e991465336 Fix dependency tracking for abstract contracts 2020-10-20 16:58:24 +02:00
Leonardo Alt
cf35785328 Add unknown message to all verification targets 2020-10-19 20:54:13 +01:00
chriseth
23205711b7 Fix build failure. 2020-10-19 19:20:36 +02:00
chriseth
6979952995 Merge remote-tracking branch 'origin/develop' into HEAD 2020-10-19 18:02:50 +02:00
chriseth
527c073bb9 Checked arithmetic by default. 2020-10-19 16:58:37 +02:00
Leonardo Alt
b67ade5163 Move modelCheckerSettings out of settings in StandardCompiler 2020-10-19 10:39:06 +01:00
Daniel Kirchner
909ce9164a Allow arrays of contract types as type expressions e.g. for abi.decode. 2020-10-16 19:40:41 +02:00
Daniel Kirchner
db4dd51739
Merge pull request #10055 from ethereum/userDefinedLibraryTypes
Disallow invalid use of library names as type names.
2020-10-16 18:55:42 +02:00
Daniel Kirchner
3f14c904b0 Disallow invalid use of library names as type names. 2020-10-16 18:25:08 +02:00
Leonardo
a097f9f124
Merge pull request #10025 from ethereum/smt_crypto_functions
[SMTChecker] Support crypto functions in CHC
2020-10-16 16:40:29 +01:00
Leonardo
8d7bdcaba7
Merge pull request #10036 from ethereum/smt_cli_option
Add CLI option to choose model checker engine
2020-10-16 16:37:33 +01:00
Martin Blicha
78c8fbc7ce [SMTChecker] encoding division and modulo operations using slack variables 2020-10-16 16:06:31 +02:00
Leonardo Alt
4e49135318 Add CLI option to choose model checker engine 2020-10-16 15:01:47 +01:00
Leonardo Alt
54f76e081a [SMTChecker] Support crypto functions in CHC 2020-10-16 14:57:13 +01:00
Djordje Mijovic
5f0b8dd716 [Sol->Yul] Changing yul unimplemented test as delete bytes is implemented now. 2020-10-15 22:05:40 +02:00
Djordje Mijovic
4a66723ff9 [Sol->Yul] Implementing resizing of dynamic byte arrays
Co-authored-by: chriseth <chris@ethereum.org>
2020-10-15 22:05:35 +02:00
chriseth
c9ed1b9ae9
Merge pull request #10047 from ethereum/removeMemoryGuards
Disable StackLimitEvader again until we have stronger correctness guarantees.
2020-10-15 18:56:33 +02:00
Daniel Kirchner
0dca223b45 Add another argument to setimmutable and the AssignImmutable opcode, allowing to modify code at any memory offset. 2020-10-15 18:14:41 +02:00
chriseth
00fb152316
Merge pull request #10048 from ethereum/develop
Merge develop into breaking
2020-10-15 17:30:11 +02:00
chriseth
89bdad2096
Merge pull request #10043 from ethereum/emptyArrayCopy
Fix empty array copy bug.
2020-10-15 17:07:54 +02:00
chriseth
38abadf502 Fix empty array copy bug. 2020-10-15 16:48:08 +02:00
Daniel Kirchner
82876fd00e Disable StackLimitEvader again until we have stronger correctness guarantees. 2020-10-15 16:16:41 +02:00
chriseth
e17d6853a9
Merge pull request #9985 from ethereum/optimizeDeleteStructSol2Yul
[Sol->Yul] Optimizing delete struct.
2020-10-15 16:03:06 +02:00
Daniel Kirchner
20072918d9 Make sure lValueOfOrdinaryAssignment does not have an undefined value. 2020-10-14 21:00:18 +02:00
chriseth
979d3062bc
Merge pull request #10033 from ethereum/develop
Merge develop into breaking
2020-10-14 14:12:20 +02:00
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
chriseth
f6e57a0eec
Merge pull request #10023 from ethereum/develop
Merge develop into breaking.
2020-10-13 18:18:53 +02:00
chriseth
c86ea59384
Merge pull request #10019 from ethereum/exp-associativity
[BREAKING] Exp associativity
2020-10-13 17:03:18 +02:00
hrkrshnn
13e7012e1e Parser: Exponentiation is right associative 2020-10-13 16:38:37 +02: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
006e5f2e1f Allow path syntax for super constructor calls 2020-10-13 14:32:11 +02:00
Mathias Baumann
0b7b174945 Add AST Node IdentifierPath 2020-10-13 14:32:11 +02:00
Mathias Baumann
32b4f18023 Print warning for unnamed return parameters and no return statement 2020-10-13 13:11:29 +02:00
chriseth
0ea4bdafcd
Merge pull request #10017 from ethereum/develop
Merge develop into breaking.
2020-10-13 12:58:23 +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
chriseth
8a1bf41ac0
Merge pull request #10010 from ethereum/develop
Merge develop into breaking.
2020-10-12 15:33:34 +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
14352ed921 Merge remote-tracking branch 'origin/develop' into HEAD 2020-10-08 20:18: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
chriseth
e16811e79f Merge remote-tracking branch 'origin/develop' into HEAD 2020-10-08 14:56:52 +02:00
a3d4
d7b4b4a7aa Fix ICE caused by storage parameters with nested mappings in libraries 2020-10-07 22:07:57 +02:00
Harikrishnan Mulackal
a309669f75 Disallow explicit conversions from negative literals to `address` 2020-10-07 16:06:02 +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
b401093679
Merge pull request #9967 from ethereum/develop
Merge develop into breaking.
2020-10-06 17:45:53 +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
9a28dbfebd
Merge pull request #9925 from ethereum/develop
Merge develop into breaking.
2020-09-29 16:42:56 +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
chriseth
4bdec8107c Merge remote-tracking branch 'origin/develop' into HEAD 2020-09-29 09:53:50 +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
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
763282343f
Merge pull request #9883 from ethereum/develop
Merge develop into breaking.
2020-09-24 16:05:51 +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
0c6dc1dce4
Merge pull request #9862 from ethereum/develop
Merge develop into breaking
2020-09-23 12:22:32 +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
aa7a6922e7 Restrict unary negation to signed integers. 2020-09-17 15:01:53 +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
Leonardo Alt
7b3cd019d4 Make recursive structs unsupported 2020-09-03 15:19:33 +02:00
Leonardo Alt
bd0c46abf5 Remove unreachable/redundant error messages 2020-09-03 15:19:03 +02:00
Leonardo Alt
e61b731647 [SMTChecker] Support structs 2020-09-03 15:19:03 +02:00
Harikrishnan Mulackal
e2fd41f097 Implemented UnusedFunctionArgumentPruner 2020-09-03 13:15:38 +02:00
chriseth
1f11965849 Simplify DeclarationRegistrationHelper. 2020-09-02 20:45:33 +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
1fab5b79fb Refactoring signature for updateStorageValueFunction 2020-09-02 12:28:53 +02:00
Djordje Mijovic
15163b2270 Refactoring readFromStorage util frunctions
Co-authored-by: Daniel Kirchner <daniel@ekpyron.org>
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
Leonardo
0d83977d5a
Merge pull request #9648 from ethereum/smt_refactor_predicates
[SMTChecker] Refactor CHC predicates
2020-09-01 20:38:47 +02:00
Leonardo Alt
49d3804de4 [SMTChecker] Fix rational number short circuit 2020-09-01 17:21:13 +02:00
Leonardo Alt
a3b6019131 Move post input and post output filtering from CHC to Predicate 2020-09-01 16:10:12 +02:00
Leonardo Alt
2e2e96cc93 Move state model filtering from CHC to Predicate 2020-09-01 16:10:12 +02:00
Leonardo Alt
e3a8c94ace Move formatFunctionCallCounterexample from CHC to Predicate 2020-09-01 16:10:11 +02:00
Leonardo Alt
5bbb20d3cb Move stateVariablesIncludingInheritedAndPrivate from CHC to SMTEncoder 2020-09-01 16:09:57 +02:00
Leonardo Alt
016b9b83a8 Refactor predicates 2020-09-01 16:09:56 +02:00
Leonardo Alt
238b8a929e [SMTChecker] Fix ICE on tuples of one element that actually have tuple type 2020-09-01 08:31:57 +02:00
Leonardo Alt
5cafbeebec [SMTChecker] Fix ICE on tuple assignment 2020-09-01 08:29:01 +02:00
Leonardo Alt
50e0ada77d [SMTChecker] Fix unary operator on lvalue tuple 2020-09-01 08:25:06 +02:00
chriseth
34543e5eab
Merge pull request #9692 from ethereum/smt_fix_pop
[SMTChecker] Fix soundness of array pop
2020-08-31 20:07:58 +02:00
chriseth
0203eea20e
Merge pull request #9649 from a3d4/improve-error-coverage-erorrecovery
Complete test coverage for errors related to parser error recovery
2020-08-31 18:33:19 +02:00
Leonardo Alt
8c05db88c0 [SMTChecker] Fix soundness of array pop 2020-08-31 12:11:33 +02:00
chriseth
20efba6b55
Merge pull request #9568 from ethereum/fixImmutables
Fix reads checks for complex assignment and increment/decrement for immutable variables.
2020-08-28 16:14:18 +02:00
chriseth
8b564a7be7 Fix reads checks for immutable variables. 2020-08-28 15:24:40 +02:00
chriseth
ec3f3c41dd
Merge pull request #9690 from ethereum/immutable-rhs-vardecl
Disallow assigning more than once to immutables during the variable declaration
2020-08-28 14:39:23 +02:00
Leonardo
df79a4f162
Merge pull request #9691 from ethereum/oversized-function-array
Changed canonicalName() to toString() because of internal functions
2020-08-28 13:57:47 +02:00
Harikrishnan Mulackal
7ff809dc78 Disallow assigning more than once to immutables during the vardecl 2020-08-28 13:42:54 +02:00
Harikrishnan Mulackal
672f391660 Changed canonicalName() to toString() because of internal functions 2020-08-27 21:09:35 +02:00
Alex Beregszaszi
e872b1b51e
Merge pull request #9689 from ethereum/using-for-interface
Disallow ``using for`` directive for interfaces.
2020-08-27 19:09:19 +01:00
chriseth
0798167f3d
Merge pull request #9612 from ethereum/yul-rightarrow
Introduce RightArrow (->) token
2020-08-27 16:21:18 +02:00
Harikrishnan Mulackal
c7dc42a794 Disallow `using for` directive for interfaces. 2020-08-27 15:57:51 +02:00
Harikrishnan Mulackal
7826564226 Fix infinite loop for structs in library function parameter 2020-08-27 14:18:07 +02:00
Harikrishnan Mulackal
1c066b1059 Allow type(Contract).name for abstract contracts and interfaces 2020-08-27 13:37:08 +02:00
Alex Beregszaszi
662f7d8fac Rename Arrow to DoubleArrow 2020-08-27 12:28:27 +01:00
chriseth
161ed4c948
Merge pull request #9683 from ethereum/fix-exp-neg-literal
Disallow the exponent to be a signed integer literal
2020-08-27 13:26:15 +02:00
Harikrishnan Mulackal
6f22899153 Disallow the exponent to be a signed integer literal 2020-08-27 12:08:45 +02:00
Harikrishnan Mulackal
79b2e41252 Fix inheritdoc tags trying to resolve 'empty' elements 2020-08-26 21:28:00 +02:00
Leonardo
fdc4142b2c
Merge pull request #9661 from ethereum/smtBitwiseOr
[SMTChecker] Support bitwise or, xor and not operator
2020-08-26 18:20:15 +02:00
chriseth
dbe0518cd2
Merge pull request #9652 from ethereum/iceInlineAssemblyOffset
[Sol->Yul] Enabling storage pointers to local vars in inline assembly.
2020-08-26 17:12:54 +02:00
Djordje Mijovic
11a7763f49 [SMTChecker] Support bitwise or, xor and not. 2020-08-26 11:06:56 +02:00
Djordje Mijovic
d99b81ef02 [Sol->Yul] Enabling storage pointers to local vars in inline assembly. 2020-08-26 10:25:42 +02:00
chriseth
21489d8193
Merge pull request #9638 from ethereum/fixNullValuesAST
Remove null values from AST also in standard-json mode.
2020-08-24 15:57:33 +02:00
Đorđe Mijović
4dd25f7302
Merge pull request #9639 from ethereum/smtConditionalSupport
[SMTChecker] Supporting conditional operator
2020-08-21 14:25:47 +02:00
Djordje Mijovic
3f97a1012a [SMTChecker] Supporting conditional operator 2020-08-20 21:39:35 +02:00
a3d4
0ee4a85a84 Complete test coverage for errors related to parser error recovery 2020-08-20 16:14:39 +02:00
chriseth
4a720a6511
Merge pull request #9646 from a3d4/improve-error-coverage-syntaxchecker
Improve error coverage of syntax checker
2020-08-20 13:18:35 +02:00
chriseth
4dc63875f9
Merge pull request #9113 from ethereum/smt_chc_overflow
[SMTChecker] Add underflow/overflow target to CHC
2020-08-20 13:17:00 +02:00
a3d4
ad311fae19 Improve error coverage of syntax checker 2020-08-20 03:23:21 +02:00
chriseth
7b8cc0c49b Remove null values from AST also in standard-json mode. 2020-08-19 11:06:14 +02:00
chriseth
17edf4f207
Merge pull request #9479 from ethereum/exp
Implement checked exponentiation.
2020-08-18 13:57:25 +02:00
chriseth
c34e349572 Implement checked exponentiation. 2020-08-18 12:42:53 +02:00
chriseth
2ff954ec2d Use kind in json AST for free function. 2020-08-18 11:46:59 +02:00
chriseth
8d92fd1c04 Use opportunistic visiting order for modifiers. 2020-08-18 11:46:59 +02:00
chriseth
e9f91edc4b Update existing tests. 2020-08-18 11:46:59 +02:00
chriseth
9324fb4f20 Free functions. 2020-08-18 11:46:59 +02:00
chriseth
833f973f0e Fix assertion for receive function in libraries. 2020-08-17 16:49:13 +02:00
Leonardo Alt
8a06041bbe [SMTChecker] Add underflow/overflow target to CHC 2020-08-14 12:58:27 +02:00
Jason Cobb
888d7037cd
Make FunctionCallAnnotation::kind a SetOnce 2020-08-12 11:57:01 -04:00
Djordje Mijovic
d685bee2ec [Sol->Yul] Implementing struct copying from calldata to memory.
Co-authored-by: Daniel Kirchner <daniel@ekpyron.org>
2020-08-11 16:18:06 +02:00
Leonardo Alt
ec31d971e6 [SMTChecker] Fix tuple name for arrays 2020-08-07 12:28:10 +02:00
Daniel Kirchner
143b37af56 Only conditionally run old code generation in CompilerStack, StandardCompiler and semantic tests. 2020-08-06 15:05:17 +02:00
chriseth
3a409c39e4
Merge pull request #9518 from ethereum/smt_fix_bmc_function_inlining
[SMTChecker] Fix ICE in BMC function inlining
2020-08-06 00:50:04 +02:00
chriseth
98faf82d3f
Merge pull request #9563 from ethereum/constrInLib
Fix member lookup for constructor in library.
2020-08-05 19:07:28 +02:00
Leonardo Alt
8df8c6e14f [SMTChecker] Fix ICE in BMC function inlining 2020-08-05 11:47:25 +02:00
chriseth
0ea5aae9aa Require inheritdoc tag to be non-empty. 2020-08-04 12:13:23 +02:00
chriseth
c96e997a3c Fix member lookup for constructor in library. 2020-08-04 10:51:40 +02:00
chriseth
d31f05fcc0
Merge pull request #9528 from a3d4/improve-error-coverage-return-tag
Use assert to check if return tag applies to a public state-variable
2020-08-03 17:35:50 +02:00
a3d4
0b45168bcb Use assert to check if return tag applies to a public state-variable 2020-08-03 05:22:09 +02:00
chriseth
cd2ce28317
Merge pull request #9547 from ethereum/useCBOR
Use cbor metadata in gas cost tests.
2020-07-28 23:59:14 +02:00
chriseth
b8b78a6982 Use cbor metadata in gas cost tests. 2020-07-28 23:42:22 +02:00
chriseth
aea75d0f5b
Merge pull request #9513 from ethereum/smt_fix_fixed_bytes_access
[SMTChecker] Fix ICE on fixed bytes access
2020-07-28 23:24:04 +02:00
chriseth
73506e2858
Merge pull request #9530 from a3d4/improve-error-coverage-referenceresolver
Complete error coverage of ReferenceResolver
2020-07-28 21:12:54 +02:00
a3d4
ffdb0e37ff Complete error coverage of ReferenceResolver 2020-07-28 18:56:57 +02:00
Leonardo Alt
ad1798b000 [SMTChecker] Fix ICE on fixed bytes access 2020-07-28 17:59:42 +02:00
a3d4
5394435bea Use assert to check zero size base type 2020-07-28 17:39:52 +02:00
chriseth
53d497fc31
Merge pull request #9412 from ethereum/unicode-string
[BREAKING] Support unicode string literal type
2020-07-28 11:42:23 +02:00
chriseth
ee9a03ffe1
Merge pull request #9501 from ethereum/calldataToMemoryCopy
[Sol->Yul] Implementing bytes copying from calldata to memory.
2020-07-27 19:23:30 +02:00
chriseth
81cdc39f51
Merge pull request #9514 from ethereum/fixInterCon
Fix internal error for invalid data location in constructor.
2020-07-27 19:21:55 +02:00
Alex Beregszaszi
6eb60bc8cd Add check that regular and unicode string literals are well formatted 2020-07-27 18:21:17 +01:00
Alex Beregszaszi
6fe8e63eee Remove inconsistently used isValidUTF8 helper 2020-07-27 18:21:17 +01:00
chriseth
9605b85c21
Merge pull request #9352 from ethereum/smt_cex
[SMTChecker] CHC counterexamples
2020-07-27 19:21:04 +02:00
Leonardo Alt
b207222af7 Fix extra parens 2020-07-27 17:14:59 +02:00
Djordje Mijovic
96258c7e75 [Sol->Yul] Implementing bytes copying from calldata to memory. 2020-07-27 15:14:26 +02:00
chriseth
f24097c38d Fix internal error for invalid data location in constructor. 2020-07-27 15:00:17 +02:00
Leonardo Alt
de4ae301c4 [SMTChecker] Fix ICE when tuples have extra effectless parens 2020-07-27 13:03:27 +02:00
chriseth
5812cd8213
Merge pull request #9511 from ethereum/ast-hex-string
[BREAKING] Distinguish between stringLiteral and hexStringLiteral in the JSON AST
2020-07-27 12:34:40 +02:00
Alex Beregszaszi
5ecc84e92e Distinguish between stringLiteral and hexStringLiteral in the JSON AST 2020-07-27 10:19:24 +01:00
chriseth
2c574af45b Fix conversion bug for exp operation. 2020-07-27 10:44:42 +02:00
chriseth
42063f2158
Merge pull request #9490 from ethereum/renameSlotToSelector
Rename external function slot to selector.
2020-07-27 10:42:47 +02:00
chriseth
7ad27188a0
Merge pull request #9496 from ethereum/removeSignedCode
Remove handling of signed shift amounts.
2020-07-23 19:10:16 +02:00
Leonardo Alt
d5f00842d9 cex2dot debug 2020-07-23 18:49:03 +02:00
Leonardo Alt
5bb4e73693 Review 1 2020-07-23 18:49:03 +02:00
Leonardo Alt
51721c3080 Double SAT run for cex 2020-07-23 18:49:03 +02:00
Leonardo Alt
694ec92688 Generate counterexample message based on cex graph 2020-07-23 18:49:03 +02:00
Leonardo Alt
744905525f Convert z3 cex graph into STL 2020-07-23 18:49:03 +02:00
Leonardo Alt
a7a069c74a Refactor constructor exit 2020-07-23 18:49:03 +02:00
chriseth
1b810d4a0a Remove handling of signed shift amounts. 2020-07-23 16:45:16 +02:00
a3d4
5b54cfbed3 Report an error if immutables not assigned 2020-07-23 16:38:54 +02:00
chriseth
336fe94422
Merge pull request #9426 from ethereum/smt_fix_1_tuple
[SMTChecker] Fix ICE in 1-tuple chain
2020-07-23 15:38:17 +02:00
Djordje Mijovic
e7d5a7da10 [TypeChecker] Remove function input and return parameter names from mobileType 2020-07-23 14:39:49 +02:00
chriseth
147a80aa24 Rename external function slot to selector. 2020-07-23 14:19:15 +02:00
Leonardo Alt
9d2a0947e9 Fix 1-tuple chain 2020-07-23 13:46:41 +02:00
chriseth
6bb6783d39 Merge remote-tracking branch 'origin/develop' into breaking 2020-07-22 15:26:44 +02:00
Djordje Mijovic
546e9af24d [Sol->Yul] Supporting .runtimeCode 2020-07-21 17:56:37 +02:00
chriseth
8b7567f963 Fix merge conflicts. 2020-07-21 15:06:57 +02:00
chriseth
e19e4d9db1
Merge pull request #9451 from ethereum/smt_fix_push_push
[SMTChecker] Fix push().push()
2020-07-21 11:40:37 +02:00
chriseth
9be5ed1220 Merge remote-tracking branch 'origin/develop' into breaking 2020-07-21 11:35:28 +02:00
a3d4
ecdfef1b30 Replace grave accent with acute accent 2020-07-21 00:18:47 +02:00
chriseth
10f93fbd8a
Merge pull request #9428 from ethereum/removeVar
Remove special treatment of ``var``.
2020-07-20 18:43:44 +02:00
Mathias Baumann
ba0a4de50d NatSpec: Implement `@inheritdoc` 2020-07-20 18:32:18 +02:00
chriseth
a8c14c2e68
Merge pull request #9416 from ethereum/disallowOverridePure
Disallow public state variables overriding pure functions.
2020-07-20 18:19:40 +02:00
chriseth
93c792c696 Remove special treatment of `var`. 2020-07-20 17:22:04 +02:00
Leonardo Alt
2c93278719 Fix push().push() 2020-07-20 17:17:35 +02:00
chriseth
50a54fa8aa Implement inline arrays. 2020-07-20 17:06:32 +02:00
chriseth
50dc17350c Remove leftover of code-generator for `now`. 2020-07-20 15:37:53 +02:00
chriseth
c8772a54c3 Constants are considered pure. 2020-07-20 15:18:23 +02:00
chriseth
d3647b13e4 Disallow public state variables overriding pure functions. 2020-07-20 15:18:23 +02:00
Mathias L. Baumann
69a596b0ff
Merge pull request #9418 from ethereum/stateMutForOverride
Issue state mutability restriction for overriding and not for virtual functions.
2020-07-20 15:01:25 +02:00
Sachin Grover
b7adb2aa42 Add SPDX license identifier if not present already in source file
Fixes: #9220
2020-07-17 20:24:12 +05:30
Leonardo Alt
2e1067a05a Set type properly for event parameters 2020-07-17 11:17:27 +02:00
chriseth
ba21d26f88
Merge pull request #9344 from ethereum/issue-3412
Allow overrides to have a more strict mutability than super
2020-07-16 18:50:51 +02:00
Mathias Baumann
dfffecfe2c Allow overrides to have a more strict mutability than super 2020-07-16 17:55:12 +02:00
Leonardo Alt
672633af0a [SMTChecker] Fix ICE on compound assignment to array index 2020-07-16 17:44:10 +02:00
chriseth
aa3f51ab47 Issue state mutability restriction for overriding and not for virtual functions. 2020-07-16 17:19:35 +02:00
chriseth
f945163909
Merge pull request #9432 from ethereum/develop
Merge develop into breaking.
2020-07-16 17:14:45 +02:00
Mathias Baumann
d3af598c49 CodeGen: Avoid double cleanup when copying to memory 2020-07-16 13:53:48 +02:00
Leonardo Alt
46653b2d43 Fix ICE when bitwise operator on fixed bytes 2020-07-15 19:32:15 +02:00
Alex Beregszaszi
eab12ecf77 Nicer error message for private payable functions 2020-07-14 14:38:12 +01:00
chriseth
349114684d Fix windows build. 2020-07-14 14:19:37 +02:00
chriseth
f93932c259
Merge pull request #9406 from ethereum/fixSegfault
Fix segfault in oversized objects check in combination with var.
2020-07-14 13:30:33 +02:00
Daniel Kirchner
9c62ea182d Fix segfault in oversized objects check in combination with var. 2020-07-14 11:23:39 +02:00
chriseth
f28bede34a Refactor storageSizeUpperBound. 2020-07-14 10:45:02 +02:00
Harikrishnan Mulackal
f73b25bb78 Removed specialized errors related to constant state mutability 2020-07-14 12:42:47 +05:30
Daniel Kirchner
c3e13b6733 Promote gwei to a proper keyword. 2020-07-13 18:07:11 +02:00
Daniel Kirchner
38c6ecbbe2 Remove finney and szabo denominations. 2020-07-13 18:07:10 +02:00
chriseth
cf189a3285
Merge pull request #9285 from ethereum/no_dot_in_asm
[BREAKING] Change _slot and _offset to use dot in inline assembly
2020-07-13 17:46:39 +02:00
chriseth
12f390a60a
Merge pull request #9326 from ethereum/eventOverwriting
[BREAKING] Disallow multiple events with same name and types.
2020-07-13 15:44:35 +02:00
chriseth
fc2e9ec2ff Use .slot and .offest to access storage items. 2020-07-13 14:59:22 +02:00
chriseth
8eee3ed3a2
Merge pull request #9388 from ethereum/develop
Merge develop into breaking.
2020-07-13 14:55:21 +02:00
chriseth
b3566ad0d5
Merge pull request #9082 from ethereum/conversionWarnings
Adding `-Wsign-conversion` flag and fixing errors
2020-07-13 11:28:09 +02:00
chriseth
ab2f64f442 Disallow multiple events with same name and types. 2020-07-13 11:24:37 +02:00
Leonardo
8d4ec27544
Merge pull request #9376 from ethereum/smt_refactor_targets
[SMTChecker] Refactor verification targets
2020-07-10 17:30:48 +02:00
a3d4
efc5ee207d Fix internal compiler error caused by oversized objects 2020-07-10 11:39:07 +02:00
Leonardo Alt
88030c6568 [SMTChecker] Refactor verification targets 2020-07-10 10:28:49 +02:00
Alex Beregszaszi
a0300835eb Change CHC to avoid sign mismatch 2020-07-09 17:22:52 +02:00
Djordje Mijovic
547590b972 Fixing additional signedness errors after adding -Wsign-conversion flag
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2020-07-09 17:22:45 +02:00
Mathias Baumann
6b37f1c025 Remove visiblity of libraries in inherited contracts. 2020-07-09 16:38:29 +02:00
chriseth
9ef050af9a
Merge pull request #9373 from ethereum/develop
Merge develop into breaking.
2020-07-09 16:15:43 +02:00
chriseth
8eb459c825 Disallow dot in inline assembly identifiers. 2020-07-08 19:29:58 +02:00
chriseth
d4ecd33247 Propagate function call argument types across function call options. 2020-07-08 17:59:02 +01:00
chriseth
0c7e4cf16b
Merge pull request #9340 from ethereum/compileTimeSha
Evaluate keccak256 of string literals at compile-time.
2020-07-08 18:42:38 +02:00
chriseth
0a0f578d7c Evaluate keccak256 of string literals at compile-time. 2020-07-08 16:14:14 +02:00
chriseth
89231bea1e
Merge pull request #9324 from ethereum/noDuplicateInternalRoutine
Remove duplicate creation of internal routine.
2020-07-08 10:30:37 +02:00
chriseth
64b6524bdb Merge remote-tracking branch 'origin/develop' into breaking 2020-07-08 09:37:14 +02:00
chriseth
d67862362a
Merge pull request #9338 from ethereum/interface-events
Natspec: change events() to interfaceEvents()
2020-07-07 14:25:41 +02:00
Harikrishnan Mulackal
849bae2aa7 Natspec: change events() to interfaceEvents() 2020-07-07 17:22:09 +05:30
chriseth
9ff72ceaa9
Merge pull request #9335 from ethereum/fixOverridingWording
Fix wording of non-function override error messages.
2020-07-07 12:21:56 +02:00
chriseth
ec8be81258
Merge pull request #9243 from ethereum/jumpTypesForYul
Jump types for yul functions.
2020-07-07 12:21:14 +02:00
chriseth
5959d442cb Make visibility optional, but it has to be consistent. 2020-07-07 12:16:18 +02:00
chriseth
28de7cbce9 Fix wording of non-function override error messages. 2020-07-07 11:57:38 +02:00
chriseth
747aeb4999 Assert that visibility of constructor is not queried. 2020-07-07 11:49:44 +02:00
chriseth
f6232393ef Force contracts with constructors with internal parameters abstract. 2020-07-07 11:49:44 +02:00
chriseth
da36400576 Disallow visibility for constructors. 2020-07-07 11:49:44 +02:00
chriseth
8e711a8b99 Remove duplicate creation of internal routine. 2020-07-06 19:25:47 +02:00
chriseth
e48d3e5847 Fix wording of error message. 2020-07-06 19:22:52 +02:00
chriseth
982a269b2b
Merge pull request #9325 from ethereum/develop
Merge develop into breaking.
2020-07-06 19:11:02 +02:00
chriseth
a09a791999
Merge pull request #9313 from ethereum/doesnt
[Trivial] Replace "doesn't" with "does not" in error message
2020-07-06 18:21:02 +02:00
chriseth
4d2b9cd38f Jump types for yul functions. 2020-07-06 18:12:54 +02:00
chriseth
f372ba6fea Constructors cannot have calldata parameters. 2020-07-06 16:52:51 +02:00
chriseth
ab68406006 Merge remote-tracking branch 'origin/develop' into breaking 2020-07-06 15:25:25 +02:00
a3d4
5e4aeaa460 Add variable name to the "Variable covers a large part of storage ...." message 2020-07-06 13:49:09 +02:00
Mathias Baumann
8cdf14f1b3 Replace "doesn't" with "does not" in error message 2020-07-06 13:44:33 +02:00
a3d4
46bcac58eb
Merge pull request #9187 from a3d4/fix-storagesizeestimate
Fixed recursive check in structureSizeEstimate
2020-07-03 17:35:11 +02:00
a3d4
1c7a0dcbea Add warnings for oversized subtypes 2020-07-03 15:18:02 +02:00
Leonardo
8985a93b39
Merge pull request #9041 from ethereum/smt_summary_inputs
[SMTChecker] Add current input variables to the function summary
2020-07-02 19:34:41 +02:00
chriseth
3d96e2b11a
Merge pull request #9257 from ethereum/yul-in-memory-struct-creation
Yul: Implement memory struct allocation
2020-07-02 17:03:46 +02:00
Mathias Baumann
50373ac1b0 Yul: Implement memory struct allocation 2020-07-02 16:37:20 +02:00
Leonardo Alt
f97fa9b520 [SMTChecker] Add current input variables to the function summary 2020-07-02 15:30:29 +02:00
a3d4
c2e1273ff4 Fixed recursive check in structureSizeEstimate 2020-07-02 04:14:58 +02:00
Leonardo Alt
5517e817d5 Do not trust code of external functions 2020-07-01 18:20:46 +02:00
Leonardo Alt
56e7d43384 Rename var 2020-07-01 18:20:34 +02:00
Leonardo Alt
5160f89c1b [SMTChecker] Support to external calls to unknown code 2020-07-01 18:20:33 +02:00
chriseth
1ec1166a27
Merge pull request #9277 from a3d4/improve-docstringparser-error-coverage
Add a missing DocStringParser error to tests
2020-07-01 18:17:09 +02:00
Bhargava Shastry
1a0391bceb Fuzzer: Add a specialized StackTooDeepError Exception that is caught in the fuzzing harness 2020-07-01 11:08:20 +02:00
a3d4
acd42a08c1 Add a missing DocStringParser error to tests. 2020-07-01 04:42:37 +02:00
chriseth
d7899a31af Fix merge conflict resolution. 2020-06-30 18:59:54 +02:00
chriseth
3e3f9a472f Merge remote-tracking branch 'origin/develop' into breaking 2020-06-30 18:56:51 +02:00
chriseth
76943023bd
Merge pull request #9267 from ethereum/issue-8911-split
NatSpec: Implement default inheritance.
2020-06-30 15:16:14 +02:00
Mathias Baumann
c50f0ae00e NatSpec: Implement default inheritance. 2020-06-30 14:45:13 +02:00
Harikrishnan Mulackal
d41eaeba56 Added containsNestedMapping() 2020-06-30 16:15:03 +05:30
chriseth
49e3217933
Merge pull request #9230 from ethereum/issue-8716
Add unit denomination ``gwei``
2020-06-30 12:36:10 +02:00
Mathias Baumann
fe33891531 Natspec: Add warning when using @author with functions 2020-06-29 18:10:36 +02:00
Harikrishnan Mulackal
4146ff9fcf NatSpec for events 2020-06-26 15:06:43 +05:30
Mathias Baumann
02328f3bbb Add unit denomination `gwei` 2020-06-24 18:24:56 +02:00
chriseth
af0cd4ab98
Merge pull request #9252 from ethereum/develop
Merge develop into breaking.
2020-06-23 18:28:24 +02:00
chriseth
1441b97131 Merge remote-tracking branch 'origin/develop' into breaking 2020-06-22 18:40:20 +02:00
chriseth
98e5923e3a Do now disallow assigning to external parameters. 2020-06-22 18:36:32 +02:00
chriseth
cd2cc76f20 Modules are pure. 2020-06-18 18:28:04 +02:00
chriseth
76468f19fe Check if using for refers to a library earlier. 2020-06-17 17:45:40 +02:00
chriseth
71cb7551f4
Merge pull request #9208 from ethereum/develop
Merge develop into breaking.
2020-06-16 16:11:41 +02:00
chriseth
8086ddd3bd
Merge pull request #9189 from ethereum/simplifyResolver
Simplify inline assembly resolver.
2020-06-16 15:31:21 +02:00
chriseth
3a8c996807
Merge pull request #9193 from ethereum/experimentalFeatureBysource
Directly determine if experimental feature active.
2020-06-16 14:27:27 +02:00
chriseth
8e23899886
Merge pull request #9188 from ethereum/refactorNameAndType
Refactor name and type resolution in preparation for free functions.
2020-06-16 14:26:52 +02:00
chriseth
645c3508a8 Prepare for allowing bound functions and using for everywhere. 2020-06-15 21:20:18 +02:00
chriseth
5fdbb5c3e3 Simplify inline assembly resolver. 2020-06-15 18:10:18 +02:00
chriseth
8155ad2187 Merge remote-tracking branch 'origin/develop' into breaking 2020-06-15 17:11:41 +02:00
Mathias Baumann
d54e7f50ed Natspec: Output "type" and "version" in documenation 2020-06-15 14:53:34 +02:00
chriseth
b4c6fdb1ed
Merge pull request #8749 from aarlt/structured-docs-variables-aarlt-breaking
[BREAKING] Allow NatSpec comments for state variables.
2020-06-15 14:47:29 +02:00
Leonardo Alt
3c4e286390 [SMTChecker] Replace wrap mod by slack vars 2020-06-12 14:57:21 +02:00
chriseth
194c2b8c9c Directly determine if experimental feature active. 2020-06-12 12:18:48 +02:00
chriseth
07c1167136 Refactor name and type resolution. 2020-06-12 12:18:02 +02:00
chriseth
012ba9537b
Merge pull request #9184 from ethereum/fixUsingForStorage
Fix using for with explicit reference types.
2020-06-11 14:00:28 +02:00
chriseth
5c71b3fbb0
Merge pull request #9173 from ethereum/fixBoundCalldata
Fix bound functions with calldata parameters.
2020-06-11 13:31:30 +02:00
chriseth
549c90612c Fix using for with explicit reference types. 2020-06-11 13:04:41 +02:00
Daniel Kirchner
73cd009b89 Fix struct allocation in Sol->Yul. 2020-06-11 12:16:45 +02:00
chriseth
d4e3491f35
Merge pull request #9177 from ethereum/fixYulStructMemberAccess
[Sol -> Yul] Fix struct member access for memory and implement for calldata.
2020-06-11 09:41:04 +02:00
Leonardo
d7f29a33b9
Merge pull request #9096 from ethereum/conversionWarningsLibSol
Adding fixes for signedness warnings in libsolidity
2020-06-11 01:06:32 +02:00
Daniel Kirchner
90b66a7362 Fix struct member access for memory and implement for calldata. 2020-06-10 20:01:30 +02:00
chriseth
a1165c135d Fix error codes. 2020-06-10 18:27:37 +02:00
chriseth
7908e6c373 Fix compiler error. 2020-06-10 18:23:19 +02:00
chriseth
baabe65a84 Fix bound functions with calldata parameters. 2020-06-10 17:37:59 +02:00
chriseth
2410f0ed5a
Merge pull request #9135 from ethereum/fixReturnParameterLocation
Fixing ICE on calling externally a function that returns calldata pointers
2020-06-10 16:44:38 +02:00
chriseth
81c48e67d1
Merge pull request #9073 from a3d4/partfix-5819-add-error-ids-to-json
Add error IDs to JSON and console output
2020-06-10 15:56:26 +02:00
Djordje Mijovic
e73fe17277 Fixing ICE on calling externally a function that returns calldata pointers
Co-authored-by: chriseth <chris@ethereum.org>
2020-06-10 14:41:45 +02:00
a3d4
b17915a6ba Add error IDs to JSON 2020-06-10 13:26:51 +02:00
chriseth
6b3171c38b Merge remote-tracking branch 'origin/develop' into breaking 2020-06-10 11:30:50 +02:00
Djordje Mijovic
c6e4943089 Adding fixes for signedness warnings in libsolidity
Co-authored-by: Kamil Śliwak <kamil.sliwak@codepoets.it>
2020-06-10 10:41:55 +02:00
chriseth
062159214c Rename scope to currentContract. 2020-06-09 18:19:09 +02:00
chriseth
e5c19d8a2c Replace inContractKind by libraryFunction. 2020-06-09 17:56:58 +02:00
chriseth
2724ce9511 Index access to fixed bytes and byte arrays. 2020-06-09 10:50:28 +02:00
Leonardo Alt
f49e2424b2 [SMTChecker] Erase knowledge when array variable is pushed 2020-06-08 10:23:06 +02:00
Leonardo
d243f5baac
Merge pull request #9045 from ethereum/smt_fix_tuple
[SMTChecker] Fix internal error in tuples of tuples.
2020-06-05 14:21:32 +02:00
Leonardo
731e6466a0
Merge pull request #9067 from ethereum/smt_fix_fp_again
[SMTChecker] Fix BMC targets with FP
2020-06-05 12:39:28 +02:00
Leonardo Alt
87ceb72b82 [SMTChecker] Fix internal error in tuples of tuples. 2020-06-05 12:20:47 +02:00
chriseth
259292c884
Merge pull request #9118 from ethereum/develop
Merge develop into breaking.
2020-06-04 10:18:46 +02:00
chriseth
6b5f83cdfa
Merge pull request #9058 from ethereum/memberAccessSolYul
[Sol->Yul] Member access for structs.
2020-06-03 21:19:49 +02:00
chriseth
f38e3a3574
Merge pull request #9056 from ethereum/solYulGetters
[Sol->Yul] Implement getters.
2020-06-03 19:08:15 +02:00
chriseth
d12db7ec52
Merge pull request #8994 from ethereum/fixInvertedBinaryOp
Fix type inversion for shift and exp operators.
2020-06-03 14:11:16 +02:00
Mathias Baumann
6f8b5fe53b Disallow override with non-public state variables 2020-06-03 14:03:26 +02:00
chriseth
c8b9d24eba
Merge pull request #9106 from ethereum/develop
Merge develop into breaking.
2020-06-03 13:51:28 +02:00
chriseth
a6c773bd96 Fix type inversion for shift and exp operators. 2020-06-03 13:46:26 +02:00
chriseth
e7f3c042b6 Struct member access for storage and memory. 2020-06-03 10:37:39 +02:00
chriseth
37e8d78cff [Sol->Yul] Implement getters. 2020-06-03 10:33:37 +02:00
Leonardo
96ce4abe0e
Merge pull request #9069 from ethereum/smt_try
[SMTChecker] Fix internal error on try/catch
2020-06-02 21:09:49 +02:00
chriseth
c07254f5ac
Merge pull request #9055 from ethereum/issue-8881
Output error when forward referencing constants in inline assembly
2020-06-02 17:10:56 +02:00
chriseth
0e11d468cc
Merge pull request #9064 from ethereum/FixedPointType-solAssert
Added an assert for FixedPointType in InlineAssembly
2020-06-02 16:57:46 +02:00
Leonardo Alt
10162016ae [SMTChecker] Fix internal error on try/catch 2020-06-02 16:51:53 +02:00
Leonardo
97cb091ada
Merge pull request #9068 from ethereum/smt_fix_state_var_init_call
[SMTChecker] Relax assertion about callstack
2020-06-02 15:53:14 +02:00
Mathias Baumann
bdc2c63327 Output error when forward referencing constants in inline assembly 2020-06-02 14:37:54 +02:00
Leonardo Alt
ede39fc2da [SMTChecker] Relax assertion about callstack 2020-06-02 12:50:51 +02:00
Harikrishnan Mulackal
0bc9f772e7 Added an assert for FixedPointType in InlineAssembly 2020-06-02 13:31:10 +05:30
Leonardo Alt
2128ff9f13 Fix ICE on push for member access 2020-05-29 19:13:27 +02:00
Leonardo Alt
e5d25692a5 [SMTChecker] Fix BMC targets with FP 2020-05-29 18:13:13 +02:00
chriseth
0b216f5771
Merge pull request #9050 from ethereum/smt_fix_nonvalue_asgn
[SMTChecker] Fix ICE on index access assignment inside single branches
2020-05-28 16:25:46 +02:00
chriseth
65d8b6cf75
Merge pull request #9033 from a3d4/partfix-5819-add-errorid-to-error-class
Add unique ID to Error class
2020-05-28 16:24:47 +02:00
Leonardo Alt
b90fb1cab6 [SMTChecker] Fix ICE on index access assignment inside single branches 2020-05-28 15:56:46 +02:00
a3d4
c959341720 Add errorId to Error class 2020-05-28 15:00:33 +02:00
Leonardo Alt
a73ec6a82f [SMTChecker] Fix ICE in inlining function calls while short circuiting 2020-05-28 13:14:19 +02:00
Leonardo
097954bc80
Merge pull request #9049 from ethereum/smt_fix_fp
[SMTChecker] Fix fixed point inc/dec
2020-05-28 13:13:23 +02:00
chriseth
f608e50bad
Merge pull request #9029 from ethereum/fewerInternalSourceRefs
Do not set source locations for small internal assembly routines.
2020-05-28 11:14:20 +02:00
Leonardo Alt
cb1cbbc1f1 [SMTChecker] Fix fixed point inc/dec 2020-05-28 10:56:06 +02:00
chriseth
ee8307ceed
Merge pull request #9044 from ethereum/issue-9028
Fix failure to find overload resolution when overrides are involved
2020-05-28 10:33:01 +02:00
Leonardo Alt
9e9f0c52e1 [SMTChecker] Support to bitwise 2020-05-27 20:59:00 +02:00
Mathias Baumann
a846c18e67 Fix failure to find overload resolution when overrides are involved 2020-05-27 18:31:56 +02:00
chriseth
eb923af09c Do not set source locations for small internal assembly routines. 2020-05-27 18:26:46 +02:00
chriseth
894478ff8c
Merge pull request #9038 from ethereum/develop
Merge develop into breaking.
2020-05-27 15:24:27 +02:00
chriseth
afa873fe9f
Merge pull request #8913 from ethereum/yul-remove-pc-instr
Mark EVM instruction `pc()` as deprecated when used in inline assembly.
2020-05-27 12:10:32 +02:00
Christian Parpart
b7fa5d5040 Mark EVM instruction pc() as deprecated when used in inline assembly. 2020-05-27 12:07:23 +02:00
chriseth
1bf706085d Merge pull request #9030 from ethereum/issue-8923
Fix ICE when trying to decode too large static arrays
2020-05-27 11:45:39 +02:00
chriseth
0aa3fb5026
Merge pull request #9014 from ethereum/sol-yul-abidecode
[Sol - Yul] Add support for ABIDecode.
2020-05-27 11:44:13 +02:00
chriseth
f066050ec0 Merge pull request #9024 from ethereum/namableTypes
Disallow non-namable types for inline arrays.
2020-05-27 09:21:07 +02:00
Kamil Śliwak
f574d8ec3a Don't assume that an expression cannot be associated with a function declaration 2020-05-27 00:05:18 +02:00
Alexander Arlt
118cb13476 [Sol - Yul] Add support for ABIDecode. 2020-05-26 13:30:37 -05:00
Mathias Baumann
884e7cbffc Fix ICE when trying to decode too large static arrays 2020-05-26 19:36:18 +02:00
Alexander Arlt
cb5bfc7436 Update natspec comments on state variables.
- changing some warnings to errors
2020-05-26 11:18:24 -05:00
chriseth
309f0fbc8a Unimplemented assert for conversion from calldata slices to memory. 2020-05-26 18:17:36 +02:00
chriseth
d0b6de580f Disallow non-namable types for inline arrays. 2020-05-26 18:17:35 +02:00
chriseth
e4b31e7230 Introduce named concept for types. 2020-05-26 18:17:25 +02:00
chriseth
50b200a5d5
Merge pull request #8797 from ethereum/sol-yul-populating-internal-dispatch-on-demand
[Sol->Yul] Populating internal dispatch on demand
2020-05-26 18:17:05 +02:00
chriseth
d989dfd43f
Merge pull request #9027 from ethereum/issue-8265
Fix ICE by avoiding copyForLocation() on ArraySliceType
2020-05-26 17:49:11 +02:00
Mathias Baumann
b3cafe4583 Fix ICE by avoiding copyForLocation() on ArraySliceType 2020-05-26 17:27:46 +02:00
Kamil Śliwak
1a2e441bc5 Generate internal dispatch only for functions that might actually get called via pointers
- This also adds support for internal library calls as a side-effect since they'll now be pulled into the internal dispatch automatically.
2020-05-26 17:01:50 +02:00
chriseth
b7aa6cb1f7
Merge pull request #9026 from ethereum/sol-yul-refactor-new-conditional-whiskers-syntax-in-internal-dispatch
[Sol->Yul] New whiskers conditionals in internal dispatch template (refactor)
2020-05-26 17:00:43 +02:00
Kamil Śliwak
2716b5ff83 Replace conditionally empty whiskers variables for punctuation with <?+> syntax in IRGenerator::generateInternalDispatchFunctions() 2020-05-26 16:33:40 +02:00
Harikrishnan Mulackal
21e34d7ca9 Fixed seed for randomness, fixed conflicts in errorids 2020-05-26 18:21:47 +05:30
chriseth
5fedb4eab0
Merge pull request #9001 from a3d4/partfix-5819-refactor-typechecker
Refactor TypeChecker to assign different IDs to different errors
2020-05-26 11:59:54 +02:00
chriseth
9604174151 Rename asCallableFunction. 2020-05-26 11:35:12 +02:00
chriseth
e6b399c86e
Merge pull request #8942 from ethereum/calldataVariables
Calldata variables.
2020-05-26 11:34:40 +02:00
chriseth
33450619b1 Checks for uninitialized access to calldata variables. 2020-05-26 10:51:13 +02:00
chriseth
499cb0526f Calldata variables. 2020-05-26 10:51:13 +02:00
chriseth
76d27bcfaa Fix assumption for member not in memory. 2020-05-26 10:35:04 +02:00
Djordje Mijovic
4c3e78d046 Disallowing shifts by signed types 2020-05-26 10:18:21 +02:00
chriseth
69a028b49c Merge remote-tracking branch 'origin/develop' into breaking 2020-05-26 10:11:23 +02:00
chriseth
6d64095ccf
Merge pull request #8987 from ethereum/sol-yul-bound-functions
[Sol->Yul] Bound functions
2020-05-25 16:53:33 +02:00
chriseth
44e62c1fae
Merge pull request #8997 from ethereum/sol-yul-refactor-no-internal-functions-with-arbitrary-parameters
[Sol->Yul] Remove unnecessary code for handling internal functions with arbitrary parameters (refactor)
2020-05-25 16:47:10 +02:00
chriseth
042dc965fa
Merge pull request #8952 from ethereum/sol-yul-refactor-simplify-end-visit-for-internal-calls
[Sol->Yul] Simplify end visit for internal calls (refactor)
2020-05-25 16:46:36 +02:00
chriseth
8e31c345a8
Merge pull request #8978 from ethereum/disturbance_stack
Add proper unipmlemented errors for array copying
2020-05-25 15:34:45 +02:00
a3d4
936ea6f950 Refactor TypeChecker to assign different IDs to different errors 2020-05-25 13:40:14 +02:00
chriseth
91aff43404
Merge pull request #8998 from a3d4/partfix-5819-add-error-tags-to-declarationtypechecker
Add error IDs to DeclarationTypeChecker
2020-05-25 11:36:06 +02:00
Mathias Baumann
d45bb2aa07 Add proper unipmlemented errors for array copying 2020-05-25 10:48:42 +02:00
a3d4
a499ef16fa Fix spelling errors 2020-05-25 02:54:37 +02:00
a3d4
5870253b00 Shorten a couple of lines 2020-05-21 17:38:47 +02:00
a3d4
38e65a909a Remove DocStringAnalyzer and DocStringParser class-specific error reporting functions 2020-05-21 00:26:14 +02:00
a3d4
66a8c7d1ab Remove ReferencesResolver class-specific error reporting functions 2020-05-21 00:04:26 +02:00
a3d4
3a75b1da4d Remove DeclarationTypeChecker class-specific error reporting functions 2020-05-20 23:56:25 +02:00
Kamil Śliwak
4a2ce57bed Add support for bound function calls in IR generator 2020-05-20 21:10:20 +02:00
Kamil Śliwak
a68b4ab7ed IRGeneratorForStatements: Slightly reorganize local variables in endVisit(MemberAccess)
- Add memberFunctionType accessible in the whole function to avoid declaring it multiple times
- Add objectCategory
2020-05-20 21:09:27 +02:00
Kamil Śliwak
87c598863f IRGeneratorForStatements: Remove unnecessary code for handling internal functions with arbitrary parameters
- Internal functions cannot have arbitrary parameters
2020-05-20 21:08:59 +02:00
Kamil Śliwak
0943333276 Simplify endVisit() for internal calls
- Define IRHelpers::referencedFunctionDeclaration() to avoid repeating the same dynamic_casts over and over again.
2020-05-20 21:07:37 +02:00
chriseth
74b9b094c0 Merge remote-tracking branch 'origin/develop' into HEAD 2020-05-20 17:22:47 +02:00
chriseth
29405c223b
Merge pull request #8951 from ethereum/sol-yul-refactor-split-internal-dispatch
[Sol->Yul] Split internal dispatch into separate enumeration and code generation (refactor)
2020-05-20 16:28:24 +02:00
Leonardo
56b5f1bb12
Merge pull request #8976 from ethereum/libsmtutil
libsmtutil
2020-05-20 16:14:37 +02:00
hrkrshnn
4a001d568e Removed null members from JSON output 2020-05-20 16:56:33 +05:30
chriseth
678a801daf
Merge pull request #8921 from a3d4/partfix-5819-remove-erroroccurred-flag-continued
Remove a dedicated error flag from DeclarationTypeChecker and other classes, continued
2020-05-20 13:23:37 +02:00
chriseth
84092edc5d
Merge pull request #8914 from random-internet-cat/down-with-unique-ptr
Down with unique_ptr!
2020-05-20 13:22:06 +02:00
Leonardo Alt
0eb067ae4f Add SMTLogicError exception catches 2020-05-20 13:18:33 +02:00