Commit Graph

4352 Commits

Author SHA1 Message Date
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
Kamil Śliwak
6c6a8a74e8 IRGenerationContext: Extract code for enumerating dispatchable functions from generateInternalDispatch() into a separate function 2020-05-20 13:16:08 +02:00
Leonardo Alt
7a91c9b971 Remove Type from SolverInterface 2020-05-20 12:55:19 +02:00
Leonardo Alt
45eba27424 Rename namespace 2020-05-20 12:55:18 +02:00
Leonardo Alt
087605ea02 Create libsmtutil 2020-05-20 12:55:18 +02:00
Kamil Śliwak
bd75543900 Add IRNames::internalDispatch() and use it in IRGenerationContext 2020-05-20 12:48:49 +02:00
Kamil Śliwak
22c0568d34 IRGenerationContext::internalDispatch(): Remove unused local YulUtilFunctions instance 2020-05-20 12:46:32 +02:00
Kamil Śliwak
7d2292fbaf Rename IRGenerationContext::internalDispatch() to generateInternalDispatchFunction() 2020-05-20 12:46:31 +02:00
a3d4
6bb177ce77 Remove dedicated error flags from DocStringParser and DocStringAnalyser 2020-05-20 04:17:49 +02:00
a3d4
6dbf23d52a Remove a dedicated error flag from ReferencesResolver 2020-05-20 04:08:32 +02:00
Kamil Śliwak
1a521cc7ac Use YulArity in IR generator 2020-05-19 23:03:21 +02:00
Kamil Śliwak
16e58449ab ir/Common: Add YulArity struct 2020-05-19 23:03:15 +02:00
chriseth
22d5caa979
Merge pull request #8532 from aarlt/structured-docs-variables-aarlt
Allow NatSpec comments for state variables
2020-05-19 19:26:35 +02:00
chriseth
d422a406ba
Merge pull request #8983 from ethereum/develop
Merge develop into breaking.
2020-05-19 18:05:28 +02:00
Alexander Arlt
af8bb5fb60 Allow natspec comments on state variables. 2020-05-19 11:01:52 -05:00
Erik Kundt
7d37ed4531 Adds structured docs for variable declarations.
- adds natspec generation for state variables.
- exports structured docs for state variables to JSON.
2020-05-19 11:01:52 -05:00
Kamil Śliwak
b0ae85b6b0 IRGenerationContext::internalDispatch(): Don't use asCallableFunction() to get internal function type 2020-05-19 18:00:50 +02:00
Djordje Mijovic
bd64b971b9 Fixing tests on breaking branch. 2020-05-19 17:42:19 +02:00
chriseth
f70ff0dfaa
Merge pull request #8977 from ethereum/mapping-type-error
Error when Mapping type in (non-local) storage is assigned to
2020-05-19 16:52:54 +02:00
Harikrishnan Mulackal
774edd4670 Error when Mapping type in (non-local) storage is assigned to 2020-05-19 19:12:38 +05:30
chriseth
3b27b4347c
Merge pull request #8916 from ethereum/smt_array_push_pop
[SMTChecker] Support array push/pop
2020-05-19 15:41:10 +02:00
chriseth
3275243c89
Merge pull request #8898 from mijovic/sol2YulByteArrayPush
[Sol->Yul] Implementing ByteArray push() and pop()
2020-05-19 15:28:01 +02:00
Djordje Mijovic
d235d0c166 [Sol->Yul] Implementing Byte array push() and pop() 2020-05-19 14:47:00 +02:00
Leonardo Alt
2435ab938c Add verification target for empty pop 2020-05-18 16:35:56 +02:00
Leonardo Alt
d4d26c02e4 Assume that push will not overflow 2020-05-18 16:35:56 +02:00
Leonardo Alt
82db35e563 [SMTChecker] Support array push/pop 2020-05-18 16:33:34 +02:00
Jason Cobb
20c8851f43
Use optional for CompilerStack::Contract source mappings 2020-05-18 10:24:38 -04:00
chriseth
f92a4f1965 Provide runtime object in Yul mode. 2020-05-18 13:48:23 +02:00
Kamil Śliwak
465e4d4088 Extract more functions for generating function and variable names into IRNames 2020-05-15 14:51:00 +02:00
Leonardo Alt
a0c605aa85 [SMTChecker] Support array length 2020-05-14 23:32:29 +02:00
Kamil Śliwak
7af7273b60 Move static functions for constructing names from IRGenerationContext into the new Common module 2020-05-14 19:48:00 +02:00
chriseth
2d1e7d9504
Merge pull request #8931 from random-internet-cat/lazy-init
Add LazyInit
2020-05-14 18:54:19 +02:00
chriseth
7ef114db9a
Merge pull request #8841 from ethereum/sol_yul_ripemd160_ecrecover
[Sol - Yul] Add support for ripemd160 & ecrecover.
2020-05-14 18:43:55 +02:00
Alexander Arlt
91e9d54c71 [Sol - Yul] Add support for ripemd160 & ecrecover. 2020-05-14 10:44:39 -05:00
chriseth
993a7941b1 Merge remote-tracking branch 'origin/develop' into breaking 2020-05-14 17:24:40 +02:00
Jason Cobb
eae31559be
Use LazyInit for CompilerStack::Contract members 2020-05-14 10:39:53 -04:00
Jason Cobb
cffd1eaff1
Use LazyInit for ContractDefinition::m_interfaceFunctionList 2020-05-14 10:32:01 -04:00
Jason Cobb
413fa92cee
Use LazyInit for ContractDefinition::m_interfaceEvents 2020-05-14 10:29:29 -04:00
Jason Cobb
0e26700f65
Use LazyInit for MemberList::m_storageOffsets 2020-05-14 10:29:26 -04:00
chriseth
1b86f27002
Merge pull request #8935 from ethereum/moveScopesIntoResolver
Move scopes into resolver.
2020-05-14 14:20:58 +02:00
chriseth
e751a1c23d Move scopes into resolver. 2020-05-14 13:16:47 +02:00
chriseth
257bc6a416 Merge remote-tracking branch 'origin/develop' into breaking 2020-05-14 13:04:46 +02:00
Djordje Mijovic
472fb21ee0 [Sol->Yul] Enabling new bytes(n) 2020-05-14 12:55:14 +02:00
chriseth
504b8d29c9
Merge pull request #8907 from ethereum/licenseIdentifier
Check for SPDX license identifiers.
2020-05-14 01:21:24 +02:00
Daniel Kirchner
97296d8622 Allow ABI encoding for array slices without explicit casts. 2020-05-13 18:20:07 +02:00
chriseth
3872a1f000 Add support for SPDX license identifiers. 2020-05-13 18:16:59 +02:00
chriseth
e9446475bb
Merge pull request #8924 from ethereum/arraySliceBug
Fix array slice bug.
2020-05-13 16:06:28 +02:00
Daniel Kirchner
6f04664cfa Disallow array slicing for arrays with dyanmically encoded base types. 2020-05-13 15:52:22 +02:00
chriseth
aca700497c
Merge pull request #8903 from ethereum/exponentiation-bug
Fix exponentiation bug
2020-05-13 15:49:23 +02:00
Harikrishnan Mulackal
47e9a13e8a Fix exponentiation bug 2020-05-13 13:53:06 +05:30
chriseth
b2122d479f
Merge pull request #8915 from a3d4/partfix-5819-remove-erroroccurred-flag
Remove a dedicated error flag from DeclarationTypeChecker and other classes
2020-05-12 20:18:33 +02:00
a3d4
02d1f8c41a Remove a dedicated error flag from DeclarationTypeChecker 2020-05-12 18:13:17 +02:00
chriseth
0be56a0abf Merge remote-tracking branch 'origin/develop' into breaking 2020-05-12 17:48:53 +02:00
chriseth
901b421bb8
Merge pull request #8910 from ethereum/natspec-return-bug
Bug that ignored return tag when no other devdoc tags were present
2020-05-12 16:47:07 +02:00
Harikrishnan Mulackal
095e17f7f9 Bug that ignored return tag when no other devdoc tags were present 2020-05-12 20:05:22 +05:30
chriseth
077cab0860
Merge pull request #8902 from a3d4/partfix-5819-add-more-error-ids
Add error IDs to OverrideChecker, BMC and ContractLevelChecker
2020-05-12 13:22:42 +02:00
a3d4
02eee54f38 Add error IDs to ContractLevelChecker 2020-05-12 11:42:29 +02:00
a3d4
7cae074b8a Add error IDs to BMC 2020-05-12 11:39:18 +02:00
a3d4
1d5350e32f Add error IDs to OverrideChecker 2020-05-12 02:26:02 +02:00
Daniel Kirchner
b9c63e0032
Merge pull request #8894 from ethereum/dockerUbuntuFocal
Update Dockerfiles and CI scripts to Ubuntu 20.04 and simplify them.
2020-05-12 00:52:21 +02:00
Daniel Kirchner
c2f5a66a79 Implement .creationCode for Sol->Yul. 2020-05-11 18:51:51 +02:00
Daniel Kirchner
3fbde6e782
Merge pull request #8856 from ethereum/implicitConstructorCallvalueCheck
Implicit constructor callvalue check
2020-05-11 18:50:36 +02:00
Daniel Kirchner
c1ed5bbb0f Update Dockerfiles and CI scripts to Ubuntu 20.04 and simplify them. 2020-05-11 17:35:01 +02:00
chriseth
debee799dc
Merge pull request #8892 from ethereum/boost-cxx11
Replace boost/algorithm/cxx11 with C++11 features
2020-05-11 16:29:42 +02:00
Daniel Kirchner
79b217dfb3 Callvalue checks for implicit constructors. 2020-05-11 16:14:34 +02:00
chriseth
5566cd9f74
Merge pull request #8843 from ethereum/deprecate-now
[BREAKING] Deprecate keyword now
2020-05-11 16:09:21 +02:00
chriseth
f1e0aa7a56
Merge pull request #8763 from ethereum/bareCall
IR code generation for call.
2020-05-11 16:06:54 +02:00
chriseth
e2f7e8a3a7
Merge pull request #8890 from ethereum/fixclangv10
Fix clang v10 compilation errors
2020-05-11 15:39:09 +02:00
Alex Beregszaszi
875415a132 Replace boost/algorithm/cxx11 with C++11 features 2020-05-11 14:27:54 +01:00
chriseth
c0bf529236 Support bare calls. 2020-05-11 15:11:46 +02:00
chriseth
4c13ce24f0
Merge pull request #8887 from ethereum/boost-fs
Remove boost::filesystem where it is not needed
2020-05-11 15:09:54 +02:00
chriseth
0248303c15
Merge pull request #8872 from ethereum/int-min-max
implemented type(X).min and type(X).max for all integer types
2020-05-11 15:08:19 +02:00
Mathias Baumann
fe43132003 Fix clang v10 compilation errors 2020-05-11 14:59:51 +02:00
Alex Beregszaszi
76dfda7c1c Replace boost:variant with std::variant in StandardCompiler 2020-05-11 12:39:53 +01:00
Alex Beregszaszi
ad1d2558eb Drop Boost::system from libsolidity 2020-05-11 11:36:11 +01:00
Alex Beregszaszi
c31a93b3f2 Remove boost::filesystem where it is not needed
A two uses in CommonIO remain for the compiler (plus testing/tools use it extensively)
2020-05-11 11:19:11 +01:00
Harikrishnan Mulackal
e54c4eecfc implemented type(X).min and type(X).max for all integer types 2020-05-11 14:51:13 +05:30
a3d4
0b09a77689 Removed minor parameter redundancy 2020-05-09 01:45:02 +02:00
a3d4
c3e519a151 Add unique IDs to error reporting calls 2020-05-09 01:28:55 +02:00
chriseth
aa7684fb54
Merge pull request #8864 from a3d4/fix-error-reporting-source-code-format
Fix error reporting source code format
2020-05-07 20:15:51 +02:00
chriseth
a0e291bd06 Implement Yul IR generation for abi.encode* 2020-05-07 19:39:15 +02:00
chriseth
d0b82fe854
Merge pull request #8869 from ethereum/useSlotes
Use vector of slots.
2020-05-07 19:03:59 +02:00
chriseth
75ca072ae6 Assertion about getters for non-value type immutables. 2020-05-07 18:18:40 +02:00
chriseth
f38cf85482 Use vector of slots. 2020-05-07 17:54:04 +02:00
Mathias Baumann
eb4926cb48 run addMissingFunctions only once 2020-05-07 17:06:11 +02:00
chriseth
3212cb6caa
Merge pull request #8859 from ethereum/noRuntimeForImmutable
trigger error when runtimeCode is called on contracts with immutables
2020-05-07 16:08:27 +02:00
chriseth
f42dc70c9f
Merge pull request #8863 from ethereum/nonReversedEncoder
Introduce non-reversed version of tupleEncoder.
2020-05-07 15:47:32 +02:00
Mathias Baumann
50e59f1008 trigger error when runtimeCode is called on contracts with immutables 2020-05-07 15:10:04 +02:00
chriseth
e986fde0c1 Introduce non-reversed version of tupleEncoder. 2020-05-07 15:08:09 +02:00
chriseth
80b4e51fd6
Merge pull request #8865 from a3d4/fix-8712-abi-compiler-error
Fix ABI internal compiler error caused by an internal constructor
2020-05-07 10:55:00 +02:00
a3d4
5e9502bfae Fix ABI internal compiler error caused by an internal constructor 2020-05-07 05:49:49 +02:00
a3d4
7e1835af71 Fix error reporting source code format 2020-05-07 04:46:02 +02:00
chriseth
6fb112fa8e Remove some unneeded headers. 2020-05-07 01:49:46 +02:00
chriseth
5e46ef7df5
Merge pull request #8680 from a3d4/fix-5819-tagging-error-cases
Tag error cases with unique IDs
2020-05-07 01:12:56 +02:00
Alex Beregszaszi
327c75bc1b IR generation for shifts 2020-05-06 19:14:23 +02:00
chriseth
76275cf34a
Merge pull request #8824 from ethereum/solYulDirtyMemory
Fix accessing memory reference types in yul codegen and clean up on memory reads.
2020-05-06 16:17:19 +02:00
Daniel Kirchner
234ffcf278
Merge pull request #8718 from ethereum/irConstants
IR generation for constants.
2020-05-06 16:05:17 +02:00
a3d4
8f68c04358 Add unique IDs to error reporting calls 2020-05-06 13:53:46 +02:00
a3d4
e3641b88ec Groundwork. Prepare for automatic tagging
[Not compilable until the next commit]
2020-05-06 13:52:28 +02:00
Daniel Kirchner
c25a3eba14 Fix accessing memory reference types in yul codegen and clean up on memory reads. 2020-05-06 11:34:11 +02:00
Harikrishnan Mulackal
b5612f96c9 Deprecated identifier now 2020-05-05 21:11:15 +05:30
chriseth
02c20698c9 IR generation for constants. 2020-05-05 17:07:55 +02:00
Daniel Kirchner
4d739b16a4 Cleanup function for internal function pointers. 2020-05-05 13:07:10 +02:00
Daniel Kirchner
7ad319687d Sol->Yul: Add cleanup to operations. 2020-05-05 13:06:01 +02:00
Harikrishnan Mulackal
dd7d63925a
Merge pull request #8806 from ethereum/natspec-constructor
[BREAKING] Natspec constructor and functions have consistent userdoc
2020-05-05 15:47:34 +05:30
Djordje Mijovic
e8f6f63e77 [Sol2Yul] Adding support for builtin revert(string) 2020-05-05 07:05:39 +02:00
Djordje Mijovic
cf607aa887 [Sol->Yul] Checking if there is base contract when calling base constructror via modifier invocation. 2020-05-04 20:38:22 +02:00
chriseth
ecbf216354 Merge remote-tracking branch 'origin/develop' into breaking 2020-05-04 18:46:45 +02:00
chriseth
1aef9c7d20
Merge pull request #8777 from ethereum/sol_yul_simplefunctions
[Sol - Yul] Add some built-in functions.
2020-05-04 16:07:10 +02:00
chriseth
51ccb1519f Yul codegen for immutables. 2020-05-04 15:00:50 +02:00
hrkrshnn
aa65e9423c Uniform output in functions and constructor NatSpec 2020-05-04 12:39:43 +05:30
Alexander Arlt
a9f4d14010 [Sol - Yul] Add support for send(..) & transfer(..) 2020-05-01 08:32:51 -05:00
Alexander Arlt
151e637336 [Sol - Yul] Add some built-in functions.
- simplifications for GasLeft, Selfdestruct and BlockHash.
- add support for addmod & mulmod.
2020-04-30 14:10:09 -05:00
chriseth
602b29cba7
Merge pull request #8796 from a3d4/fix-8760-typechecker-compiler-error
[Type Checker] Fix internal error when applying unary operators to tuples with empty components
2020-04-29 10:14:15 +02:00
a3d4
3bd15655cb Type Checker: Fix internal error when applying unary operators to tuples with empty components 2020-04-29 02:18:48 +02:00
Jason Cobb
8973732b74
Compare categories instead of types in ContractCompiler(740) 2020-04-28 13:13:45 -04:00
chriseth
1fe55370f4 Merge remote-tracking branch 'origin/develop' into HEAD 2020-04-28 13:02:06 +02:00
Djordje Mijovic
f3f729549d [Sol->Yul] Enabling creation function call 2020-04-27 16:15:57 +02:00
Alex Beregszaszi
99aa821410
Merge pull request #8720 from ethereum/irSha256
IR generation for sha256.
2020-04-27 13:44:26 +01:00
Alex Beregszaszi
aa0a69b47f IRGenerator: include assertion for FunctionType::Kind::Declaration 2020-04-27 12:03:44 +01:00
chriseth
dda883b585 IR generation for sha256. 2020-04-27 11:10:20 +02:00
chriseth
61b1369fc2
Merge pull request #8701 from ethereum/solc-yul-chromosome
solc option for selecting yul optimisations
2020-04-27 10:44:14 +02:00
Alexander Arlt
66edaf43f4 [Sol - Yul] Add support for built-in logN(). 2020-04-25 11:10:28 -05:00
Alexander Arlt
2fa26f4e92 [Sol - Yul] Add support for built-in selfdestruct(..). 2020-04-24 17:03:41 -05:00
Kamil Śliwak
c8b612536f Add yulDetails.optimizerSteps to the standard JSON interface 2020-04-24 17:30:56 +02:00
Kamil Śliwak
c41a832f65 Move the default optimisation steps from OptimiserSuite to OptimiserSettings
- Now it's a mandatory parameter in OptimiserSuite::run()
2020-04-24 17:30:56 +02:00
Kamil Śliwak
d3da878200 Enable internal library calls 2020-04-24 15:00:51 +02:00
Kamil Śliwak
64bce597a1 IRGenerator: Enable code generation for libraries 2020-04-24 15:00:17 +02:00
Kamil Śliwak
56a85d6cb3 IRGeneratorForStatements: Handle internal calls to functions from specific base contracts as static calls rather than calls via pointers 2020-04-24 15:00:16 +02:00
Kamil Śliwak
397ea18b78 IRVariable: Fix improperly wrapped docstring 2020-04-24 15:00:16 +02:00
chriseth
2b39f3b988
Merge pull request #8766 from ethereum/sol_yul_gasleft
[Sol - Yul] Add support for built-in gasleft().
2020-04-24 14:24:01 +02:00
Leonardo Alt
059d0bdebb Revert "Use Spacer option to improve performance of constant arrays"
This reverts commit 92059fa848.
2020-04-24 11:55:58 +02:00
Alexander Arlt
aafa4583df [Sol - Yul] Add support for built-in gasleft(). 2020-04-23 17:14:03 -05:00
Kamil Śliwak
e65a5a562e IRGenerationContext::internalDispatch(): Fix code generated when the function called via pointer does not return anything 2020-04-23 21:16:41 +02:00
hrkrshnn
051eec5c51 Converted warnings for .gas and .value into an error 2020-04-23 21:02:02 +05:30
hrkrshnn
e2e32d372f virtual modifiers (in Abstract contracts) allow empty bodies 2020-04-23 17:26:59 +05:30
chriseth
16ed53ddd0
Merge pull request #8591 from mijovic/sol2YulConstructorParams
[Sol2Yul] Adding support for constructors with parameters (inheritance)
2020-04-23 12:56:54 +02:00
chriseth
edef6a0edd
Merge pull request #8757 from ethereum/removeMove
Remove unnecessary move.
2020-04-23 12:28:33 +02:00
chriseth
a371910674
Merge pull request #8642 from ethereum/interfaceid
Add support for interfaceId.
2020-04-23 12:24:49 +02:00
chriseth
5a160be128
Merge pull request #8754 from ethereum/smt_improve_array_performance
Use Spacer option to improve performance of constant arrays
2020-04-23 12:19:04 +02:00
chriseth
b864fe1c43 Remove unnecessary move. 2020-04-23 12:13:26 +02:00
chriseth
18ee96ac91
Merge pull request #8752 from a3d4/fix-8711-typechecker-compiler-error
Type Checker: Fix internal error when assigning to empty tuples
2020-04-23 12:01:00 +02:00
Leonardo Alt
92059fa848 Use Spacer option to improve performance of constant arrays 2020-04-23 10:45:02 +02:00
a3d4
c4bc77874b Disallow empty tuples on the left hand side 2020-04-23 07:02:04 +02:00
a3d4
9538024c81 Fix #8711, #8277 2020-04-23 05:57:35 +02:00
Leonardo Alt
cfe3686116 Fix internal error when using array slices 2020-04-22 23:20:10 +02:00
Leonardo
6d98b907ef
Merge pull request #8746 from ethereum/smt_fix_fixed_point
Fix ICE with fixed point
2020-04-22 23:18:41 +02:00
Leonardo Alt
b191139f2a Fix undefined behavior with nullptr 2020-04-22 20:49:40 +02:00
Leonardo Alt
83c9e82099 Fix ICE with fixed point 2020-04-22 19:57:00 +02:00
chriseth
6728e3ef94 Merge remote-tracking branch 'origin/develop' into breaking 2020-04-22 17:21:32 +02:00
Djordje Mijovic
5329da93fb [Sol2Yul] Adding support for constructors with parameters in case of inheritance 2020-04-22 14:47:08 +02:00
chriseth
4908101ad7 Yul IR generation for member access to type types. 2020-04-22 11:25:27 +02:00
chriseth
1d8e742296
Merge pull request #8684 from ethereum/yulForSelector
Yul codegen for `.selector`.
2020-04-20 16:32:11 +02:00
chriseth
41ef13129b
Merge pull request #8678 from ethereum/smt_remove_redundant_constraints
[SMTChecker] Remove redundant CHC constraints
2020-04-20 15:44:59 +02:00
chriseth
55483445e9
Merge pull request #8663 from ethereum/ir-function-generation-queue
[Sol->Yul] IR function generation queue (refactor)
2020-04-20 15:17:53 +02:00
chriseth
264c4264a1
Merge pull request #8644 from ethereum/refactor-lValueRequested
Replaced all instances of lValueRequested to willBeWrittenTo
2020-04-20 15:03:50 +02:00
chriseth
c24c4f85e4
Merge pull request #8665 from ethereum/recursiveStructRefactoring
Recursive struct refactoring and a bunch of ICE fixes.
2020-04-20 13:24:19 +02:00
hrkrshnn
4760b8589d Replaced all instances of lValueRequested to willBeWrittenTo 2020-04-20 12:33:30 +05:30
Kamil Śliwak
c7947c1af6 Implement lazy function generation using function generation queue 2020-04-17 13:28:07 +02:00
Kamil Śliwak
1f28f79ae6 IRGenerator::generate(): Remove duplicate call to setMostDerivedContract()
- The same call happens in resetContext(_contract) called immediately before
2020-04-17 13:28:07 +02:00
Leonardo Alt
45f22e3ff4 Add functional map and fold generic functions 2020-04-16 19:21:36 +02:00
Alexander Arlt
3754a86ab2 Add support for interfaceID. 2020-04-16 12:17:40 -05:00
Daniel Kirchner
150497c12a Stricter bounds for memory arrays. 2020-04-16 17:51:18 +02:00
Daniel Kirchner
f6d1cee06b Ensure that public callable parameters are valid for calldata. 2020-04-16 17:23:20 +02:00
Daniel Kirchner
6093982606 Review suggestions. 2020-04-16 16:42:12 +02:00
Daniel Kirchner
6f06154eb5 Move direct struct recursion check to detect recursion in global structs. 2020-04-16 16:42:12 +02:00
Daniel Kirchner
b744a56801 Refactoring of errors and fixes for various ICEs. 2020-04-16 16:42:12 +02:00
Daniel Kirchner
df1809f8da Annotate struct definitions with a recursive flag. 2020-04-16 16:42:12 +02:00
chriseth
f271dfa2e2 Yul codegen for .selector. 2020-04-16 13:42:58 +02:00
chriseth
06adbc2c59 Implement bit operations. 2020-04-16 00:33:45 +02:00
Leonardo Alt
bca43586c6 [SMTChecker] Remove redundant CHC constraints 2020-04-15 18:11:39 +02:00
Daniel Kirchner
b86c927505 Disallow virtual and override for constructors. 2020-04-15 13:58:37 +02:00
Daniel Kirchner
95349b3634
Merge pull request #8672 from ethereum/fixYulEmptyTupleAssign
Fix tuple assignments for empty tuples in Yul IR.
2020-04-15 12:36:46 +02:00
chriseth
aff1e93caa
Merge pull request #8571 from aarlt/clang-tidy-apply-modernize-pass-by-value
clang-tidy: Apply modernize-pass-by-value.
2020-04-15 12:06:25 +02:00
Daniel Kirchner
0c5c93f3c2 Fix tuple assignments for empty tuples in Yul IR. 2020-04-15 11:10:52 +02:00
Christian Parpart
d00d3c45b1 [Sol2Yul] Implements codegen part for try/catch statements. 2020-04-14 18:42:37 +02:00
Christian Parpart
3b83365b42 [libsolidity] TryStatement: Adding AST accessors for success/structured/fail clauses. 2020-04-14 18:39:08 +02:00
Alexander Arlt
aac7a1e434 Apply modernize-pass-by-value. 2020-04-14 10:32:13 -05:00
Daniel Kirchner
3af43fd350 Extract typing. 2020-04-14 10:59:28 +02:00
Leonardo
accd8d7667
Merge pull request #8639 from ethereum/smt_tuple_sort
[SMTChecker] Add and use tuple sort
2020-04-14 10:01:55 +02:00
Leonardo Alt
4fc9920112 Use tuple sort name plus index for field name 2020-04-09 12:59:57 +02:00
a3d4
3ef510bc86 Removed a redundant else clause. 2020-04-08 23:40:29 +02:00
Leonardo Alt
5d9dd654cf [SMTChecker] Add and use tuple sort 2020-04-08 18:26:03 +02:00
chriseth
748afe0edd
Merge pull request #8630 from ethereum/encoding-bug-functionCallOption
TypeChecker error when encoding functions with call options; tests
2020-04-08 16:33:24 +02:00
chriseth
9fab9df18c
Merge pull request #8607 from a3d4/fix-nested-tuples
Fixed nested tuples on the right-hand side.
2020-04-08 12:29:52 +02:00
a3d4
aba0b2957c Fix tuple assignments with multi-slot components. 2020-04-07 18:39:25 +02:00
chriseth
baefab78d8
Merge pull request #8628 from ethereum/fiximmutableastexport
Export immutability.
2020-04-07 18:37:09 +02:00
hrkrshnn
229587672f TypeChecker error when encoding functions with call options; tests 2020-04-07 21:11:46 +05:30
chriseth
236eff8416 Export immutability. 2020-04-07 17:30:54 +02:00
chriseth
823a119117
Merge pull request #8570 from aarlt/clang-tidy-apply-modernize-use-emplace
clang-tidy: Apply modernize-use-emplace.
2020-04-07 17:28:50 +02:00
chriseth
51883958ab Merge remote-tracking branch 'origin/develop' into breaking 2020-04-07 11:14:28 +02:00
Leonardo Alt
e3ec22124e [SMTChecker] Fix ICE in CHC internal calls 2020-04-07 01:09:03 +02:00
chriseth
398c515982
Merge pull request #8618 from mijovic/nextConstructorRefactor
Refactoring nextConstructor by moving it from CompilerContext to ContractDefinition
2020-04-06 19:31:12 +02:00
Djordje Mijovic
8cc16eb128 Refactoring nextConstructor by moving it from CompilerContext to ContractDefinition 2020-04-06 17:35:08 +02:00
chriseth
806c835647
Merge pull request #8568 from aarlt/clang-tidy-apply-modernize-use-override
clang-tidy: Apply modernize-use-override.
2020-04-06 16:09:02 +02:00
Leonardo
07437985d0
Merge pull request #8579 from ethereum/smt_symbolic_state
[SMTChecker] Symbolic state
2020-04-06 15:11:14 +02:00
chriseth
3f52ee43a8
Merge pull request #8581 from ethereum/immutableDebug
Debug information for immutable references.
2020-04-06 14:22:31 +02:00
chriseth
f7aba45457
Merge pull request #8592 from random-internet-cat/ast-visitor-constructor
Delete copy and move operations for ASTVisitor and ASTConstVisitor
2020-04-06 14:16:20 +02:00
Leonardo Alt
05a85461fe Symbolic state 2020-04-06 12:27:53 +02:00
Leonardo
0a72a3b8af
Merge pull request #8611 from ethereum/smt_array_variable_sort
[SMTChecker] Allow constructing symbolic arrays from smt sort
2020-04-06 12:26:30 +02:00
Daniel Kirchner
84d7bac4f6 Format immutable references similarly to link references. 2020-04-06 11:21:53 +02:00
Daniel Kirchner
81652686be Debug information for immutable references. 2020-04-06 10:56:42 +02:00
Leonardo Alt
2cfa44bba3 Allow constructing symbolic arrays from smt sort 2020-04-06 10:50:00 +02:00
Jason Cobb
205063f86b
Delete copy and move operations for ASTVisitor and ASTConstVisitor 2020-04-03 23:47:10 -04:00
Daniel Kirchner
d68c526eaa Disallow external function pointers as immutables. 2020-04-03 11:56:51 +02:00
hrkrshnn
042ccd24ab Added error message for virtual (library) functions; test case 2020-04-03 15:09:57 +05:30
Jason Cobb
7f5857a146
Delete copy/move on annotation polymorphic bases 2020-04-02 22:33:21 -04:00
Alexander Arlt
cae6e7769f Apply modernize-use-override. 2020-04-02 18:00:44 -05:00
Alexander Arlt
90bb1d8a7c Apply modernize-use-emplace. 2020-04-02 17:35:48 -05:00
chriseth
d7a39c86ce Accessors for immutable variables. 2020-04-02 19:09:54 +02:00
chriseth
bdcfd71f34 Skip verification for external access. 2020-04-02 18:40:43 +02:00
chriseth
216fca5b70
Merge pull request #8578 from ethereum/interface-function-modifier-error
Added error for interface functions that have modifiers; test case
2020-04-02 18:05:32 +02:00
hrkrshnn
ef2bef9ddc Added error for interface function with modifiers; test case 2020-04-02 20:30:43 +05:30
Leonardo Alt
39ff0deb05 Zero initialize memory arrays 2020-04-02 15:55:18 +02:00
Mathias Baumann
ac7b31e559 Validate immutable variables 2020-04-02 13:52:27 +02:00
Mathias Baumann
9a8ca6ca33 Always return this for EventDefinition::resolveVirtual
Instead of asserting.
2020-04-02 13:52:27 +02:00
chriseth
a2b427dc0b
Merge pull request #8567 from ethereum/storage-pointer-checker
Removed redundant storage declaration check; test coverages
2020-04-02 13:46:51 +02:00
hrkrshnn
79387b2ada Removed redundant declaration check; changed relevant test cases 2020-04-02 12:27:38 +05:30
Daniel Kirchner
77ea896b68 Properly handle assignments of immutables at declaration. 2020-04-02 08:35:22 +02:00
Daniel Kirchner
fe9f8d520c Restrict size for dynamic memory array creation. 2020-04-01 17:25:09 +02:00
chriseth
2853cba3e5 Fix call to internalDispatch. 2020-04-01 12:13:32 +02:00
Alexander Arlt
3e649eb8e1 Disallow access to functions from inline assembly. 2020-04-01 10:34:55 +02:00
chriseth
b83d82ab75
Merge pull request #8550 from a3d4/fix-8450-typechecker-compiler-error
Fix  a couple of internal compiler errors when assigning nested tuples
2020-03-31 22:21:58 +02:00
a3d4
c002cae691 Fix #8450. Prevented internal compiler errors when assigning nested tuples. 2020-03-31 03:25:26 +02:00
Djordje Mijovic
89d5ecdd24 [Sol2Yul] Adding support for constructor with parameters 2020-03-27 01:19:11 +01:00
chriseth
173f234860 Refactor: Replace inheritance hierarchy by most derived contract. 2020-03-26 18:27:39 +01:00
Leonardo Alt
d2f65ea8b1 [SMTChecker] Add SortProvider 2020-03-26 14:55:54 +01:00
chriseth
1897138916
Merge pull request #8522 from a3d4/fix-8427-ast-types-compiler-error
Promoted typeError to fatalTypeError in ReferencesResolver
2020-03-25 11:23:00 +01:00
a3d4
339f3ca32c Fix #8427: Promoted typeError to fatalTypeError in ReferencesResolver::endVisit(UserDefinedTypeName). 2020-03-25 02:51:34 +01:00
Daniel Kirchner
04d8ad2ae1 Legacy codegeneration for immutable state variables. 2020-03-24 16:45:25 +01:00
chriseth
cfeea542b5
Merge pull request #8519 from iamdefinitelyahuman/develop
fix typo in docstring error message
2020-03-23 20:55:32 +01:00
Daniel Kirchner
fe659ceb41 Anything outside storage is always a pointer. 2020-03-23 15:34:10 +01:00
iamdefinitelyahuman
cae4b7dd0e fix typo in docstring error message 2020-03-22 17:15:44 +04:00
Leonardo Alt
0fcb1427c9 Fix Yul codegen when dynamic array is used as rhs of assignment 2020-03-20 17:52:51 +01:00
a3d4
66783c30ce Introduced TestCaseReader. 2020-03-16 23:14:33 +01:00
Djordje Mijovic
96d278b101 [Sol->Yul] Adding slicing for call data arrays 2020-03-13 13:40:38 +01:00
chriseth
fa148f2483 Parsing of immutable state variable. 2020-03-12 17:11:24 +01:00
a3d4
a86c511713 Replaced "assert" with "if" (incorrect contract code is not supposed to trigger asserts). 2020-03-12 14:03:27 +01:00
Daniel Kirchner
bdd8045db5
Merge pull request #8183 from ethereum/functionOptionsYulIR
[YulIR] Function call options for Yul IR
2020-03-12 10:49:51 +01:00
Leonardo
07ab4c80c4
Merge pull request #8323 from ethereum/smt_split_3
[SMTChecker] CHC support to internal function calls
2020-03-11 18:37:45 +01:00
Leonardo Alt
07368c2e1e Add support to internal function calls 2020-03-11 16:29:07 +01:00
Djordje Mijovic
37878cf8d2 Adding support for ipfs large files. 2020-03-11 13:55:46 +01:00
chriseth
6a896f766a Function call options for YulIR. 2020-03-10 22:38:11 +01:00
chriseth
92d4bbb017 Salt should be bytes32. 2020-03-10 22:38:11 +01:00
chriseth
5fd5465f66
Merge pull request #8471 from a3d4/fix-controlflowbuilder-compilation-error
Fixed ControlFlowBuilder compilation error.
2020-03-10 14:12:59 +01:00
a3d4
437ab3d24c Fixed ControlFlowBuilder compilation error. 2020-03-10 14:02:16 +01:00
Christian Parpart
bb29a7e497
Merge pull request #8460 from ethereum/yulutil-convert-array
YulUtilFunctions: convertionFunction() to also handle array string/memory casts
2020-03-10 14:00:34 +01:00
Christian Parpart
5d7a370248 YulUtilFunctions: convertionFunction() to also handle array string/memory casts. 2020-03-10 11:21:12 +01:00
Daniel Kirchner
809e3503ba Control flow analysis for inline assembly. 2020-03-09 16:23:10 +01:00
chriseth
b7c001eb7f
Merge pull request #8416 from ethereum/reuseYulCalldataTailAccess
Fix yul calldata tail access functions and reuse them for old codegen.
2020-03-09 15:10:48 +01:00
chriseth
37e01a19c0 Fix scoping following try/catch. 2020-03-09 13:14:13 +01:00
Christian Parpart
105d89bea8 Compilation fix. 2020-03-09 11:42:34 +01:00
Christian Parpart
988bd6780b
Merge pull request #8414 from ethereum/sol2yul-func-type-conversion
[Sol2Yul] Implements function-to-function cast.
2020-03-09 11:31:44 +01:00
Christian Parpart
d33376cce6
Merge pull request #8409 from ethereum/multiUseYulFunctionNoSharedPtr
Use plain members and references instead of shared pointers for MultiUseYulFunctionCollector
2020-03-09 11:18:40 +01:00
Christian Parpart
e210026e74 [Sol2Yul] Implements function-to-function cast. 2020-03-09 10:40:57 +01:00
Christian Parpart
c8cbb98002 [Sol2Yul] Fixes appendExternalFunctionCall for argumentStrings.size() == 0. 2020-03-09 10:30:07 +01:00
chriseth
a328e940b5
Merge pull request #8429 from ethereum/astJsonImportYulBlock
Fix yul ast import for blocks, switches and string literals.
2020-03-08 17:06:05 +01:00
Daniel Kirchner
e58a1de57f
Merge pull request #8431 from mijovic/sol2YulSelectorAddress
Adding sol->yul for f.selector and f.address
2020-03-06 22:48:38 +01:00
Djordje Mijovic
092827b7ad Adding sol->yul for f.selector and f.address 2020-03-06 21:43:14 +01:00
Daniel Kirchner
2df5ca0774
Merge pull request #8385 from ethereum/immutable
Immutable state variables (1)
2020-03-06 14:20:13 +01:00
Daniel Kirchner
7f38cbb91d Fix calling unimplemented base function. 2020-03-06 10:51:16 +01:00
Daniel Kirchner
420f57aec3 Fix yul ast import for blocks, switches and string literals. 2020-03-05 14:09:13 +01:00
Daniel Kirchner
9318dae42c
Merge pull request #8420 from mijovic/iceStackTooDeepFix
Throwing stack too deep ICE in case of calling encode with too many a…
2020-03-04 17:41:59 +01:00
Djordje Mijovic
38b219d140 Throwing stack too deep ICE in case of calling encode with too many arguments instead of invalid opcode 2020-03-04 16:29:07 +01:00
Daniel Kirchner
857ed12b05 Use plain members and references instead of shared pointers for MultiUseYulFunctionCollector 2020-03-04 16:16:34 +01:00
Daniel Kirchner
b10f12a395
Merge pull request #8413 from mijovic/depratateValueCalls
Deprecated warning for .value() and .gas() on function and constructr…
2020-03-04 14:43:06 +01:00
Daniel Kirchner
919888ddbc Use yul function for calldata tail access, fix checks and add additional revert reason. 2020-03-04 14:39:36 +01:00
Christian Parpart
27a4670ad8
Merge pull request #8408 from ethereum/utilFunctionsFromOldCodegen
Allow using YulUtilFunctions from old codegen
2020-03-04 14:27:26 +01:00
Djordje Mijovic
58c6b90705 Deprecated warning for .value() and .gas() on function and constructror calls 2020-03-04 12:51:49 +01:00
Daniel Kirchner
561e5d9b27 Rename variables and review suggestion. 2020-03-03 15:12:00 +01:00
Daniel Kirchner
24d6e6295e Reuse the mechanism for abi functions and move tracking of used functions to CompilerContext 2020-03-03 15:11:18 +01:00
Leonardo
32ca1a5e26
Merge pull request #8311 from ethereum/smt_split_2
[SMTChecker] Change CHC encoding from explicit CFG to function forests
2020-03-03 13:16:14 +01:00
Leonardo Alt
3bee348525 Change CHC encoding to functions forest instead of explicit CFG 2020-03-03 12:12:26 +01:00
Leonardo Alt
96a230af50 [SMTChecker] Fix ICEs with tuples 2020-03-03 11:35:58 +01:00
Daniel Kirchner
90fa56c719 Allow use of yul util functions in legacy code generation. 2020-03-02 16:32:30 +01:00
chriseth
1488a1ceb8 Refactor isConstant to add "immutable". 2020-03-02 14:20:17 +01:00
chriseth
bb09787bd0
Merge pull request #8378 from mijovic/yulSourceLocations
Adding source location support to AssemblyStack
2020-02-25 22:34:57 +01:00
Djordje Mijovic
ec083c4878 Adding source location support to AssemblyStack and thus debugging Yul sources 2020-02-25 22:19:03 +01:00
chriseth
c5a0a434e2
Merge pull request #8374 from ethereum/writeAccessToSlot
Allow access to ``_slot`` for local storage pointer variables.
2020-02-25 22:11:13 +01:00
chriseth
45041e5d3a Allow access to `_slot` for local storage pointer variables. 2020-02-25 14:28:04 +01:00
Djordje Mijovic
8524e3f48d Standard-JSON-Interface: Fix a bug (#8371) related to empty filenames and imports. 2020-02-25 01:07:36 +01:00
chriseth
c2e22d4cab
Merge pull request #8221 from ethereum/structured-docs-error-locations
[parser] Source locations for structured documentation errors
2020-02-18 14:57:28 +01:00
chriseth
663a9f892f
Merge pull request #8333 from ethereum/fix-8332
Use explicit variant constructor in direct list initializer
2020-02-18 14:46:31 +01:00
chriseth
64f9dc351e
Merge pull request #8337 from mijovic/assembly-multifile
Assembly: Added missing source field to legacy assembly json output
2020-02-18 12:47:19 +01:00
Djordje Mijovic
18dea6b69c Assembly: Added missing source field to legacy assembly json output to complete the source reference 2020-02-18 10:22:34 +01:00
Bhargava Shastry
786c63ec3c Use explicit type for variant constructor that is part of direct list initializer 2020-02-18 10:42:08 +05:30
Jason Cobb
6db0d50094
Don't use identifiers starting with an underscore followed by an uppercase letter 2020-02-17 12:44:39 -05:00
Erik Kundt
b43751d65e Reports source location for structured documentation errors. 2020-02-14 15:21:39 +01:00
chriseth
99f88742d6
Merge pull request #8263 from ethereum/functionSelectorPure
Mark function selectors accessed via declaration as pure.
2020-02-14 12:34:39 +01:00
Daniel Kirchner
9f094d59b9 Mark function selector accesses as pure for pure expressions and mark function accesses via contract name as pure. 2020-02-14 12:33:33 +01:00
Christian Parpart
c92fe69a60 Finishes external call implementation. 2020-02-14 11:59:04 +01:00
Leonardo Alt
3800391a1a [Yul] Support conditionals 2020-02-13 17:02:15 -04:00
Mathias L. Baumann
c635377450
Merge pull request #8313 from ethereum/checkFunctionsExistInIsoltest
Make type error fatal to prevent assert failure at later point
2020-02-13 16:08:13 +01:00
Mathias Baumann
8911b58a6d Make type error fatal to prevent assert failure at later point 2020-02-13 15:16:28 +01:00
Leonardo
2cadf7ec5a
Merge pull request #8307 from ethereum/smt_split_1
[SMTChecker] Some refactoring
2020-02-12 15:25:56 -03:00
chriseth
1ea66fd1f8
Merge pull request #8301 from ethereum/fixPostTypeChecker
PostTypeChecker: ConstStateVarCircularReferenceChecker on function type state variables.
2020-02-12 18:40:19 +01:00
Daniel Kirchner
45f80e9895 Move assertion in PostTypeChecker's ConstStateVarCircularReferenceChecker to account for function type variables 2020-02-12 17:42:27 +01:00
Alexander Arlt
d0eeca8014 Fix CompilerStack::loadMissingSources()
- FatalError Exception was not caught
- fixes #8102
2020-02-12 11:22:11 -05:00
Leonardo Alt
d31a2a8d21 CHC clears indices so that initial is 0 and current is 1 2020-02-12 11:47:58 -03:00
Leonardo Alt
34d64761d9 Extract symbolicArguments function 2020-02-12 11:47:58 -03:00
Leonardo Alt
6451a4d2a0 Move VerificationTarget and add BMCVerificationTarget 2020-02-12 11:47:58 -03:00
Leonardo Alt
ba576bc6c3 Fix new namespaces 2020-02-12 10:35:44 -03:00
Daniel Kirchner
df0873d138 Implement calldata arrays for Yul IR 2020-02-12 14:00:29 +01:00
Daniel Kirchner
3c9f18b749 Use IRVariable's in IR code generation and implement tuples. 2020-02-12 12:36:14 +01:00
Daniel Kirchner
6abe0a50b1 Define stack slot names in types. 2020-02-12 12:36:14 +01:00
Daniel Kirchner
e786650bef
Merge pull request #8274 from ethereum/structRecursionMapping
Move mapping key checks to ReferencesResolver and make errors fatal.
2020-02-12 11:19:07 +01:00
Mathias Baumann
80bd0f47cc Unify optimize yul code in CompilerContext/ContractCompiler 2020-02-11 13:55:47 +01:00
Mathias Baumann
1a3998648c Run yul optimizer on user code without refs 2020-02-11 13:55:47 +01:00
Daniel Kirchner
9c3151748e Move mapping key checks to ReferencesResolver and make them fatal. 2020-02-11 13:35:23 +01:00
chriseth
d033c2f767
Merge pull request #8178 from ethereum/internal_revert_strings
Internal reverts with reason in debug mode
2020-02-10 17:35:41 +01:00
Leonardo Alt
36928c7a35 Add reason string for internal reverts 2020-02-10 11:57:20 -03:00
a3d4
b3b8441aa4 Fix printing source for missing pragma. 2020-02-09 02:28:47 +01:00
chriseth
a41f5e91f6
Merge pull request #8251 from a3d4/refactor-currentlocation
Refactor currentlocation
2020-02-06 09:57:41 +01:00
Daniel Kirchner
e07274a96f Disallow libraries as mapping keys. 2020-02-06 09:09:43 +01:00
a3d4
4ec4d23886 Replaced ParserBase::position() and ParserBase::endPosition() with ParserBase::currentLocation().
It might be simpler to pass `SourceLocation` object instead of splitting it into `start` and `end`, and creating another SourceLocation object using the same `start` and `end` later.
2020-02-06 03:34:49 +01:00
Mathias L. Baumann
bd54176c1a
Merge pull request #8248 from ethereum/functionCallOptionFollowUp
Fix function call option parsing and add to grammar.
2020-02-05 18:01:54 +01:00
chriseth
5247a6600e Fix function call option parsing and add to grammar. 2020-02-05 16:59:02 +01:00
Erik Kundt
f2701db0aa Adds documentation for Solidity source upgrader. 2020-02-05 16:52:54 +01:00
chriseth
0b9c842656 Fix abstract without contract. 2020-02-05 12:14:14 +01:00
chriseth
7cca036f4c
Merge pull request #8224 from a3d4/refactor-sourcelocation
Replaced SourceLocation::isEmpty() with isValid() and hasText().
2020-02-04 22:23:51 +01:00
alex
3416c029cf Relaxed assert in AsmJsonImporter::createAsmNode. 2020-02-04 20:37:51 +01:00
Daniel Kirchner
af9fc8b634 Mapping getters for Yul IR. 2020-02-04 17:22:03 +01:00
Daniel Kirchner
d3cbfb0c5c Allow user-defined types as mapping keys in parser and restrict to contracts during type checking. 2020-02-04 17:22:03 +01:00
alex
211227f50b Modified SourceLocation::hasText() to allow empty source. 2020-02-04 04:19:28 +01:00
alex
e4b18e85e6 Replaced SourceLocation::isEmpty() with isValid() and hasText().
The function SourceLocation::isEmpty() had somewhat dual role.
Sometimes it indicates that the SourceLocation is invalid.
Sometimes it means that there is no corresponding source text.

Hence the proposal is to replace it with two functions, isValid() and hasText().

I also removed Scanner::sourceAt(). (Do we have a rule of thumb to remove unused code?)

Since hasText() checks that start and end are valid indices for source, I adjusted a couple of tests to avoid empty source strings.
2020-02-03 08:04:21 +01:00
chriseth
2098dbade9
Merge pull request #7834 from ethereum/docstring-ast-node
[natspec] Introduce AST node for structured documentation
2020-01-30 19:04:52 +01:00
Erik Kundt
4a179056ed Adds JSON import / export for structured documentation. 2020-01-30 18:26:01 +01:00
Erik Kundt
ec27c2e507 Introduce AST node for structured documentation. 2020-01-30 18:25:56 +01:00
chriseth
ada0cef150
Merge pull request #8068 from ethereum/evmTypedDialect
[Yul] EVM typed dialect
2020-01-30 14:53:25 +01:00
cameel
642653ea04 Make yul::Parser::parse() return unique_ptr rather than shared_ptr
- unique_ptr is more flexible and generally recommended for factory methods. It gets automatically converted to shared_ptr if necessary. Returning shared_ptr, on the other hand, forces the caller to use shared_ptr because a conversion to unique_ptr is not possible.
2020-01-29 20:07:08 +01:00
chriseth
fbe5bb0cce Parse default dialect and omit when printing. 2020-01-29 17:25:25 +01:00
Mathias L. Baumann
5130a2b0ae
Merge pull request #8063 from ethereum/yulvisit-7656
Use yul::AstWalker for assembly reference resolving
2020-01-29 14:56:19 +01:00
chriseth
35820398c2
Merge pull request #8179 from pinkiebell/codegen
libsolidity/codegen: Use calldatacopy to cheaply zero memory..
2020-01-28 18:07:30 +01:00
Mathias Baumann
b8e2baf5f4 Use yul::AstWalker to resolve assembly symbols 2020-01-28 17:57:48 +01:00
chriseth
6ded158739 Change expression parts to use strings instead of numbers. 2020-01-27 08:55:11 +01:00
Erik Kundt
893fb4d05b Implements AST JSON import for function call options. 2020-01-23 21:20:01 +01:00
Mathias Baumann
a3f23d3158 Implement new with CREATE2 and function call options. 2020-01-23 21:20:01 +01:00
pinkiebell
bb6fb675e0 libsolidity/codegen: Use calldatacopy to cheaply zero memory instead of
codecopy.

Motiviation:
  Zero'ing memory is commonplace in contracts, but with the upcoming
  Layer-2 EVM translation layers and other on-chain verification
  mechanisms, using `codecopy` becomes a `costly` operation in those
  sandboxes. Using `calldatacopy` achieves the same thing, gas costs
  are also the same as codecopy, and is significantly cheaper in the `sandbox` situation.
2020-01-22 17:56:56 +01:00
Jason Cobb
573a054d5d
Prohibit interfaces inheriting from non-interfaces 2020-01-22 09:40:40 -05:00
Jason Cobb
1cc8ce1656
Don't prohibit interface inheritance 2020-01-22 09:40:40 -05:00
Daniel Kirchner
ee5ff4df4e Clean up visibility via contract name and fix ICE on calling unimplemented base function. 2020-01-16 19:13:04 +01:00
chriseth
185a736e13
Merge pull request #7918 from ethereum/compilerstack-fqdn
Add assertion for contract name clash in the resolver in CompilerStack
2020-01-15 18:00:58 +01:00
chriseth
c017072bac
Merge pull request #8013 from ethereum/warnings
Enable more warnings in the build system
2020-01-15 18:00:14 +01:00
Daniel Kirchner
c450b18673 Remove remaining instances of new. 2020-01-15 17:25:08 +01:00
Alex Beregszaszi
1d7f25e809 Remove unnecessary statement 2020-01-15 14:33:27 +00:00
Alex Beregszaszi
eafcb42be7 Enable more compiler warnings in the build system
"-pedantic -Wno-unknown-pragmas -Wimplicit-fallthrough"
2020-01-15 14:33:27 +00:00
chriseth
ed87b08911
Merge pull request #8066 from ethereum/removeAsmFlavour
Remove asm flavour
2020-01-15 14:21:54 +01:00
Nicolás Venturo
9649c92e12 Fix error message suggestion for receive 2020-01-14 23:24:27 +01:00
chriseth
b3fe84a6ea
Merge pull request #7153 from djudjuu/newImportAST
import ast from JSON
2020-01-14 17:56:53 +01:00
chriseth
123ea0a250 Remove asm flavour. 2020-01-14 17:16:09 +01:00
djudjuu
e8556fa1b2 Ast-Import from standard-json 2020-01-14 17:15:53 +01:00
Mathias Baumann
adc4774d4a ASTJSON: Export evm version 2020-01-14 12:51:21 +01:00
Christian Parpart
abb9f1eed7 CMake: Renaming devcore static library to solutil (to match source code paths) 2020-01-13 15:52:46 +01:00
Alex Beregszaszi
b85d478931 Add assertion for contract name clash in the resolver in CompilerStack 2020-01-10 11:49:44 +01:00
chriseth
a4e34b378a
Merge pull request #8105 from ethereum/functionTypeRefactor
Add a new Function Type referring to FunctionDefinition's without calling context and use it to allow selector lookup.
2020-01-09 17:15:46 +01:00
Daniel Kirchner
9535c0f520 Introduce FunctionKind::Declaration and allow accessing function signatures via contract name. 2020-01-09 15:40:41 +01:00
Jason Cobb
3726f7448e
Remove now-unused abstractAnnotation helper 2020-01-09 08:44:24 -05:00
Jason Cobb
dc380f017f
Make CallableDeclaration::annotation pure virtual 2020-01-09 08:37:32 -05:00
Jason Cobb
dc6c19cafa
Add methods for AST annotation implementation 2020-01-09 08:37:32 -05:00
Leonardo Alt
a02308cfa5 Replace void cast by maybe_unused 2020-01-09 13:41:30 +01:00
Mathias Baumann
2179562785 Move variables-in-interfaces checker to PostTypeChecker
refs #7566
2020-01-08 14:05:08 +01:00
Mathias Baumann
21844aa545 Move event-outside-emit check to PostTypeChecker
refs #7566
2020-01-08 14:05:08 +01:00
Mathias Baumann
9f8d49e358 Move modifier context check to PostTypeChecker
refs #7566
2020-01-08 14:05:08 +01:00
chriseth
5ca3abd7cb
Merge pull request #8106 from random-internet-cat/move-contract-kind
Move ContractKind from ContractDefinition to file-scope
2020-01-08 13:06:26 +01:00
chriseth
d1a7ff0fbc
Merge pull request #8008 from ethereum/large-code
Issue warning if codesize exceeds EIP-170 limits
2020-01-08 09:48:59 +01:00
Christian Parpart
345f9928ab Library libdevcore renamed to libsolutil. 2020-01-07 15:51:50 +01:00
Christian Parpart
6b23412fae C++ namespace cleanup (except tests). 2020-01-07 15:51:50 +01:00
Jason Cobb
529405deb6
Move ContractKind from ContractDefinition to file-scope 2020-01-07 09:11:29 -05:00
Leonardo
f7624e254c
Merge pull request #8098 from ethereum/smt_fix_shared_ptr
[SMTChecker] Replace some shared_ptr by unique_ptr/raw
2020-01-06 14:58:37 +01:00
Mathias L. Baumann
20cf9d9fef
Merge pull request #8038 from ethereum/statless-typechecker-7566
Refactor PostTypeChecker into multiple classes per usecase
2020-01-06 14:39:58 +01:00
Leonardo Alt
f4f83690f3 Replace some shared_ptr by unique_ptr or raw pointers 2020-01-06 14:16:49 +01:00
Alex Beregszaszi
4d791b2679 Issue warning if codesize exceeds EIP-170 limits 2019-12-25 19:51:35 +01:00
chriseth
ece6463f56
Merge pull request #8069 from random-internet-cat/set-scope
Move scope of Scopable into new ScopableAnnotation
2019-12-20 08:22:36 +01:00
Jason Cobb
6679f92c8a
Move all references to scope into annotation 2019-12-19 21:45:16 -05:00
Jason Cobb
69fd185903
Add new annotations for Scopables 2019-12-19 21:45:16 -05:00
Jason Cobb
30b1b39901
Have other annotations subclass DeclarationAnnotation 2019-12-19 21:45:16 -05:00
Jason Cobb
be14d5f28d
Add DeclarationAnnotation 2019-12-19 21:45:16 -05:00
Jason Cobb
bc71f61467
Add ScopableAnnotation 2019-12-19 20:50:43 -05:00
chriseth
7db88cfedd Remove yul::Instruction. 2019-12-19 23:22:19 +01:00
Alex Beregszaszi
65e59ecd06 Rename EWasm/ewasm/eWasm to Ewasm 2019-12-19 11:36:08 +00:00
Mathias Baumann
a8ca96cd3e Refactor PostTypeChecker into multiple classes per usecase 2019-12-19 10:43:27 +00:00
Alex Beregszaszi
018960ebb1 Rename EWasmObjectCompiler to WasmObjectCompiler 2019-12-18 15:59:31 +00:00
chriseth
bdd338a8de
Merge pull request #7921 from ghallak/func-selector-ast-json
Add function selector to FunctionDefinition AST JSON
2019-12-16 14:07:35 +01:00
Gaith Hallak
371e6a4801 Add function selector to FunctionDefinition AST JSON 2019-12-16 15:16:54 +03:00
Erik Kundt
cc1b28b12e Fixes segfault on empty contract w/ error recovery. 2019-12-13 15:39:19 +01:00
Alex Beregszaszi
4a2a2eb635 Remove Boost <1.55 workaround for multiprecision::msb() 2019-12-13 00:15:15 +00:00
chriseth
c175a468ab Do not call ABIEncoderV2 experimental. 2019-12-12 10:59:07 +01:00
chriseth
f1e7bec11d Include public state variables' base functions in the AST. 2019-12-11 15:32:28 +01:00
Leonardo Alt
1fb62b91d2 Add more override tests with public state variables 2019-12-11 15:15:51 +01:00
chriseth
70623665bf Move helper structs and clean code. 2019-12-11 15:15:51 +01:00
chriseth
30732269f6 Consider state vars. 2019-12-11 15:15:51 +01:00
chriseth
57824566e6 Use proxies. 2019-12-11 15:15:51 +01:00
chriseth
3e1b00b459 Introduce proxies. 2019-12-11 15:15:51 +01:00
chriseth
90feb8f72a Move Visibility out of Declaration. 2019-12-11 00:38:59 +01:00
chriseth
a66b5ea0ad Fix visitor. 2019-12-10 16:54:04 +01:00
chriseth
93d84f3554 Split out override checker into its own file. 2019-12-10 16:00:05 +01:00
chriseth
a5f7661075 Ambigous overrides for modifiers. 2019-12-09 18:43:59 +01:00
chriseth
152f42c6b2 Make ambigous override checker generic. 2019-12-09 18:41:39 +01:00
chriseth
e1d6ce2b66 Override checks for modifiers. 2019-12-09 18:41:39 +01:00
chriseth
f6916a637e Merge remote-tracking branch 'origin/develop' into develop_060 2019-12-09 17:16:58 +01:00
Daniel Kirchner
4c7f9f9751 Do not require overriding for functions in common base with unique implementation. 2019-12-09 16:04:45 +01:00
Leonardo Alt
225041738e Add SMTCheckerTest for isoltest 2019-12-09 15:32:08 +01:00
chriseth
0176c97626
Merge pull request #7923 from ethereum/assertAddressName
Fix wrong construction of ElementaryTypeNameToken
2019-12-09 14:36:01 +01:00
Mathias Baumann
be615d4f2b Fix wrong construction of ElementaryTypeNameToken
And add an assert to prevent it in the future
2019-12-09 13:24:33 +00:00
Mathias Baumann
e999409c89 Sync & update AST exporting according to AST changes 2019-12-09 10:42:24 +00:00
chriseth
e061f1e743 Merge remote-tracking branch 'origin/develop' into HEAD 2019-12-05 16:44:26 +01:00
Mathias Baumann
b7d5de59c5 Implement overridding of functions by public variables 2019-12-05 12:48:52 +00:00
Gaith Hallak
4d90180e24 Support referencing other constants in inline assembly 2019-12-05 13:27:17 +03:00
Daniel Kirchner
426f04b389 Implement and fix overriding unimplemented and implemented functions with unimplemented functions. 2019-12-05 09:26:43 +01:00
Daniel Kirchner
8b35918ad0 Replace superFunction by baseFunctions in AST annotations and JSON AST. 2019-12-05 03:33:32 +01:00
chriseth
d34b0b76b1
Merge pull request #7837 from ethereum/docstring-named-return
Report DocString error on named return paramater mismatch
2019-12-04 17:57:52 +01:00
Leonardo Alt
7be6b54fc7 Add comment 2019-12-04 17:31:44 +01:00
Leonardo Alt
48c3a5c225 [SMTChecker] Create options to choose SMT solver in runtime 2019-12-04 17:31:44 +01:00
chriseth
42d9a8e962 Merge remote-tracking branch 'origin/develop' into develop_060 2019-12-04 17:01:44 +01:00
Erik Kundt
19d466d6fb Fixes named return natspec errors in compilation tests. 2019-12-04 15:38:12 +01:00
Erik Kundt
e5cb0fe839 Reports doctring error on named return mismatch. 2019-12-04 15:38:11 +01:00
Leonardo Alt
67d82fc8a7 [SMTChecker] Use rlimit instead of tlimit for SMT queries 2019-12-04 11:52:18 +01:00
chriseth
e3ee67da6c
Merge pull request #7792 from ethereum/enableYulOptimizer
Enable yul optimizer by default.
2019-12-03 21:24:22 +01:00
chriseth
2d42da3b7d
Merge pull request #7817 from ethereum/bail-on-shadowing-state-vars
Report error on shadowing state variables
2019-12-03 21:22:39 +01:00
Christian Parpart
7bbdfe070f Make shadowing of inherited state variables an error. 2019-12-03 21:20:03 +01:00
chriseth
2f11ac3590 Merge remote-tracking branch 'origin/develop' into develop_060 2019-12-03 21:17:15 +01:00
chriseth
19a6f09cc8 Merge commit '4d2f20570' into develop_060 2019-12-03 21:01:31 +01:00
chriseth
96d777d7f1 Merge commit 'a7d481fb9' into develop_060 2019-12-03 20:47:30 +01:00
Alex Beregszaszi
9140a7d64e Support catching YulException nicely in StandardCompiler 2019-12-03 19:06:21 +01:00
Leonardo Alt
b1577f5e46 [SMTChecker] Fix ICE in array of structs type 2019-12-03 01:12:30 +01:00
Daniel Kirchner
05baa23e8a Require unimplemented functions to be virtual. 2019-12-02 21:59:00 +01:00
Daniel Kirchner
77a9e91443 Enable yul optimizer by default. 2019-12-02 19:30:14 +01:00
chriseth
c61ed0b22d
Merge pull request #7797 from ethereum/allowTranslationInAssemblyMode
Allow EVM to EWasm translation in assembly mode.
2019-12-02 13:15:06 +01:00
Leonardo
a7d481fb94
Merge pull request #7851 from ethereum/smt_fix_function_type
[SMTChecker] Fix ICE for arrays and mappings of functions.
2019-11-30 13:15:08 +01:00
Leonardo
767ce4417f
Merge pull request #7850 from ethereum/smt_fix_typetype
[SMTChecker] Fix visit to IndexAccess that has type Type
2019-11-29 18:18:26 +01:00
Leonardo Alt
5adc2a40b9 [SMTChecker] Fix ICE for arrays and mappings of functions. 2019-11-29 18:06:44 +01:00
Leonardo Alt
9eda95caf9 [SMTChecker] Fix visit to IndexAccess that has type Type 2019-11-29 17:20:50 +01:00
Leonardo Alt
c09da092d2 [SMTChecker] Fix constructors with local vars 2019-11-29 16:59:15 +01:00
Daniel Kirchner
025a696bb0 Fix unrelated test failure. 2019-11-28 20:01:36 +01:00
Daniel Kirchner
7d1b0c6023 Fix Yul IR push 2019-11-28 18:11:38 +01:00
chriseth
ccfc1840a9 Allow assembly stack to translate its source. 2019-11-28 16:15:15 +01:00
Leonardo Alt
a352abe00d [SMTChecker] Add support to constructors 2019-11-28 14:43:23 +01:00
chriseth
f7fc42d8c3
Merge pull request #7826 from ethereum/develop
Merge develop into develop_060
2019-11-28 13:37:19 +01:00
Leonardo Alt
240ff30878 [SMTChecker] Do not visit the name of a modifier invocation 2019-11-27 22:34:33 +01:00
chriseth
1ebcc757e1 Merge remote-tracking branch 'origin/develop' into develop_060 2019-11-27 19:14:08 +01:00
Mathias Baumann
7bc6645218 Disallow use of virtual and private together 2019-11-27 18:52:41 +01:00
chriseth
23181f549e Remove plain new operators from AST. 2019-11-27 18:03:09 +01:00
chriseth
0bb88dabb7 Restrict usage of plain "new". 2019-11-27 17:55:11 +01:00
chriseth
b0db64ff5b Merge remote-tracking branch 'origin/develop' into develop_060 2019-11-26 16:19:35 +01:00
chriseth
41177bc75c
Merge pull request #7770 from ethereum/yul_string_format
[Yul] Format string literals back to quoted string literals
2019-11-26 15:51:54 +01:00
chriseth
0973ae751a Do not warn about enabled ABIEncoderV2 anymore. 2019-11-26 15:49:42 +01:00
Leonardo Alt
ce83bfb088 [Yul] Format string literals back to quoted string literals 2019-11-26 15:28:39 +01:00
Gaith Hallak
4a1e85436b Allow splitting string literals into multiple parts 2019-11-26 14:41:30 +03:00
Leonardo Alt
ddc478e3e4 Add CallbackKind and use it for the SMT solver 2019-11-21 22:10:21 +00:00
chriseth
a00f824479
Merge pull request #7773 from ethereum/develop
Merge develop into develop_060
2019-11-21 21:49:22 +01:00
chriseth
a26dd5a428 Remove trailing spaces in output. 2019-11-21 20:09:03 +01:00
chriseth
d5e9271592
Merge pull request #7350 from ethereum/array-length-rvalue
Make `length` member read-only
2019-11-21 19:22:42 +01:00
chriseth
8f2595957b
Merge pull request #7719 from ethereum/librarySignatuŕes
Add selector member to public and external library functions.
2019-11-20 18:43:14 +01:00
Leonardo Alt
389da5228e Merge remote-tracking branch 'origin/develop' into merge_develop_060 2019-11-20 12:27:40 +01:00
Daniel Kirchner
372df6b9e1 Implement array push and pop for yul and replace assignments in via yul tests. 2019-11-20 12:04:42 +01:00
chriseth
5deaac0849
Merge pull request #7740 from ethereum/istanbul
Enable support for Istanbul
2019-11-20 10:49:27 +01:00
chriseth
32f321e416
Merge pull request #7751 from ethereum/replace_boost_variant_std
Replace boost::variant by std::variant in libyul
2019-11-19 19:40:39 +01:00
chriseth
d696b3c92b
Merge pull request #7743 from ethereum/fixice-7558
Disallow conversion from ``super``
2019-11-19 18:52:33 +01:00
Leonardo Alt
be849b3c47 Replace boost::variant by std::variant in libyul 2019-11-19 17:23:18 +01:00
Mathias Baumann
23cad71c88 Disallow conversion from `super` 2019-11-19 17:14:11 +01:00
Alex Beregszaszi
840aba8929 Add new gas price for deployed bytecode (EIP2028) 2019-11-19 17:09:18 +01:00
Erik Kundt
ecaed1030f Makes array length access read-only. 2019-11-19 16:09:21 +01:00
Erik K
94272d44aa
Merge pull request #7745 from ethereum/develop
Merge develop into develop_060
2019-11-19 15:30:31 +01:00
chriseth
6797879128
Merge pull request #7647 from ethereum/virtual-5424
Implement virtual keyword
2019-11-19 13:21:27 +01:00
Leonardo Alt
d818746e0c [SMTChecker] Fix ICE in abi.decode 2019-11-18 13:15:10 +01:00
Daniel Kirchner
a0ae36ba70 Add selector member to public and external library functions. 2019-11-15 16:12:29 +01:00
chriseth
216e1749f4 Merge remote-tracking branch 'origin/develop' into develop_060 2019-11-14 13:42:46 +01:00
chriseth
766309b6e4
Merge pull request #7713 from ethereum/no-lib-instance-7625
Disallow variables of library types
2019-11-14 13:39:56 +01:00
Mathias Baumann
0891b9451b Disallow variables of library types 2019-11-14 13:20:31 +01:00
chriseth
a667384517
Merge pull request #7712 from ethereum/fixIstanbulAsmParsing
Fix assembly parsing by passing evm version.
2019-11-14 13:20:15 +01:00
chriseth
b099374d8c Fix assembly parsing by passing evm version. 2019-11-14 13:06:36 +01:00
chriseth
8d46f39643
Merge pull request #7707 from ethereum/smt_ice_implicit_conversion
[SMTChecker] Fix ICE in string literal to fixed bytes conversion
2019-11-14 11:52:58 +01:00
Mathias Baumann
5b8ff78176 Implement virtual keyword 2019-11-14 11:49:39 +01:00
chriseth
f6191a7183
Merge pull request #7709 from ethereum/overloadMsgForMagic
Reconstruct function definition for magic variables in overload error message.
2019-11-14 11:24:54 +01:00
Leonardo Alt
5f43b8dbeb Output the storage layout of a contract via storageLayout artifact 2019-11-14 10:19:17 +01:00
chriseth
06588cde76 Reconstruct function definition for magic variables in overload error message. 2019-11-14 10:13:22 +01:00
Leonardo Alt
8efacfb545 [SMTChecker] Fix ICE in string literal to fixed bytes implicit conversion 2019-11-13 22:25:18 +01:00
chriseth
c4441bac5b
Merge pull request #7705 from ethereum/list-overloads-7146
List candidates when overload failed
2019-11-13 17:35:37 +01:00
Mathias Baumann
15df2b30d7 List candidates when overload failed
fixes #7146
2019-11-13 15:54:36 +01:00
Leonardo Alt
e3652627fd [SMTChecker] Fix ICE in CHC when function used as argument 2019-11-13 15:11:30 +01:00
Mathias Baumann
7d4e4b6088 Parse "virtual" keyword 2019-11-13 13:28:01 +01:00
djudjuu
e437443645 Inline assembly to AST json export 2019-11-13 12:13:22 +01:00
Daniel Kirchner
ce7268272d Allow obtaining the address of a library by conversion to `address`. 2019-11-12 17:09:13 +01:00
Daniel Kirchner
8148619d5b Merge branch 'develop' into develop_060 2019-11-12 10:32:41 +01:00
Mathias Baumann
e35a23bbcc Add `switch (..) to style checker 2019-11-11 17:44:21 +01:00
Mathias Baumann
e643c4ca28 Add `while (..) to style checker 2019-11-11 17:28:41 +01:00
chriseth
2e5a42836c
Merge pull request #7681 from ethereum/develop
Merge develop into develop_060
2019-11-11 16:42:03 +01:00
Christian Parpart
f15d47f165 Yul: Remove obsoleted FunctionalInstruction. 2019-11-11 16:04:39 +01:00
Alexander Arlt
ce0cef7cbc Output which functions are not implemented 2019-11-08 14:06:57 -05:00
Leonardo Alt
5dacaf57bc Fix ICE in FixedBytes IndexAccess 2019-11-08 17:29:40 +01:00
chriseth
138ee647f1 Provide different options for reason strings. 2019-11-07 14:13:53 +01:00
Daniel Kirchner
108992c335
Merge pull request #7640 from ethereum/smt_fix_060
[SMTChecker] Fix override tests
2019-11-07 14:10:10 +01:00
chriseth
c0b27d0bc1
Merge pull request #7648 from ethereum/inlineAssemblyShadowing
Error on shadowing and invalid names in inline assembly
2019-11-07 13:31:09 +01:00
Daniel Kirchner
0556f64722 Analyze inline assembly variable declarations for invalid or shadowing names. 2019-11-07 13:04:37 +01:00
Leonardo Alt
fc945880d1 [SMTChecker] Fix override tests 2019-11-07 11:49:32 +01:00
Leonardo Alt
6b10efff8c Add CHCSmtLib2Interface 2019-11-07 11:12:11 +01:00
chriseth
21e65076b3
Merge pull request #7650 from ethereum/develop
Merge develop into develop_060
2019-11-06 21:56:55 +01:00
cd10012
a94d22e5fe Add documentation for extractReturnParameterDocs 2019-11-06 21:45:01 +01:00
cd10012
16fe59b7b4 Implement @erak review notes by creating function and adding constructor test
Update 060 doc with natspec change

Add two more tests with mixed usage

Fix solc-js

fix changelog
2019-11-06 21:44:59 +01:00
cd10012
f598b1515f Give unamed parameters unique keys and update tests to new spec
Fix whitespace
2019-11-06 21:44:34 +01:00
cd10012
18fe693fdd Add unamed return param test and check size in conditional 2019-11-06 21:44:09 +01:00
cd10012
b3ae601e88 Refactor to have multiple return params 2019-11-06 21:44:09 +01:00