Commit Graph

1057 Commits

Author SHA1 Message Date
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
chriseth
2934a1f037 Assign scopes as a separate step. 2020-09-02 20:45:33 +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
Harikrishnan Mulackal
6f22899153 Disallow the exponent to be a signed integer literal 2020-08-27 12:08:45 +02:00
chriseth
7b8cc0c49b Remove null values from AST also in standard-json mode. 2020-08-19 11:06:14 +02:00
chriseth
2ff954ec2d Use kind in json AST for free function. 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
Jason Cobb
888d7037cd
Make FunctionCallAnnotation::kind a SetOnce 2020-08-12 11:57:01 -04:00
chriseth
c96e997a3c Fix member lookup for constructor in library. 2020-08-04 10:51:40 +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
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
42063f2158
Merge pull request #9490 from ethereum/renameSlotToSelector
Rename external function slot to selector.
2020-07-27 10:42:47 +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
chriseth
9be5ed1220 Merge remote-tracking branch 'origin/develop' into breaking 2020-07-21 11:35:28 +02:00
Mathias Baumann
ba0a4de50d NatSpec: Implement `@inheritdoc` 2020-07-20 18:32:18 +02:00
chriseth
93c792c696 Remove special treatment of `var`. 2020-07-20 17:22:04 +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
chriseth
f945163909
Merge pull request #9432 from ethereum/develop
Merge develop into breaking.
2020-07-16 17:14:45 +02:00
chriseth
f28bede34a Refactor storageSizeUpperBound. 2020-07-14 10:45:02 +02:00
Daniel Kirchner
38c6ecbbe2 Remove finney and szabo denominations. 2020-07-13 18:07:10 +02:00
chriseth
8eee3ed3a2
Merge pull request #9388 from ethereum/develop
Merge develop into breaking.
2020-07-13 14:55:21 +02:00
a3d4
efc5ee207d Fix internal compiler error caused by oversized objects 2020-07-10 11:39:07 +02:00
Mathias Baumann
6b37f1c025 Remove visiblity of libraries in inherited contracts. 2020-07-09 16:38:29 +02:00
chriseth
747aeb4999 Assert that visibility of constructor is not queried. 2020-07-07 11:49:44 +02:00
chriseth
da36400576 Disallow visibility for constructors. 2020-07-07 11:49:44 +02:00
chriseth
982a269b2b
Merge pull request #9325 from ethereum/develop
Merge develop into breaking.
2020-07-06 19:11:02 +02:00
chriseth
f372ba6fea Constructors cannot have calldata parameters. 2020-07-06 16:52:51 +02:00
chriseth
3e3f9a472f Merge remote-tracking branch 'origin/develop' into breaking 2020-06-30 18:56:51 +02:00
Harikrishnan Mulackal
d41eaeba56 Added containsNestedMapping() 2020-06-30 16:15:03 +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
98e5923e3a Do now disallow assigning to external parameters. 2020-06-22 18:36:32 +02:00
chriseth
71cb7551f4
Merge pull request #9208 from ethereum/develop
Merge develop into breaking.
2020-06-16 16:11:41 +02:00
chriseth
645c3508a8 Prepare for allowing bound functions and using for everywhere. 2020-06-15 21:20:18 +02:00
chriseth
8155ad2187 Merge remote-tracking branch 'origin/develop' into breaking 2020-06-15 17:11:41 +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
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
baabe65a84 Fix bound functions with calldata parameters. 2020-06-10 17:37:59 +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
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
e5c19d8a2c Replace inContractKind by libraryFunction. 2020-06-09 17:56:58 +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
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
a3d4
c959341720 Add errorId to Error class 2020-05-28 15:00:33 +02:00
chriseth
894478ff8c
Merge pull request #9038 from ethereum/develop
Merge develop into breaking.
2020-05-27 15:24:27 +02:00
chriseth
e4b31e7230 Introduce named concept for types. 2020-05-26 18:17:25 +02:00
Mathias Baumann
b3cafe4583 Fix ICE by avoiding copyForLocation() on ArraySliceType 2020-05-26 17:27:46 +02:00
chriseth
9604174151 Rename asCallableFunction. 2020-05-26 11:35:12 +02:00
chriseth
499cb0526f Calldata variables. 2020-05-26 10:51:13 +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
a3d4
a499ef16fa Fix spelling errors 2020-05-25 02:54:37 +02:00
chriseth
74b9b094c0 Merge remote-tracking branch 'origin/develop' into HEAD 2020-05-20 17:22:47 +02:00
hrkrshnn
4a001d568e Removed null members from JSON output 2020-05-20 16:56:33 +05:30
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
chriseth
2d1e7d9504
Merge pull request #8931 from random-internet-cat/lazy-init
Add LazyInit
2020-05-14 18:54:19 +02: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
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
Harikrishnan Mulackal
47e9a13e8a Fix exponentiation bug 2020-05-13 13:53:06 +05:30
Harikrishnan Mulackal
e54c4eecfc implemented type(X).min and type(X).max for all integer types 2020-05-11 14:51:13 +05:30
hrkrshnn
e2e32d372f virtual modifiers (in Abstract contracts) allow empty bodies 2020-04-23 17:26:59 +05:30
chriseth
a371910674
Merge pull request #8642 from ethereum/interfaceid
Add support for interfaceId.
2020-04-23 12:24:49 +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
hrkrshnn
4760b8589d Replaced all instances of lValueRequested to willBeWrittenTo 2020-04-20 12:33:30 +05:30
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
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
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
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
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
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
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
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
Jason Cobb
205063f86b
Delete copy and move operations for ASTVisitor and ASTConstVisitor 2020-04-03 23:47:10 -04:00
Jason Cobb
7f5857a146
Delete copy/move on annotation polymorphic bases 2020-04-02 22:33:21 -04:00
Alexander Arlt
90bb1d8a7c Apply modernize-use-emplace. 2020-04-02 17:35:48 -05:00
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
173f234860 Refactor: Replace inheritance hierarchy by most derived contract. 2020-03-26 18:27:39 +01:00
Daniel Kirchner
04d8ad2ae1 Legacy codegeneration for immutable state variables. 2020-03-24 16:45:25 +01:00
Daniel Kirchner
fe659ceb41 Anything outside storage is always a pointer. 2020-03-23 15:34:10 +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
chriseth
92d4bbb017 Salt should be bytes32. 2020-03-10 22:38:11 +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
chriseth
1488a1ceb8 Refactor isConstant to add "immutable". 2020-03-02 14:20:17 +01:00
Jason Cobb
6db0d50094
Don't use identifiers starting with an underscore followed by an uppercase letter 2020-02-17 12:44:39 -05: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
Erik Kundt
f2701db0aa Adds documentation for Solidity source upgrader. 2020-02-05 16:52:54 +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
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
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
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
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
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
eafcb42be7 Enable more compiler warnings in the build system
"-pedantic -Wno-unknown-pragmas -Wimplicit-fallthrough"
2020-01-15 14:33:27 +00: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
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
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
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
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
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
Alex Beregszaszi
4a2a2eb635 Remove Boost <1.55 workaround for multiprecision::msb() 2019-12-13 00:15:15 +00:00
chriseth
f1e7bec11d Include public state variables' base functions in the AST. 2019-12-11 15:32:28 +01:00
chriseth
57824566e6 Use 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
152f42c6b2 Make ambigous override checker generic. 2019-12-09 18:41:39 +01: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
Gaith Hallak
4d90180e24 Support referencing other constants in inline assembly 2019-12-05 13:27:17 +03:00
Daniel Kirchner
8b35918ad0 Replace superFunction by baseFunctions in AST annotations and JSON AST. 2019-12-05 03:33:32 +01:00
chriseth
1ebcc757e1 Merge remote-tracking branch 'origin/develop' into develop_060 2019-11-27 19:14:08 +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
0973ae751a Do not warn about enabled ABIEncoderV2 anymore. 2019-11-26 15:49:42 +01:00
Gaith Hallak
4a1e85436b Allow splitting string literals into multiple parts 2019-11-26 14:41:30 +03:00
chriseth
a00f824479
Merge pull request #7773 from ethereum/develop
Merge develop into develop_060
2019-11-21 21:49:22 +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
Mathias Baumann
23cad71c88 Disallow conversion from `super` 2019-11-19 17:14:11 +01:00
chriseth
6797879128
Merge pull request #7647 from ethereum/virtual-5424
Implement virtual keyword
2019-11-19 13:21:27 +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
Mathias Baumann
5b8ff78176 Implement virtual keyword 2019-11-14 11:49:39 +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
chriseth
5388c919f0 Some changes to "abstract". 2019-11-05 13:55:31 +01:00
Daniel Kirchner
3321fc56ea Split fallback function and introduce "fallback()" and "receive()" syntax. 2019-11-04 17:17:58 +01:00
Alexander Arlt
62950a9234 Support for abstract contracts. 2019-11-01 14:54:47 -05:00
Mathias Baumann
6c6a9054b2 Implement override checking 2019-10-30 17:31:33 +01:00
Mathias Baumann
5ff02c12e2 Add reference to contract in FunctionDefinition annotation 2019-10-30 17:31:33 +01:00
Mathias Baumann
b76106fc4a Parse override keyword for modifier definitions 2019-10-30 17:31:33 +01:00
chriseth
edf1e83fda Merge remote-tracking branch 'origin/develop' into develop_060 2019-10-28 15:21:49 +01:00
chriseth
07c67b98f6 Merge remote-tracking branch 'origin/develop' into HEAD 2019-10-28 12:12:52 +01:00
Christian Parpart
df729b3084 Make use of C++17 std::optional<> instead of boost::optional<>. 2019-10-28 11:39:30 +01:00
Mathias Baumann
c3e8023ad5 Fix wrong assert in overflow check 2019-10-23 14:59:34 +02:00
Gaith Hallak
62a62555bc Remove trailing spaces from JSON output 2019-10-02 19:02:35 +02:00
Gaith Hallak
9d34d7de2f Remove trailing spaces from JSON output 2019-10-02 18:01:47 +03:00
chriseth
f884373142 Merge branch 'origin/develop' into develop_060 2019-10-02 16:29:36 +02:00
Daniel Kirchner
7202ebb5b2 Fix internal compiler error for arrays of recursive structs. 2019-10-01 16:51:14 +02:00
Christian Parpart
00d7dac15f Fixes source location in warning for shadowing import delcarations. 2019-09-30 11:45:46 +02:00
chriseth
8e736a9f49 Type Checker for try/catch. 2019-09-23 17:22:56 +02:00
chriseth
a66c354698 AST for try and catch. 2019-09-23 17:22:09 +02:00
Leonardo Alt
43d6e00b14 Add push() for dynamic storage arrays 2019-09-17 13:47:33 +02:00
Daniel Kirchner
4782c800ec Initial introduction of array slices with partial implementation for dynamic calldata arrays. 2019-09-13 10:57:53 +02:00
Leonardo Alt
5cfe0b7670 Allow explicit conversion from address to address payable 2019-09-09 23:46:00 +02:00
Daniel Kirchner
5d69bdf81e Remove ASTPrinter. 2019-09-06 12:38:55 +02:00
krk
33f7f960cf Allow exponentials with signed base and unsigned power. 2019-09-04 17:32:47 +02:00
Mathias Baumann
24716404f8 Parse override keyword 2019-08-26 17:34:21 +02:00
Mathias L. Baumann
502bf01be2
Merge pull request #7278 from ethereum/develop
Merge develop into develop_060
2019-08-26 10:26:48 +02:00
Mathias Baumann
0e3ff25b4e Make sure json output array order is consistent
The source of the "contractDependencies" value was an std::map, thus
order was more or less random.
2019-08-19 17:42:03 +02:00
Daniel Kirchner
9f6fff2120 Replace casting of external functions to address by a member named "address". 2019-08-19 14:56:04 +02:00
Daniel Kirchner
b0a5666b43 Better error messages when writing to expressions that cannot be written to. 2019-08-14 17:59:48 +02:00
Leonardo Alt
7b22496b1f [SMTChecker] Fix ICE when inlining functions that use state vars and are in a different source 2019-08-09 17:50:52 +02:00
mingchuan
15631a7fbe Split calldataEncodedSize into calldataEncodedSize, calldataEncodedTailSize and calldataHeadSize and fix all usages. 2019-08-08 15:52:21 +02:00
rocky
7fd7cc1e76 Produce AST even when there are parser errors 2019-08-07 15:25:53 +02:00
Mathias Baumann
e887c06f6b FunctionType: Return correct stacksize for transfer/send 2019-08-01 13:56:09 +02:00
Christian Parpart
7b3aba81fb Adds a test to check_style.sh to check for spaces before colon (:) in range based for loops. 2019-06-24 17:32:58 +02:00
Daniel Kirchner
4d38df6920 Set state mutability of function type members `gas and value` to pure. 2019-06-13 18:27:53 +02:00
mingchuan
bf8af89bba
Fix assignment of struct containing array of mappings 2019-05-25 01:33:49 +08:00
chriseth
9a00729ce7 Provide dialect to Parser and InlineAssembly AST nodes. 2019-05-23 00:24:58 +02:00
Leonardo Alt
dcd6cb94bf Add function that retrieves first FunctionDefinition up the scope path 2019-05-09 09:15:11 +02:00
Leonardo Alt
371b37b660 Fix direct call to base class overloaded functions 2019-04-26 09:34:15 +02:00
chriseth
fb302c1c4f
Merge pull request #6473 from ethereum/libeventhash-6435
Fix external ABI type name for contracts
2019-04-18 12:53:34 +02:00
Mathias Baumann
0f4b53e9a0 Fix external ABI type name for contracts 2019-04-18 11:39:48 +02:00
Christian Parpart
9733ae7483
[libsolidity] TypeProvider: cleanup unnecessary std:: qualifiers 2019-04-17 14:45:29 +02:00
Christian Parpart
721bf367a3
[libsolidity] TypeProvider: eliminate redundant "Type" suffix in provider function signatures. 2019-04-17 14:42:07 +02:00
Christian Parpart
862b65d6e3
[libsolidity] remove ReferenceType::copyForLocationIfReference (use TypeProvider instead) 2019-04-17 13:25:03 +02:00
Christian Parpart
b83097bdc6
[libsolidity] Types: eliminate redundant MagicType::metaType() (use TypeProvider instead) 2019-04-17 12:59:48 +02:00
Christian Parpart
a99a460c79
[libsolidity] Types: remove some old comments 2019-04-17 12:00:33 +02:00
chriseth
4e2d4f02b0 Make data location explicit. 2019-04-16 23:22:08 +02:00
chriseth
2761aed1d3 Lazy-initialize string and bytes types. 2019-04-16 23:22:08 +02:00
chriseth
4656d7ca7d Change pre-created types to unique_ptr to avoid copying and moving. 2019-04-16 23:22:08 +02:00
Christian Parpart
58a45f2cb6 [libsolidity] TypeProvider: adds explicit uint256() accessor and removes default params in integerType(...). 2019-04-16 18:28:40 +02:00
Christian Parpart
59d4f54729 libsolidity: Be more restrictive to not allow any copy constructors at all in Type system.
This enforces us to be a little bit more historical in how to initialize
our std::array<>'s in TypeProvider.
2019-04-16 18:26:46 +02:00
Christian Parpart
a2a3b007f3 TypeProvider: storageType() to make all parameters explicit 2019-04-16 18:26:46 +02:00
Christian Parpart
bf43eebea9 libsolidity: Introducing TypeProvider API, for clear type system ownership. 2019-04-16 18:26:45 +02:00
chriseth
6b69c31703 Fix ABIEncoderV2 array overwrite bug. 2019-03-25 18:28:43 +01:00
Mathias Baumann
4c2b1c1f29 ArrayType::interfaceType(): Rename local variable to make more sense 2019-03-21 07:25:59 +01:00
Mathias Baumann
7d809df91a Add back StructType::recursive() 2019-03-21 07:25:59 +01:00
Mathias Baumann
8e899a0d32 Disallow internal function types as parameters for public/external library function 2019-03-21 07:25:57 +01:00
Mathias Baumann
0fbea8a1a0 Change return type for interfaceType() to ResultType 2019-03-21 07:25:28 +01:00
Mathias Baumann
84b68006ba Fix function calls with named arguments for overloaded functions 2019-03-20 14:54:41 +01:00
chriseth
48f0d41cc5
Merge pull request #6294 from ethereum/merge-canBeUsedExternally-and-interfaceType-6223
Merge interfaceType() canBeUsedExternally()
2019-03-14 18:12:07 +01:00
Mathias Baumann
4d060ef991 Merge interfaceType() canBeUsedExternally()
And cache the result for expensive calls.
2019-03-14 17:19:59 +01:00
Mathias Baumann
3b546acd57 Clarify documentation of ContractType::m_super 2019-03-14 15:59:26 +01:00
Erik Kundt
b9a7a88346 Improves Result<T> in order to prevent defects. 2019-03-14 14:33:28 +01:00
Mathias Baumann
e411a502fd Fix missing trailing dot in error message 2019-03-11 16:15:18 +01:00
Mathias Baumann
d70cb375cf isImplicitlyConvertibleTo(): Add better error messages 2019-03-11 13:38:02 +01:00
Mathias Baumann
9052a8f050 Move FunctionType::returnParameters() to CallableDeclaration
all the other functions of that type are also found there.
2019-03-06 11:13:01 +01:00
Mathias Baumann
b2262d67f0 Remove unused variable Contractdefinition::m_linearizedBaseContracts 2019-03-06 11:13:01 +01:00
Alex Beregszaszi
d2f493268b Provide access to the name of contracts. 2019-02-26 14:07:03 +00:00
Mathias Baumann
c65a96d189 Small documentation fixes in the code 2019-02-21 12:54:39 +01:00
chriseth
fb07462d82 Fix: Do use actual ABI signatures for events also in libraries instead of internal signature. 2019-02-20 14:35:24 +01:00
Daniel Kirchner
d74198b3cc Remove misleading note in Type::calldataEncodedSize. 2019-02-18 16:18:40 +01:00
Daniel Kirchner
0408130338
Merge pull request #6003 from ethereum/moreStyleChecks
Even more style checks.
2019-02-15 11:52:32 +01:00
Daniel Kirchner
809b9a95f9 Even more style checks. 2019-02-14 11:53:00 +01:00
Daniel Kirchner
32190dac48 Add stride helpers to ArrayType. 2019-02-14 10:51:39 +01:00
chriseth
1a823f0bf8 Fix tabs/spaces. 2019-02-13 17:05:48 +01:00
chriseth
17ea467e5b Fix style of "const". 2019-02-13 16:34:53 +01:00
Daniel Kirchner
0e4912a203 ABIEncoderV2: Implement calldata structs without dynamically encoded members. 2019-02-11 15:46:58 +01:00
chriseth
b5a2c66771
Merge pull request #5957 from ethereum/function-param-fix
Ensure function parameter names always matches parameter types length
2019-02-11 15:45:28 +01:00
chriseth
0c2d623ee4 Enable struct encoding. 2019-02-11 11:37:47 +01:00
Mathias Baumann
57c1c8b46c Ensure function parameter names always matches parameter types length 2019-02-11 10:57:57 +01:00
Alex Beregszaszi
ee09d54525 Change FIXMEs into TODOs where appropriate 2019-01-29 00:35:23 +00:00
chriseth
e3791d6dcf Fix reported packed encoded size for arrays and structs. 2019-01-23 11:13:22 +01:00
Alex Beregszaszi
7b759866cb
Merge pull request #5817 from ethereum/refactoring
Refactoring in TypeChecker and ContractDefinition
2019-01-18 11:36:49 +00:00
Daniel Kirchner
a766efc79f Add ContractDefinition::isInterface. 2019-01-18 12:11:35 +01:00
chriseth
a9fa2658d8 Add helper to show if contract can be deployed. 2019-01-17 20:36:48 +01:00
chriseth
e6fee257e6 Code generation for access to contract code. 2019-01-17 20:36:48 +01:00
chriseth
2fcfb216b5 Syntax for meta type information. 2019-01-17 20:36:48 +01:00
Christian Parpart
62fe57479e
make use of C++ = default constructor declarations as well as more non-static member initialization syntax. 2018-12-19 11:26:42 +01:00
Leonardo Alt
b185d01a26 Sort includes in libsolidity/ast 2018-12-17 15:33:15 +01:00
chriseth
baaefb4b42
Merge pull request #5619 from ethereum/cleanup-abc
Some code cleanup
2018-12-10 19:22:02 +01:00
Mathias Baumann
2f6dc2e773 Replace push_back with emplace_back where it makes sense 2018-12-10 19:02:39 +01:00
Yi Huang
81f703427e Add tests for implcit conversions from literals to fixed-point numbers. 2018-12-10 17:31:20 +01:00
Erik Kundt
e2395a3dcf Adds more detailed type errors and tests. 2018-12-07 12:35:35 +01:00
Erik Kundt
b2afb8cdda Adds an additional message to failing type conversions. 2018-12-07 11:55:53 +01:00
chriseth
5fde279d2a
Merge pull request #5514 from corollari/develop
Remove unary + from the type system
2018-12-06 10:27:09 +01:00
Albert
df08d79623 Fix #5470
Remove unary + from the type system
2018-12-06 01:54:04 +01:00
chriseth
3a378eae1a Restrict toHex to bytes. 2018-12-05 22:37:05 +01:00
Erik Kundt
e3accc6aa6 Simplifies Result<T> and prevents undefined behaviour. 2018-12-05 10:33:34 +01:00
Erik Kundt
05e74d096e Introduces Result<T> for operator and implicit conversion type checks. 2018-12-05 10:33:34 +01:00
Anurag Dashputre
82f5763e7a Fix internal compiler error for unimplemented base contract function. 2018-12-03 12:25:31 +01:00
chriseth
aaeb74f592
Merge pull request #5537 from ethereum/cp-SourceLocation-related-refactoring
[1/3] SourceLocation related refactoring.
2018-11-30 23:45:31 +01:00
Christian Parpart
c48a5264be
liblangutil: SourceLocation: adds (shared) pointer to underlying CharStream source, eliminating sourceName
Also, adapted affecting code to those changes.
2018-11-30 17:07:12 +01:00
chriseth
f6d013237d
Merge pull request #5538 from hydai/static_uint256
Replace IntegerType(256) with static function IntegerType::uint256()
2018-11-29 11:17:33 +01:00
Leonardo Alt
1d47919c0c Fix ICE when function type struct parameter has field of non-existent type 2018-11-29 10:38:47 +01:00
hydai
9326adc3db Replace IntegerType(256) with static function IntegerType::uint256() 2018-11-29 17:07:18 +08:00
chriseth
bc137c2eeb
Merge pull request #5485 from ethereum/refactorCallableFunction
Refactor callable function
2018-11-26 12:34:43 +01:00
Christian Parpart
ec47c8946b
Isolating libyul library API into its own namespace yul. 2018-11-23 14:29:00 +01:00
Christian Parpart
0f4ed52a71
Rewrite header paths to adapt to recent git mv of libsolidity/inlineasm to libyul 2018-11-23 11:18:57 +01:00
chriseth
92ba8a95f6 Make asCallableFunction to never fail and assert abount parameter size if bound instead. 2018-11-22 15:47:45 +01:00
chriseth
9e964852cc Rename 'asMemberFunction' to widen its purpose. 2018-11-22 15:24:45 +01:00
Christian Parpart
d67322a186 Introduce namespace langutil in liblangutil directory.
Also:
- Use {}-style list initialisation for SourceLocation construction
- Introduce new system includes
- Changes the API of the Scanner to take source as value (with move) as opposed to as a reference
2018-11-21 19:13:44 +00:00
Christian Parpart
87821c53c3 Isolating files shared between Yul- and Solidity language frontend. 2018-11-21 18:58:12 +00:00
mordax
ea8b7d803e Removing redundant virtual from override function declaration
Remove trailing whitespace

Remove changelog change
2018-11-21 14:37:32 +00:00
chriseth
2cc304fd3f Fix for style. 2018-11-12 09:15:22 +01:00
chriseth
6bbedab383
Merge pull request #5265 from ethereum/cleanupsha3
Simplify sha3.
2018-11-09 15:39:57 +01:00
chriseth
cc2de07bc6
Merge pull request #5348 from ethereum/boostRationalNegativeDenominatorFix
Fix negative denominator in ``boost::rational`` during exponentiation.
2018-11-08 11:25:30 +01:00
chriseth
674e17c2a8 Performance: Replace string by special single-copy YulString class. 2018-11-07 19:30:27 +01:00
Daniel Kirchner
e036133d1b Fix negative denominator in `boost::rational` during exponentiation. 2018-11-06 10:52:10 +01:00
Erik Kundt
1d8e9af407 Fixes crash while encoding too large arrays. 2018-10-30 15:14:57 +01:00