Daniel Kirchner
e07274a96f
Disallow libraries as mapping keys.
2020-02-06 09:09:43 +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
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
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
ec27c2e507
Introduce AST node for structured documentation.
2020-01-30 18:25:56 +01:00
Mathias Baumann
b8e2baf5f4
Use yul::AstWalker to resolve assembly symbols
2020-01-28 17:57:48 +01:00
Mathias Baumann
a3f23d3158
Implement new with CREATE2 and function call options.
2020-01-23 21:20:01 +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
Daniel Kirchner
c450b18673
Remove remaining instances of new.
2020-01-15 17:25:08 +01:00
djudjuu
e8556fa1b2
Ast-Import from standard-json
2020-01-14 17:15:53 +01:00
Daniel Kirchner
9535c0f520
Introduce FunctionKind::Declaration and allow accessing function signatures via contract name.
2020-01-09 15:40:41 +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
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
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
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
chriseth
7db88cfedd
Remove yul::Instruction
.
2019-12-19 23:22:19 +01:00
Mathias Baumann
a8ca96cd3e
Refactor PostTypeChecker into multiple classes per usecase
2019-12-19 10:43:27 +00:00
chriseth
c175a468ab
Do not call ABIEncoderV2 experimental.
2019-12-12 10:59:07 +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
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
Daniel Kirchner
4c7f9f9751
Do not require overriding for functions in common base with unique implementation.
2019-12-09 16:04:45 +01: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
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
Christian Parpart
7bbdfe070f
Make shadowing of inherited state variables an error.
2019-12-03 21:20:03 +01:00
Daniel Kirchner
05baa23e8a
Require unimplemented functions to be virtual.
2019-12-02 21:59:00 +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
0bb88dabb7
Restrict usage of plain "new".
2019-11-27 17:55:11 +01:00
chriseth
0973ae751a
Do not warn about enabled ABIEncoderV2 anymore.
2019-11-26 15:49:42 +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
Leonardo Alt
389da5228e
Merge remote-tracking branch 'origin/develop' into merge_develop_060
2019-11-20 12:27:40 +01:00
Leonardo Alt
be849b3c47
Replace boost::variant by std::variant in libyul
2019-11-19 17:23:18 +01:00
Erik Kundt
ecaed1030f
Makes array length access read-only.
2019-11-19 16:09:21 +01:00
chriseth
6797879128
Merge pull request #7647 from ethereum/virtual-5424
...
Implement virtual keyword
2019-11-19 13:21:27 +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
Mathias Baumann
5b8ff78176
Implement virtual keyword
2019-11-14 11:49:39 +01:00
chriseth
06588cde76
Reconstruct function definition for magic variables in overload error message.
2019-11-14 10:13:22 +01:00
Mathias Baumann
15df2b30d7
List candidates when overload failed
...
fixes #7146
2019-11-13 15:54:36 +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
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
Daniel Kirchner
0556f64722
Analyze inline assembly variable declarations for invalid or shadowing names.
2019-11-07 13:04:37 +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
chriseth
5392532d70
Fix override error message.
2019-11-04 13:37:23 +01:00
Alexander Arlt
f3f652e290
Update TypeChecker.cpp
2019-11-01 14:54:47 -05:00
Alexander Arlt
c908c16acd
Remove InternalCompilerError on abstract contract instantiation.
2019-11-01 14:54:47 -05: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
20e227afb5
Ensure list of overrides consists of contracts
2019-10-30 17:31:33 +01:00
Mathias Baumann
f4c40080c4
Move if-condition to function for re-use
2019-10-30 17:31:33 +01:00
chriseth
ceb8ee9124
[Yul] leave statement.
2019-10-29 14:32:16 +01:00
chriseth
edf1e83fda
Merge remote-tracking branch 'origin/develop' into develop_060
2019-10-28 15:21:49 +01:00
chriseth
607bf24afe
Merge pull request #7386 from ethereum/060-strict-inline-assembly
...
Defaulting to strict inline assembly (instead of loose)
2019-10-28 12:48:58 +01:00
chriseth
9719f099aa
Merge pull request #7551 from ethereum/060-cxx17-std-optional
...
Use `std::optional<>` rather than `boost::optional<>`
2019-10-28 12:17:31 +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
Henry Lee
24cbb4dd17
Treat magic variables as unknown identifiers in inline assembly
...
This fixes #4575 . For keywords such as 'super' and 'this', will be
treated as unknown identifiers.
2019-10-28 14:59:50 +11:00
Christian Parpart
3c1d12b16c
Assembly: Remove errorTypeForLoose property from AsmAnalyzer.
2019-10-25 15:01:26 +02:00
Christian Parpart
dc2adb3d9d
Assembly: Removing EVMDialect::looseAssemblyForEVM().
2019-10-25 15:01:26 +02:00
Christian Parpart
e23998fc6e
Assembly: Remove Label instruction.
2019-10-25 15:01:25 +02:00
Christian Parpart
5e8d348f66
Assembly: Remove StackAssignment instruction.
2019-10-25 15:01:25 +02:00
Mathias Baumann
8c5d1da5a5
Check for use of modifiers in invalid contexts
2019-10-23 12:36:20 +02:00
Mathias Baumann
ad7cf42aad
Add missing dots in deprecation warning
2019-10-23 12:23:21 +02:00
Mathias Baumann
6ac12afd06
Disallow call of same-class-ctor as modifier
2019-10-23 10:29:41 +02:00
chriseth
f884373142
Merge branch 'origin/develop' into develop_060
2019-10-02 16:29:36 +02:00
Christian Parpart
00d7dac15f
Fixes source location in warning for shadowing import delcarations.
2019-09-30 11:45:46 +02:00
Leonardo
ca714a2d3d
Merge pull request #7485 from ethereum/develop
...
Merge develop into develop_060
2019-09-26 15:43:12 +02:00
chriseth
ca21659749
Fix error message about accessing storage pointers.
2019-09-24 10:52:02 +02:00
chriseth
8e736a9f49
Type Checker for try/catch.
2019-09-23 17:22:56 +02:00
chriseth
b5bc52f2a7
Control flow for try statements.
2019-09-23 17:22:56 +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
krk
33f7f960cf
Allow exponentials with signed base and unsigned power.
2019-09-04 17:32:47 +02:00
Daniel Kirchner
4354ef2ef4
Add update suggestion.
2019-08-19 14:58:05 +02:00
chriseth
c047803b80
Change BreadthFirstSearch to use value types instead of pointers.
2019-08-15 16:10:10 +02:00
Daniel Kirchner
e545103ec8
Extract reasonOfFailure to lambda function.
2019-08-14 17:59:48 +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
chriseth
57125de9ef
Remove ContainsMSize from side-effect-collector.
2019-08-13 13:34:33 +02:00
chriseth
9cb9021c36
Cope with constants without value in inline assembly.
2019-07-09 11:12:13 +02:00
chriseth
18072586c9
Remove trailing whitespace in error message.
2019-07-08 14:28:38 +02:00
chriseth
2b91022b25
Fix view/pure checker for access to base.
2019-07-03 11:19:57 +02:00
chriseth
cdd137e3d1
Support constant numbers in inline assembly.
2019-07-02 14:01:05 +02:00
Leonardo Alt
b7634faa3d
Improve error message for delegatecall.value
2019-06-06 12:55:12 +02:00
chriseth
df96648b1c
Do not allow msize in inline assembly if the Yul optimizer is active.
2019-05-28 12:54:33 +02:00
chriseth
0291abf10f
Merge pull request #6818 from ethereum/alwaysUseBuiltins
...
Provide builtin functions even in loose assembly mode.
2019-05-23 12:29:12 +02:00
chriseth
9a00729ce7
Provide dialect to Parser and InlineAssembly AST nodes.
2019-05-23 00:24:58 +02:00
chriseth
7506b5752a
Do not require payable for callvalue instruction.
2019-05-22 11:30:29 +02:00
Erik Kundt
07744dbd12
Throws error on library calling itself externally.
2019-05-02 12:41:07 +02:00
Mathias Baumann
cf35e5ba02
Issue warning for variables called super
or this
2019-05-02 11:30:24 +02:00
chriseth
0bfd587363
Merge pull request #6527 from rocky/move-SemVerHandler
...
Move SemVerHandler to analysis to parsing to increase modularity...
2019-04-18 13:00:45 +02:00
rocky
b424446c5f
Move SemVerHandler to analysis to parsing to increase modularity...
...
If ever you want to separate building analysis from scanning/parsing/ast, this will help.
2019-04-17 10:13:42 -04: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
58a45f2cb6
[libsolidity] TypeProvider: adds explicit uint256() accessor and removes default params in integerType(...).
2019-04-16 18:28:40 +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
2308904f68
Remove "using namespace" from header and move Instruction to dev::eth.
2019-03-28 13:48:11 +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
Leonardo Alt
9acec99c31
Issue error for callvalue in nonpayable function
2019-03-19 20:45:27 +01:00
Mathias Baumann
4d060ef991
Merge interfaceType() canBeUsedExternally()
...
And cache the result for expensive calls.
2019-03-14 17:19:59 +01:00
Christian Parpart
cfefa2c1d1
Merge pull request #6136 from ethereum/yul-break-continue
...
[Yul] introduce break/continue keywords.
2019-03-11 20:38:57 +01:00
Daniel Kirchner
66fc7ffab2
Allow dynamically encoded calldata structs with ABIEncoderV2.
2019-03-11 16:40:13 +01:00
Christian Parpart
05e2d362c8
[Yul] Adds break/continue statements and some general tests for for-loop syntax.
2019-03-11 15:05:05 +01:00
Daniel Kirchner
f7c6eda2c3
Allow calldata arrays with dynamically encoded base type.
2019-03-06 18:04:12 +01:00
Mathias Baumann
9919670ddd
Check base contracts for abi encoder compatibility
2019-03-06 11:16:54 +01:00
Mathias Baumann
de98e38b78
Prepare code to output errors returned by isImplicitlyConvertibleTo()
2019-03-05 10:44:36 +01:00
chriseth
9a949c1bda
Set default EVM version to Petersburg.
2019-03-04 14:53:00 +01:00
Alex Beregszaszi
ecd246aeb6
Support petersburg in evmVersion
2019-03-04 14:10:41 +01:00
chriseth
ab33ff1408
Merge pull request #6132 from ethereum/ossfuzz-nullref-typechecker
...
TypeChecker: Check if type exists before dereferencing it
2019-02-28 16:38:54 +01:00
Mathias Baumann
50b4193705
TypeChecker: Check if type exists before dereferencing it
2019-02-28 15:49:15 +01:00
Mathias Baumann
f782125463
Fix SMT Checker crash due to missing type information
2019-02-28 11:55:45 +01:00
Mathias Baumann
e4a52aa2f6
Allow dynamic types in public mappings
2019-02-26 15:48:54 +01:00
Alex Beregszaszi
d2f493268b
Provide access to the name of contracts.
2019-02-26 14:07:03 +00:00
Erik Kundt
2d0daae796
Disallows index access on contracts and libraries.
2019-02-25 23:05:33 +00:00
Leonardo Alt
2405b2151a
EVMVersion in langutil namespace instead of solidity
2019-02-25 15:29:57 +01:00
chriseth
7f5b335b47
Make EVM version part of EVM dialect.
2019-02-21 21:59:46 +01:00
Alex Beregszaszi
52496ea719
Proper error message for missing variables in inline assembly
2019-02-20 10:36:55 +00:00
Mathias Baumann
a63f7ca9df
Fix crash due to missing type info
2019-02-19 17:28:44 +01:00
Alex Beregszaszi
2949bd14dd
Merge pull request #6028 from ethereum/warn-about-unused-struct-array-expr
...
Detect custom type expressions that have no effect
2019-02-18 21:12:04 +00:00
Mathias Baumann
e3d4155fa8
Detect custom type expressions that have no effect
2019-02-18 18:59:31 +01:00
Mathias Baumann
093b9ced97
Make sure "value" error hint is only displayed in the right context
...
Before, the hint would be shown for any "value" member, even a user-specified one.
2019-02-18 16:29:57 +01:00
chriseth
db7b38e3c4
Merge pull request #5978 from ethereum/fix-broken-hint
...
Fix error msg hint for non-payable contracts
2019-02-18 11:49:07 +01:00
Daniel Kirchner
809b9a95f9
Even more style checks.
2019-02-14 11:53:00 +01:00
Mathias Baumann
223dac3eca
TypeChecker: Use cast instead of category() check
2019-02-14 11:39:51 +01:00
Mathias Baumann
10a9960eb3
Fix error msg hint for non-payable contracts
2019-02-14 11:39:19 +01:00
chriseth
f003696d7e
Merge pull request #5994 from ethereum/error-to-assert
...
Turn unreachable error into assert
2019-02-13 17:54:01 +01:00
chriseth
1a823f0bf8
Fix tabs/spaces.
2019-02-13 17:05:48 +01:00
Mathias Baumann
a70fee7316
Turn unreachable error into assert
...
The exact conditions are already checked when iterating over the
possibleMembers where the function `canTakeArguments()` is called
for each member. The function does the identical check.
2019-02-13 16:51:05 +01:00
Daniel Kirchner
9e32aa7510
Disallow calldata arrays with dynamically encoded base types in TypeChecker.
2019-02-11 17:13:12 +01:00
chriseth
92cb6cb793
Merge pull request #5936 from ethereum/calldataStructsV2
...
ABIEncoderV2: Implement calldata structs without dynamically encoded members.
2019-02-11 16:18:27 +01:00
Mathias Baumann
259d803387
Conditional Expression: Delay invalid type fatal error
...
Check the whole conditional first and then output errors for
both, the true and false expressions.
2019-02-11 15:47:19 +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
Mathias Baumann
66b24225fb
Remove duplicate if-check
2019-02-11 14:56:57 +01:00
Mathias Baumann
fe2429de9f
Packed Encoding: Disallow types in v2 that aren't allowed in v1
2019-02-11 11:37:48 +01:00
chriseth
a8d0ef4bad
Allow indexed structs in events with encoder v2.
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
Mathias Baumann
5fb79f5e37
Turn unreachable error statements into asserts
2019-02-07 10:07:09 +01:00
Mathias Baumann
9f431339ef
Fix crash for too large struct array indicies
2019-02-06 11:50:25 +01:00
Mathias Baumann
77f407d450
Fix check that mappings can only have storage location
2019-02-05 18:06:42 +01:00
Daniel Kirchner
610ef9f199
Disallow calldata structs.
2019-01-21 10:30:57 +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
b7a86a124d
Refactor TypeChecker::visit(FunctionDefinition const&).
2019-01-18 12:12:23 +01:00
Daniel Kirchner
a766efc79f
Add ContractDefinition::isInterface.
2019-01-18 12:11:35 +01:00
chriseth
2ec997e697
Merge pull request #5775 from ethereum/codeAccess
...
Provide access to code of contract types.
2019-01-18 00:16:06 +01:00
chriseth
4669b06ab4
Warn if type(..).runtimeCode is used with assembly in the constructor.
2019-01-17 20:36:48 +01:00
chriseth
0bfdaa500a
Add code access dependency.
2019-01-17 20:36:48 +01:00
chriseth
2fcfb216b5
Syntax for meta type information.
2019-01-17 20:36:48 +01:00
Leonardo Alt
83e7233bb8
Change error message and add tests
2019-01-17 14:28:03 +01:00
Leonardo Alt
c96b760c47
Return TypeError is fixed point encoding is attempted.
2019-01-17 13:36:53 +01:00
Daniel Kirchner
0dfd4a726e
Warn about unreachable code.
2019-01-10 10:36:50 +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
Alex Beregszaszi
c2ec6d71b4
Add version pragma parsing to Parser
2018-12-18 15:02:35 +00:00
Leonardo Alt
36d8a98664
Sort includes in libsolidity/analysis
2018-12-17 12:35:16 +01:00
chriseth
87237281bf
Merge pull request #5630 from ethereum/warn_functions_empty_body
...
Supress unused var and state mut warnings for functions with empty body
2018-12-12 17:00:50 +01:00
Leonardo Alt
508aae8a67
Disable state mutability warning for functions with empty body
2018-12-12 14:43:44 +01:00
Leonardo Alt
53537864a2
Disable unused var warning for functions with empty body
2018-12-12 14:43:44 +01:00
Daniel Kirchner
788612d2ef
Refactoring of the ControlFlowGraph and use for detecting all uninitialized storage accesses.
2018-12-12 04:20:53 +01:00
chriseth
fb3a0ac1c7
Codegen for object access.
2018-12-11 19:24:44 +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
b2afb8cdda
Adds an additional message to failing type conversions.
2018-12-07 11:55:53 +01:00
Erik Kundt
05e74d096e
Introduces Result<T> for operator and implicit conversion type checks.
2018-12-05 10:33:34 +01:00
chriseth
99db4e3ff4
Introduce the concept of builtin functions.
2018-12-04 12:06:33 +01:00
chriseth
3f613a44ec
Merge pull request #5557 from ethereum/fixInterfaceImplementedByPublicStateVariable
...
Public state variables are implementing external functions.
2018-12-03 10:46:44 +01:00
chriseth
0668a9ecfb
Public state variables are implementing external functions.
2018-12-03 10:46:03 +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
33d6a24c47
Move library related checks.
2018-11-30 16:30:20 +01:00
chriseth
4f992298c6
Move hash collisions checks.
2018-11-30 16:30:19 +01:00
chriseth
6d1644e55c
Move external type clash check.
2018-11-30 16:30:19 +01:00
chriseth
4f4f623273
Move fallback function checks.
2018-11-30 16:30:19 +01:00
chriseth
2a85152463
Move constructor checks.
2018-11-30 16:30:19 +01:00
chriseth
b610be4882
Rename functions.
2018-11-30 16:30:19 +01:00
chriseth
d1cc731843
No need to visit structs early.
2018-11-30 16:30:19 +01:00
chriseth
2c2c976697
Move base constructor argument checks.
2018-11-30 16:30:19 +01:00
chriseth
57a62429c9
Move abstract function check.
2018-11-30 16:30:19 +01:00
chriseth
89cf6a5a38
Move override checks.
2018-11-30 16:30:19 +01:00
chriseth
d054a3b85d
Move duplication checks.
2018-11-30 16:30:19 +01:00
chriseth
0bd9db480f
Add skeleton for contract level checker.
2018-11-30 16:30:19 +01:00
chriseth
c445e7dfa4
Disallow inline arrays of mapping type.
2018-11-29 19:45:06 +01:00
Leonardo Alt
67bbcefe6c
Report deprecation error on functions sha3 and suicide also without call.
2018-11-29 14:29:13 +01:00
hydai
9326adc3db
Replace IntegerType(256) with static function IntegerType::uint256()
2018-11-29 17:07:18 +08:00
chriseth
b4086ac870
Merge pull request #5526 from ethereum/fixGetterNewCoder
...
Fix: Disallow structs in getters for old encoder.
2018-11-28 17:05:52 +01:00
chriseth
46f3da0b87
Properly check getter types to be old-abi-coder-compatible.
2018-11-28 14:08:25 +01:00
chriseth
4fa47322f9
Remove obsolete comment.
2018-11-28 11:49:00 +01:00
chriseth
240ad0e34e
Merge pull request #5382 from ethereum/libraryMappingPublic
...
Allow mapping arguments for public and external library functions.
2018-11-26 19:47:32 +01:00
chriseth
4d7799eed4
Properly disallow different return types for interface overloads with different visibilities.
2018-11-26 16:51:28 +01:00
Daniel Kirchner
30e6f8d3fb
Allow mapping arguments for public and external library functions.
2018-11-26 16:31:46 +01:00
chriseth
5ec634939e
Use asCallableFunction for definition clashes in the same contract.
2018-11-26 14:30:32 +01:00
chriseth
36a369d077
Use asCallableFunction for external interface clash check.
2018-11-26 14:30:32 +01:00
chriseth
939365a1d5
Use callable types for override check.
2018-11-26 14:30:32 +01:00
chriseth
9a4968ba1d
Use asCallableFunction in override check (part 1).
2018-11-26 14:30:32 +01:00
chriseth
0f0e466d36
Allow visibility change from external to public.
2018-11-26 12:41:26 +01: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
713d94476e
Reorder some include files and group <libyul/>'s together (as much as possible)
2018-11-23 12:37:19 +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
a781bda595
Correct style.
2018-11-22 17:15:25 +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
Daniel Kirchner
b5e9d849ef
Ignore unimplemented functions for storage returns.
2018-11-13 12:18:22 +01:00
Kristofer Peterson
f927da9182
Refactor of bool TypeChecker::visit(FunctionCall const& _functionCall).
...
Visit method now cleanly determines if node represents a function call,
struct construction or type conversion. Type checking, validation and
error message logic is moved to separate methods.
2018-11-09 16:35:54 +00:00
chriseth
674e17c2a8
Performance: Replace string by special single-copy YulString class.
2018-11-07 19:30:27 +01:00
Christian Parpart
f112377dd4
Refactor solidity::Token
into an enum class
with TokenTraits
helper namespace
2018-10-22 17:00:51 +02:00
chriseth
0778fb2dfc
Merge pull request #5208 from mestorlx/bug4156
...
[WIP] Bad identifier suggestion in certain cases
2018-10-15 13:03:49 +02:00
Christian Parpart
1304361b9c
Renaming namespace dev::julia to dev::yul.
2018-10-15 11:58:51 +02:00
Christian Parpart
6d815a142f
Fixes invalid function calls to literals inside tuple assignment's LHS.
2018-10-15 10:35:11 +02:00
mestorlx
1ce9566e50
Updated MAXIMUM_STRING_DISTANCE to non static maximumStringDistance taking into account length of the identifier
2018-10-13 09:54:07 -03:00
chriseth
2feaacba9d
Merge pull request #5195 from ethereum/unsigned-array-index
...
Do not crash on non-unsigned array index
2018-10-10 20:56:25 +02:00
Erik Kundt
763ae30023
Fixes crash on non-unsigned array index.
2018-10-10 19:49:25 +02:00
Martin Diz
ef25454a04
Improved error message for lookup in function types.
2018-10-10 11:53:53 -03:00
chriseth
06200b4b64
Merge pull request #5180 from ethereum/cpp-cleanup
...
Some C++ cleanup
2018-10-10 11:43:42 +02:00
Alex Beregszaszi
fa0ce6a7e7
Use empty() instead of size() == 0
2018-10-09 04:29:37 +01:00
chriseth
6a0b7759ba
Fix pragma error suggestion.
2018-10-09 03:15:53 +02:00
chriseth
d76bfcd935
Fix typos.
2018-10-04 13:28:16 +02:00
Christian Parpart
9fb835b710
Fixes #5051 (introduced in #4684 ), effectively allowing underscores in address literals.
2018-10-02 15:37:15 +02:00
chriseth
13cd7c3fed
Merge pull request #5061 from ethereum/fixedSizeArrayLength
...
Disallow fixed-size arrays with zero length
2018-09-26 14:55:07 +02:00
Erik Kundt
466e8f56e6
Removes unnecessary check of array type.
2018-09-26 12:46:08 +02:00
Nicolás Venturo
f8d43a4da5
Removed extra whitespace.
2018-09-25 14:40:39 -03:00
Khan M Rashedun-Naby
376ce07915
Use 'switch' instead of 'if..else if'
2018-09-24 08:31:44 +06:00
Erik Kundt
e6d87e54c8
Simplifies zero-length check for fixed-size arrays.
2018-09-22 03:07:12 +02:00
Erik Kundt
d821cbdff5
Moves length check to reference resolver.
2018-09-22 00:25:52 +02:00
Erik Kundt
ff5be17990
Disallows fixed-size multidim. arrays with zero-length.
2018-09-21 18:44:56 +02:00
chriseth
d0461c49fe
Make non-payable default for conversion to address.
2018-09-20 14:31:04 +02:00
liangdzou
f3cbdadec7
Do not set to ref for explicit conversion and add assertion for array
...
type conversion. Also, add some test cases for #4901 and #4948 .
2018-09-14 08:42:40 +02:00
Jordan Last
d0497aacc0
fixing rebase conflicts
...
add ElementaryTypes::BytesMemory and ElementaryTypes::StringMemory
fix rebase conflicts
fixing rebase conflicts
use make_shared instead of new
fix tabs and StateMutability parameter
create address and addressType functions, fix spaces in comment
fix typo and switch nonpayable to payable
fix spaces
fix comment again
2018-09-13 15:53:06 -06:00
Daniel Kirchner
12aaca1645
Add payable and non-payable state mutability to AddressType.
2018-09-13 15:15:49 +02:00
Daniel Kirchner
1ce3581a52
Accept `address payable
` during parsing.
2018-09-11 14:52:23 +02:00
chriseth
522174890f
Merge pull request #4872 from bakaoh/issue4716
...
Crash when array index value is too large
2018-09-05 21:47:42 +02:00
Daniel Kirchner
87804b6419
Split IntegerType into IntegerType and AddressType.
2018-09-05 12:19:14 +02:00
chriseth
a996ea266c
Merge pull request #4590 from ethereum/msgValueModifier
...
Warn if modifier uses msg.value in non-payable function
2018-09-05 10:32:10 +02:00
bakaoh
a7ffff6a29
Fix #4716 : Crash when array index value is too large
2018-09-05 10:54:38 +07:00
chriseth
624dbbe142
Fix abi.decode returning single value.
2018-09-04 18:19:00 +02:00
chriseth
9daac90cf7
Merge pull request #4888 from ethereum/disallow_single_statement_vardecl_if_while_for
...
Disallow single statement var decl in if/while/for without blocks
2018-09-04 17:24:06 +02:00
Leonardo Alt
ac8892e0e3
Review suggestions
2018-09-04 12:14:04 +02:00
Leonardo Alt
17176871ab
Changed error message and added tests
2018-09-04 11:48:58 +02:00
chriseth
431c2fbcf3
Turn warning into error.
2018-09-03 18:35:57 +02:00
Erik Kundt
75a92b0ffd
Warns if modifier uses msg.value in non-payable function.
2018-09-03 18:35:57 +02:00
Leonardo Alt
4522c804f3
Disallow single statement var decl in if/while/for without blocks
2018-09-03 18:21:57 +02:00
Chase McDermott
551e0bf47c
Rename Location::Default to Location::Unspecified.
2018-08-17 18:15:22 -05:00
Leonardo Alt
583e7156ba
Dynamic type as mapping key returns error instead of assertion fail
2018-08-16 11:59:41 +02:00
chriseth
cc6fa6d61f
Merge pull request #4822 from ethereum/addressStaticCall
...
Add ``staticcall`` to ``address``.
2018-08-16 00:13:21 +02:00
Leonardo Alt
faed71c6b1
Review suggestions
2018-08-15 17:11:18 +02:00
Leonardo Alt
b6c839e817
Disallow indexed reference types in events when using ABIEncoderV2
2018-08-15 17:11:18 +02:00
Daniel Kirchner
7ca0aaaf6f
Add `staticcall
to
address
`.
2018-08-15 16:06:48 +02:00
chriseth
6c0261e6ab
Merge pull request #4390 from ethereum/abidecode
...
Add abi.decode
2018-08-15 12:31:26 +02:00
chriseth
9328ea4c3c
Add abi.decode(bytes data, (...))
2018-08-15 10:45:16 +02:00
bakaoh
3fa8829845
Fixes #4718 : High CPU usage when using large variable names
2018-08-15 10:23:08 +02:00
chriseth
cc54f6c425
Merge pull request #4738 from ethereum/dataloc_merged
...
Enforce data location.
2018-08-14 21:38:07 +02:00
chriseth
8f27fb1f4a
Merge pull request #4542 from aarlt/constructor_natspec
...
Fix: natspec annotations on constructors
2018-08-14 19:13:25 +02:00
Chase McDermott
683bce1869
Refactor data location check.
2018-08-14 18:07:15 +02:00
Christian Parpart
81faafe7f2
Adds support for structs in interfaces.
...
Closes #4733 .
2018-08-14 15:36:03 +02:00
chriseth
6ca3973944
Merge pull request #4777 from ethereum/typeConversionMemory
...
Defaul data location for type conversions is memory.
2018-08-14 11:36:19 +02:00
chriseth
3dd31b704a
Merge pull request #4798 from ethereum/mappingArgumentsAndReturns
...
Mapping arguments and returns
2018-08-13 17:27:29 +02:00
Daniel Kirchner
341128962f
Allow mappings of arrays as arguments and return values of internal functions.
2018-08-13 16:33:37 +02:00
Daniel Kirchner
4ae59acc09
Consider mappings return values in control flow analysis.
2018-08-13 16:33:37 +02:00
Daniel Kirchner
a9f31da411
Allow mapping arguments and return values in all internal functions.
2018-08-13 15:50:22 +02:00
chriseth
bd567a22c9
Defaul data location for type conversions is memory.
2018-08-13 14:38:12 +02:00
Daniel Kirchner
57ada1d69e
Allow mapping arguments and return values in internal library functions.
2018-08-13 14:31:10 +02:00
Daniel Kirchner
7d7abeb149
Disallow ambiguous conversions between number literals and bytesXX types.
2018-08-13 14:27:01 +02:00
chriseth
c9ca083d14
Fix data location of external reference parameters.
2018-08-09 15:04:00 +02:00
Alex Beregszaszi
ed52f422b7
Rename FunctionKind SHA3 to KECCAK256 (as the instruction was renamed in libevmasm)
2018-08-08 22:37:40 +01:00
Alexander Arlt
f76d4d5919
Fix: natspec annotations on constructors
...
- natspec annotations on constructore where ignored.
2018-08-08 21:53:35 +02:00
chriseth
d634d20b5b
Merge pull request #4684 from ethereum/underscores_in_numeric_literals
...
[BREAKING] Underscores in numeric literals
2018-08-08 21:36:57 +02:00
Alex Beregszaszi
3c791d637d
Provide nicer error message when referencing overloaded references
2018-08-08 15:59:24 +01:00
chriseth
de8e9114fd
Merge pull request #4740 from ethereum/enforceNumberOfReturnValues
...
Disallow empty return in function with return arguments.
2018-08-08 14:59:09 +02:00
Christian Parpart
b9222808f6
Cleanup & polish numbers-with-underscores parsing, also improving tests.
2018-08-08 13:38:46 +02:00
chriseth
fd12c718f6
Merge pull request #4745 from ethereum/nameResolverNoEarlyExit
...
Do not stop after the first error in reference resolution.
2018-08-08 12:49:46 +02:00
Balajiganapathi S
09a36cba02
Add stricter hex underscore rules
2018-08-08 12:05:51 +02:00
chriseth
43d6a9d763
Do not stop after the first error in reference resolution.
2018-08-07 22:04:59 +02:00
Daniel Kirchner
cc83e69469
Disallow empty return expressions in functions with non-empty return parameters.
2018-08-07 20:48:07 +02:00
Daniel Kirchner
b11e39e25e
Remove remaining instances of `fillRight
` left over from tuple wildcards assignments.
2018-08-07 18:51:53 +02:00
chriseth
d7756322c0
Merge pull request #4731 from ethereum/interface-enum
...
Allow enums in interfaces
2018-08-07 17:20:05 +02:00
chriseth
a949cffd24
Merge pull request #4699 from ethereum/cleanup_VariableDeclaration
...
libsolidity: Remove dead code wrt. VariableDeclaration::canHaveAutoType
2018-08-07 16:14:41 +02:00
Alex Beregszaszi
13e37df97c
Allow enums in interfaces
2018-08-07 13:28:53 +01:00
Alex Beregszaszi
05cc7e79e1
More precise error message if using non-variables with _slot/_offset
2018-08-07 13:18:54 +01:00
Alex Beregszaszi
eb7b3862ac
Properly handle invalid references used together with _slot and _offset.
2018-08-07 13:18:38 +01:00
Alex Beregszaszi
296ba24f7f
Do not crash on using _slot and _offset suffixes on their own
2018-08-07 12:14:12 +01:00
Christian Parpart
4c90ddf64a
libsolidity: Remove dead code wrt. VariableDeclaration::canHaveAutoType()
...
Closes #4667
2018-08-07 11:34:13 +02:00
chriseth
bc73617f5e
Merge pull request #4689 from ethereum/cleanup-050-tests
...
Cleanup 0.5.0 test cases
2018-08-06 14:45:31 +02:00
Alex Beregszaszi
3481d4e2ec
Merge pull request #4690 from ethereum/equalParameterTypes
...
Renamed FunctionType::hasEqualArgumentTypes to FunctionType::hasEqual…
2018-08-06 12:50:04 +01:00
Jesse Busman
3fcd62921e
Renamed FunctionType::hasEqualArgumentTypes to FunctionType::hasEqualParameterTypes
2018-08-06 13:05:06 +02:00
Alex Beregszaszi
08e431f94e
Remove unused 050 variable in ReferencesResolver
2018-08-06 12:03:00 +01:00
chriseth
9d03de1f25
Merge pull request #4671 from ethereum/mappingTupleAssignment
...
Disallow assignments to mappings within tuple assignments; allow for local variables.
2018-08-06 12:59:16 +02:00
chriseth
3576980710
Merge pull request #4644 from ethereum/event_struct_error
...
Disallow structs in events without ABIEncoderV2
2018-08-06 11:44:05 +02:00
chriseth
30f981fc2c
Merge pull request #4681 from ethereum/var-suggestion-crash
...
Fix declaration suggestion for var with different number of components
2018-08-06 11:21:54 +02:00
Alex Beregszaszi
83e6c34526
Fix declaration suggestion for var with different number of components
2018-08-04 15:22:22 +01:00
Christian Parpart
a4ee1dfc83
Merge pull request #4412 from ethereum/v050-reference-resolver-errorTypeForLoose
...
[BREAKING] permanently set errorTypeForLoose from Warning to SyntaxError
2018-08-03 19:30:33 +02:00
Daniel Kirchner
f9b90feea0
Review suggestions; to be squashed.
2018-08-03 17:38:06 +02:00
Daniel Kirchner
1e4b5886d6
Allow assignments to local variables of mapping types.
2018-08-03 16:22:03 +02:00
Daniel Kirchner
c0a169ca90
Disallow assignments to mappings within tuple assignments.
2018-08-03 15:46:26 +02:00
Leonardo Alt
20c6cea7bb
Disallow structs in events without ABIEncoderV2
2018-08-03 13:41:27 +02:00
Daniel Kirchner
35c5b7de25
Turn warning about uninitialized storage returns into an error.
2018-08-02 19:34:38 +02:00
chriseth
90a5928b88
Merge pull request #4522 from ethereum/fullEncodingType
...
Isolate determining the encoding type into its own function.
2018-08-02 15:01:38 +02:00
Christian Parpart
5d9320c70b
Disallow loos assembly in Solidity by permanently setting it to SyntaxError (from Warning)
2018-08-02 13:36:05 +01:00
Daniel Kirchner
ce7c7aca79
Extend code comment about signatures.
2018-08-01 17:18:17 +02:00
Daniel Kirchner
30d9961efb
Do not exclude public state variables when looking for conflicting declarations.
2018-08-01 14:31:04 +02:00
Alex Beregszaszi
ce99a5ce7f
Merge pull request #4378 from ethereum/noBaseWithoutArguments
...
[BREAKING] Disallow calling base constructors without arguments.
2018-08-01 13:18:37 +01:00
chriseth
061ea0cfc6
Correctly determine whether base constructor is called without parentheses.
2018-08-01 12:28:27 +01:00
chriseth
7e5406dd89
Disallow calling base constructors without arguments.
2018-08-01 12:28:27 +01:00
Christian Parpart
38f9667e09
Guard CycleDetector against recursion exhaustion.
...
fixes #3935 .
2018-08-01 12:02:59 +01:00
chriseth
7a8a243eef
Isolate determining the encoding type into its own function.
2018-08-01 11:55:57 +01:00
Alex Beregszaszi
21888e246b
Merge pull request #4507 from ethereum/v050-var-keyword-trace-removals
...
Ensures an empty use of var keyword is caught with the proper non-fatal error message
2018-08-01 10:59:26 +01:00
Christian Parpart
a7150f85a6
Ensures an empty use of var keyword is caught with the proper error message.
2018-08-01 09:59:06 +02:00
Leonardo Alt
210fee571f
Fix crash when FunctionType has undeclared type as parameter
2018-07-31 11:17:51 +02:00
Alex Beregszaszi
de90290c28
Merge pull request #4527 from ethereum/mappingEnforceStorage
...
Enforces explicit data location for mappings
2018-07-23 20:43:38 +01:00
Erik Kundt
c622a1e56c
Enforces data location of local mappings to storage.
2018-07-23 19:30:07 +02:00
Christian Parpart
9f35f0b805
Disallow functions without implementation to use modifiers. This was already the case in the experimental 0.5.0 mode.
2018-07-23 17:29:08 +01:00
chriseth
3fa0ac5822
Do not handle balance
member of contract types specially.
2018-07-20 10:50:05 +02:00
chriseth
e3c2f20f6e
Merge pull request #4439 from ethereum/address_members
...
[BREAKING] Enforce address members not accessible by contract instance
2018-07-19 09:24:27 +02:00
Leonardo Alt
faa9c221d4
Changes in ExpressionCompiler
2018-07-18 19:51:24 +02:00
Erik Kundt
b0b35e1e6b
Adds warning if function is shadowing a contract.
2018-07-18 14:29:01 +02:00
Erik Kundt
182a0a9551
Disallows old constructor syntax.
2018-07-18 14:29:01 +02:00
chriseth
dfd2fee91d
Suggests external for fallback and interface functions.
2018-07-17 18:07:36 +02:00
Erik Kundt
b5ecfbe5bc
Enforces visibility specifier and updates docs.
2018-07-17 17:44:51 +02:00
Leonardo Alt
563e0fc9a7
Add suggestion to error message
2018-07-17 16:38:36 +01:00
Leonardo Alt
fdfdddd8dc
Add missing period in the end of error messages
2018-07-16 16:11:39 +01:00
Alex Beregszaszi
21e97da294
Deprecate the throw statement
2018-07-16 15:33:20 +02:00
Christian Parpart
396bf11858
enforce interface-functions to be external-declared
...
- libsolidity: Enforce interface-functions must be external-declared.
- Changelog adapted to reflect changes wrt. functions in interfaces.
- test: Adjustments according to prior interface-function changes.
- tests: Adapting SolidityEndToEndTest to interface-function change.
- docs: Adapted documentation to interface-function change.
2018-07-16 12:15:36 +02:00
chriseth
bab4a3975f
Merge pull request #4501 from ethereum/recursiveStructsWithFixedArrays
...
Consider fixed-size arrays when checking for recursive structs.
2018-07-13 01:26:50 +02:00
Daniel Kirchner
fc370591f0
Disallow multi variable declarations with mismatching number of values.
2018-07-12 20:33:51 +02:00
Daniel Kirchner
d71a023c0b
Use CycleDetector and account for multi-dimensional arrays.
2018-07-12 20:14:02 +02:00
Daniel Kirchner
d4dfd28694
Consider fixed size array members when checking for recursive structs.
2018-07-12 20:14:02 +02:00
chriseth
5d8a8f7265
Merge pull request #4437 from ethereum/report-empty-var-decls
...
[BREAKING] Report empty var tuple decls
2018-07-12 19:22:38 +02:00
Christian Parpart
cc585138bc
Generates a syntax error when declaring a variable declaration's LHS has no named components
2018-07-12 13:26:52 +02:00
Daniel Kirchner
a1f54f4e40
Require storage location.
2018-07-12 12:48:18 +02:00
chriseth
99bee7e233
Merge pull request #4443 from ethereum/double_var_decl_fix
...
Fix crash when declaring the same var twice in the same scope
2018-07-12 00:05:32 +02:00
Christian Parpart
08345209e6
Merge pull request #4404 from ethereum/v050-var-keyword-suggest
...
[WIP] v0.5.0 var keyword type suggestion
2018-07-11 16:33:09 +02:00
chriseth
f3abfa81ad
Merge pull request #4454 from ethereum/constructorArgCount
...
[BREAKING] Wrong argument count in constructor call
2018-07-11 14:45:05 +02:00
chriseth
238dbe1b99
Merge pull request #4388 from ethereum/noPackedLiterals
...
Disallow packed encoding of literals.
2018-07-11 14:28:20 +02:00
Erik Kundt
7c7e154a7b
Improves error with suggestion to remove parantheses.
2018-07-11 01:58:17 +02:00
Erik Kundt
34a031609e
Updates Changelog, syntax test and simplifies type checker.
2018-07-11 01:58:17 +02:00
Erik Kundt
0b960f5a9c
Turns wrong argument count in base constructor call into en error.
2018-07-11 01:56:07 +02:00
Cryptomental
140dbfdbd8
Code, Changelog, ReleaseChecklist: Fix typos.
...
Refs: #4442
2018-07-11 00:26:23 +02:00
chriseth
458a4c8aa5
Coding style.
2018-07-10 22:29:53 +02:00
Christian Parpart
1505e28b56
semantics: Suggest auto-deduced type when user declares variable with var
keyword.
2018-07-10 22:14:19 +02:00
chriseth
d84976dc87
Merge pull request #4376 from ethereum/fallbackExternal
...
Fallback functions have to be external
2018-07-10 21:39:25 +02:00
chriseth
12045d2e11
Merge pull request #4464 from cryptomental/bugfix/fix-typos-in-AsmParser-and-TypeChecker
...
AsmParser,TypeChecker: Fix typos.
2018-07-10 21:07:56 +02:00
chriseth
6567cd3e51
Merge pull request #4466 from ethereum/tupleNotEmpty
...
Disallow empty tuple components.
2018-07-10 21:03:30 +02:00
Leonardo Alt
cee4775a58
Add comment explaining new code
2018-07-10 18:54:46 +02:00
Leonardo Alt
c286cdaa62
Fix crash for double variable declaration in the same scope.
2018-07-10 18:54:46 +02:00
Christian Parpart
8ca69ed8d8
defaulting to v0.5.0 behaviour of unary + operator (disallow); also adapting all tests to it
2018-07-10 16:27:57 +02:00
chriseth
64abfd3e4a
Remove special `(x,)
` case from type assignment.
2018-07-10 15:58:46 +02:00
Daniel Kirchner
a6e5a51d61
Disallow empty tuple components.
2018-07-10 15:27:46 +02:00
chriseth
7650905567
Merge pull request #4415 from ethereum/uninitializedStoragePointer
...
[BREAKING] Turn uninitialized storage variables into error.
2018-07-10 15:24:01 +02:00
Cryptomental
a55abb550d
AsmParser,TypeChecker: Fix typos.
...
Fix typos. The change requested as a separate PR during codespell PR.
Adapt tests as well.
Refs: #4442
2018-07-10 12:33:19 +02:00
Daniel Kirchner
ece9afef8f
Check for matching number of components in TupleType::isImplicitlyConvertibleTo instead of the TypeChecker.
2018-07-10 12:17:01 +02:00
Daniel Kirchner
fe1d5da2a6
Turn uninitialized storage variables into an error.
2018-07-10 11:37:45 +02:00
Leonardo Alt
c1b67a845b
Enforce error on hex number combined with unit denomination
2018-07-09 17:19:41 +02:00
chriseth
f3e0bf1dd8
Merge pull request #4418 from ethereum/initialConstants
...
Only allow compile-time constants for constant state variables.
2018-07-05 17:07:32 +02:00
chriseth
4a332ab324
Merge pull request #4409 from ethereum/viewPureChecker
...
Enforce state mutability in view pure checker.
2018-07-04 14:09:46 +02:00
Leonardo Alt
8202d512e0
Enforcing error on msg.gas and block.blockhash()
2018-07-04 11:42:05 +02:00
Daniel Kirchner
7ea8365ab0
Remove v050 check for enforcing "view" in ViewPureChecker.
2018-07-04 10:14:58 +02:00
chriseth
8ed3da1d5f
Only allow compile-time constants for constant state variables.
2018-07-03 23:03:26 +02:00
chriseth
87241fd58c
Fallback function has to be external.
2018-07-03 22:51:36 +02:00
chriseth
533d5d4b1c
Merge pull request #4379 from ethereum/constructorArgsTwice
...
Disallow constructor arguments given multiple times.
2018-07-03 22:49:02 +02:00
Christian Parpart
1486d215b9
libsolidity: turns the var-keyword use from deprecation-warning to an error and include explicit type suggestion
2018-07-03 10:53:09 +02:00
chriseth
f7a9c4203e
Disallow packed encoding of literals.
2018-07-03 01:02:00 +02:00
Daniel Kirchner
9aefe2f118
Remove trailing whitespace in missing visibility warning.
2018-07-02 13:14:58 +02:00
chriseth
f69e24c85e
Disallow constructor arguments given multiple times.
2018-06-29 16:11:21 +02:00
chriseth
d469df45d8
Merge pull request #4352 from D-Nice/develop
...
Fixes storage ref var typo error from 'prefix' to 'suffix'
2018-06-29 12:27:29 +02:00
chriseth
4a842ecc82
Merge pull request #4097 from ethereum/noPackedExceptForPacked
...
[BREAKING] call only takes a single argument and does not pad
2018-06-27 18:29:01 +02:00
chriseth
92cb4acd8a
Also mention regular abi.encode in error message.
2018-06-27 15:00:34 +02:00
Alex Beregszaszi
80b7d36187
Remove non-0.5.0 warning for emit keyword (make it mandatory)
2018-06-26 20:00:54 +02:00
chriseth
5cf6fa84ac
Provide better suggestions in error messages with respect to call and hash functions.
2018-06-25 17:17:48 +02:00
D-Nice
b2f0d1db43
Fixes storage ref var typo error from 'prefix' to 'suffix'
2018-06-25 11:14:19 -04:00
chriseth
23c4142005
Bare functions take single bytes argument.
2018-06-25 17:01:45 +02:00
Alex Beregszaszi
6d9a091a8e
Keep the 'if it not used as an address' helper message for all cases of address related warnings
2018-06-25 16:25:21 +02:00
Alex Beregszaszi
48b003d4d4
Better wording for invalid address literal error
2018-06-25 16:17:50 +02:00
Jason Cobb
51567c0513
Change invalid (not exactly 160 bits long) address literal to error
2018-06-25 16:17:50 +02:00
Alex Beregszaszi
72e87423db
Disallow the years unit denomination properly
2018-06-21 20:21:02 +02:00
chriseth
32f2db780c
Merge pull request #4301 from rnaby/TypeChecker
...
Simplification of typeSupportedByOldABIEncoder
2018-06-21 18:53:31 +02:00
chriseth
0d1047181d
Merge pull request #4306 from ethereum/remove_050_workaround_scoping
...
[BREAKING] C99 scoping rules by default (remove 050 workaround)
2018-06-21 13:57:59 +02:00
Alex Beregszaszi
7e4bd3e346
Merge pull request #4219 from ethereum/functionTypeNamedArguments
...
Turn named return parameters in function types into an error.
2018-06-20 23:51:19 +02:00
Khan M Rashedun-Naby
a5f0caa178
Simplification of typeSupportedByOldABIEncoder
2018-06-20 23:16:21 +06:00
Leonardo Alt
8862b3092b
C99 scoping rules by default
2018-06-20 12:53:38 +02:00
Alex Beregszaszi
a17059573f
Disallow raw callcode (was deprecated in 0.4.12)
2018-06-19 19:31:07 +02:00
Daniel Kirchner
dbfee87860
Return parameters in function types may not be named.
2018-06-18 00:05:06 +02:00
Christian Parpart
a211b89118
Enforce disallowing empty structs
...
This patch enfoces an error when it encounters an empty struct,
effectively eliminating the deprecation warning.
Also adjust 419_interface_structs to explicitely test for (non-empty) structs,
as this behaviour "may" change in the future.
2018-06-14 00:24:43 +01:00
Alex Beregszaszi
9de45383d8
Disallow sha3/suicide aliases
2018-06-12 18:16:18 +01:00
Alex Beregszaszi
0f572159ec
Show named argument name in error
2018-06-06 15:59:27 +01:00
chriseth
283cdef98c
Fix view/pure error ordering problem.
2018-06-04 17:00:37 +02:00
mingchuan
b7cafcbdf9
Allow using calldata
keyword to specify data location
2018-05-30 18:05:55 +08:00
Daniel Kirchner
1cbc037a45
Update control flow graph.
2018-05-16 18:32:48 +02:00
Alex Beregszaszi
221a4d1f1f
Split warning for multi arguments for hash functions
2018-05-16 11:12:25 +02:00
chriseth
894122c508
Warn/enforce single bytes argument for certain builtins (hashing functions).
...
In 0.5.0 mode, only accept a single bytes argument for ``.call``,
``keccak256`` and others and do not pad when encoding.
2018-05-16 09:48:03 +02:00
chriseth
dac0029d16
ABI encoding functions are pure and should be usable in constants.
2018-05-15 14:45:54 +02:00
Daniel Kirchner
16e966dea0
Add control flow analyzer and test for uninitialized storage returns.
2018-05-14 20:23:40 +02:00
Daniel Kirchner
995623f0fa
Add control flow graph.
2018-05-14 20:23:40 +02:00
chriseth
fe12f05c08
Deprecate wildcard assignments.
2018-05-08 15:13:32 +01:00
chriseth
150d226603
Merge pull request #4063 from ethereum/emit-non-event
...
Show proper error when trying to emit a non-event
2018-05-04 15:02:04 +02:00
Alex Beregszaszi
ffe7f224a6
Show proper error when trying to emit a non-event
2018-05-04 12:47:01 +02:00
Alex Beregszaszi
b34428249a
Change numBits to unsigned IntegerType
2018-05-02 23:22:25 -07:00
chriseth
d1e1293fbd
Merge pull request #3981 from ethereum/years-suffix
...
The "year" denomination is deprecated
2018-04-24 12:12:03 +02:00
chriseth
e685f9f59e
Merge pull request #3976 from ethereum/emptyTupleComponent
...
Empty tuple components should not be possible
2018-04-23 17:35:00 +02:00
Alex Beregszaszi
1ac0090f31
The "year" denomination is deprecated
2018-04-23 16:19:51 +01:00
Erik Kundt
896018c8a3
Treats inline array as an error.
2018-04-23 17:11:41 +02:00
Erik Kundt
b2ff9bc88d
Turns it into warning (error for 0.5.0) and adds Changelog entry.
2018-04-23 17:09:42 +02:00
Erik Kundt
f2b58de92c
Prevents null type from being used in tuple.
2018-04-22 16:54:33 +02:00
Alex Beregszaszi
0493e3b053
Turn deprecated warnings for sha3/suicide into errors (experimental 0.5.0)
2018-04-20 17:40:48 +01:00
Alex Beregszaszi
069ea38916
Make literals an error for tight packing (experimental 0.5.0)
2018-04-20 11:58:16 +01:00
chriseth
a94945dfe4
Improve error message for failed member lookup.
2018-04-18 22:56:45 +01:00
chriseth
4895864302
Warn about functions named "constructor".
2018-04-18 21:23:09 +02:00
chriseth
29a97f1641
Fix name clashes between constructor and fallback function.
2018-04-18 14:24:35 +02:00
chriseth
d8030c9b2a
Merge pull request #3880 from ethereum/addressMemberDocAndWarn
...
Improve documentation and warning about accessing contract members in…
2018-04-16 11:05:05 +02:00
chriseth
95c49b367e
Merge pull request #3875 from ethereum/constructorSelfRef
...
Stricter check for "this" in constructor.
2018-04-13 18:39:31 +02:00
Daniel Kirchner
05c5ab19fb
Improve documentation and warning about accessing contract members inherited from address.
2018-04-13 18:26:24 +02:00
Daniel Kirchner
be37e3a912
Stricter check for member access to "this" in constructor.
2018-04-13 15:57:13 +02:00
chriseth
7054defdd6
Merge pull request #3364 from ethereum/revertWithReason
...
Revert with reason
2018-04-12 21:01:08 +02:00
chriseth
44416d1ac6
Merge pull request #2980 from ethereum/abi-api
...
Add abi.encode and abi.encodePacked
2018-04-12 20:55:03 +02:00
chriseth
75b8828666
Allow struct encoding with new encoder.
2018-04-12 16:37:16 +02:00
chriseth
ae1d040285
Allow error string for `require
`.
2018-04-12 13:09:37 +02:00
chriseth
8ab7dc036a
Register overload for `revert()
` that can receive a reason string.
2018-04-12 13:09:37 +02:00