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
chriseth
f00bb43593
Allow function overloads involving MagicVariableDeclarations.
2018-04-12 13:09:37 +02:00
chriseth
c3dc67d0e0
Merge pull request #3848 from ethereum/constantDivisionByZero
...
Error on invalid arithmetic with constant expressions.
2018-04-12 11:49:08 +02:00
chriseth
7343c40283
Check partial function parameters if rest is arbitrary.
2018-04-12 00:10:25 +02:00
Alex Beregszaszi
d56acb68ab
Add abi.encode, abi.encodePacked, abi.encodeWithSelector and abi.encodeWithSignature.
2018-04-11 22:32:10 +02:00
chriseth
2ad1acaf72
Warn if modifiers are applied to functions without implementation.
2018-04-11 22:00:21 +02:00
Daniel Kirchner
daa69df447
Error on invalid arithmetic with constant expressions.
2018-04-11 21:17:10 +02:00
Daniel Kirchner
cb548f6f53
Fix ConstantEvaluator to correctly handle single element tuples.
2018-04-11 18:30:34 +02:00
chriseth
c9bdbcf470
Merge pull request #3309 from ethereum/limit-errors
...
Limit the number of errors output in a single run to 256
2018-04-11 16:13:41 +02:00
Daniel Kirchner
3eedbc6a9c
Error when using no parentheses in modifier-style constructor calls.
2018-04-10 12:09:34 +02:00
Daniel Kirchner
549ba801fb
Use the most derived contract as main location in case of diamond inheritance.
2018-04-09 16:23:18 +02:00
Daniel Kirchner
b918a105a4
Move constructor argument override check to TypeChecker and reuse annotations in ContractCompiler.
2018-04-09 15:26:08 +02:00
Daniel Kirchner
b8fdb666e2
Allow duplicated constructor calls, if no arguments; support for multiple inheritance; backwards compatibility.
...
# tmp
2018-04-09 15:26:05 +02:00
Federico Bond
4e037281ac
Error on duplicated super constructor calls
2018-04-09 11:22:35 +02:00
Daniel Kirchner
b2753aa053
Static Analyzer: Fix non-deterministic order of unused variable warnings.
2018-04-06 18:10:26 +02:00
Alex Beregszaszi
e8be0e61b3
Catch FatalError in CompilerStack::analysis to cover all the analysis tests
2018-04-06 13:52:19 +02:00
Daniel Kirchner
037eba20fc
Merge pull request #3824 from ethereum/baseArgumentsEmptyParenthesis
...
Error when using empty parentheses for base class constructors that r…
2018-04-05 14:43:28 +02:00
Alex Beregszaszi
36d6c27e68
Merge pull request #3745 from ethereum/fixRecursion
...
Fix invalid recursion errors for structs
2018-04-05 12:04:54 +02:00
Daniel Kirchner
96eff0ff6a
Error when using empty parenthesis for base class constructors that require arguments.
2018-04-05 11:52:22 +02:00
Daniel Kirchner
d664a599e6
Constructors are defined using the `constructor
` keyword.
2018-04-03 18:21:55 +02:00
chriseth
eb5b18e814
Generalize cycle detection.
2018-04-03 16:29:18 +02:00
Alex Beregszaszi
7753249f64
Merge pull request #3699 from ethereum/interfaceExternalVisibility
...
Defaults to external visibility for interfaces.
2018-04-03 15:15:36 +01:00
Erik Kundt
f9efa41749
Makes visibility warning more concise.
2018-04-03 11:16:50 +02:00
bitshift
8fe1cfb12e
Defaults to external visibility for interfaces.
2018-04-03 11:16:44 +02:00
chriseth
326d656a55
Merge pull request #3790 from ethereum/empty-structs
...
Disallow empty structs
2018-03-30 13:58:35 +02:00
chriseth
5c8a6aac69
Prevent encoding of weird types and support packed encoding of external function types.
2018-03-29 09:57:11 +01:00
Alex Beregszaszi
ebb12756ad
Still allow empty structs for non-0.5.0 mode
2018-03-27 15:49:41 +01:00
Alex Beregszaszi
b540ba527a
Disallow empty structs
2018-03-27 15:49:41 +01:00
chriseth
62559cf127
Merge pull request #3681 from ethereum/interface-external
...
Allow overriding external functions in interfaces with public in a child
2018-03-27 15:47:59 +02:00
bitshift
2c56e53046
Changes deprecation and adjusts tests.
2018-03-27 03:30:03 +01:00
bitshift
ed632025fe
Moves blockhash function to global level.
2018-03-27 03:30:03 +01:00
Alex Beregszaszi
8bae2dba7c
Introduce inContractKind helper on FunctionDefinition
2018-03-26 11:37:38 +01:00
Alex Beregszaszi
ef3595b000
Allow overriding external functions in interfaces with public in an implementing contract
2018-03-26 11:35:17 +01:00
chriseth
c2709a2d8e
Decode dynamic data.
2018-03-21 14:53:29 +00:00
chriseth
cc2f71e4ac
Move dynamic type removal out of the type system.
2018-03-21 14:53:29 +00:00
Alex Beregszaszi
ba8819542f
Merge pull request #3611 from ethereum/warn-using-address-overload
...
Warn if using address overloads on contracts
2018-03-06 19:13:55 +01:00
chriseth
baa1526539
Merge pull request #3664 from ethereum/literalsHexUnitSmallFix
...
Use double quotes for suggestion about hex literals and denominations.
2018-03-06 19:01:25 +01:00
Daniel Kirchner
b4d38c5491
Use double quotes for suggestion about hex literals and denominations.
2018-03-06 18:09:54 +01:00
chriseth
fd1662d1c4
Warn about using loose inline assembly features as experimental 0.5.0 feature.
2018-03-06 17:45:34 +01:00
Alex Beregszaszi
83dacbf669
Merge pull request #3549 from ethereum/fixmultidim
...
Properly detect which array and struct types are unsupported by the old ABI encoder.
2018-03-06 15:51:17 +01:00
chriseth
f6c0daec14
Merge pull request #3652 from ethereum/gasleft_v2
...
Use StaticAnalyzer to deprecate msg.gas instead of conditionally remo…
2018-03-06 09:26:14 +01:00
Daniel Kirchner
91b13b734d
Use StaticAnalyzer to deprecate msg.gas instead of conditionally removing it in MagicType.
2018-03-05 23:16:26 +01:00
chriseth
3793aa405b
Merge pull request #3643 from ethereum/gasleft
...
Move msg.gas to global function gasleft(). Closes #2971 .
2018-03-05 20:11:37 +01:00
chriseth
1ceb0b04c1
Assert that address members are not present on contract types in 0.5.0.
2018-03-05 15:55:02 +01:00
Alex Beregszaszi
fd60c1cf86
Warn if using address overloads on contracts
2018-03-05 15:50:27 +01:00
chriseth
6dc137317f
Merge pull request #3569 from ethereum/evmVersion
...
EVM version
2018-03-05 12:10:49 +01:00
Daniel Kirchner
c633c0eacb
Move msg.gas to global function gasleft(). Closes #2971 .
2018-03-05 11:18:04 +01:00
Daniel Kirchner
454b470cee
Suggest expressions of the form '0x1234 * 1 day' instead of hex numbers with unit denominations.
2018-03-02 10:22:58 +01:00
chriseth
dc317a44e0
Provide EVM version to assembly analysis.
2018-03-01 17:19:35 +01:00
chriseth
a53d6b499d
Use EVM version in type checker.
2018-03-01 17:19:35 +01:00
Daniel Kirchner
bd4c2b9bde
Deprecate using unit denominations in combination with hex numbers. Closes #3574 .
2018-03-01 16:58:55 +01:00
chriseth
08b6a72d37
Fix multi-dimensional arrays in the ABI.
2018-03-01 14:28:27 +01:00
chriseth
22d26e059c
Merge pull request #3613 from ethereum/require-visibility
...
Issue error if no visibility is specified (on 0.5.0)
2018-02-28 16:33:39 +01:00
Alex Beregszaszi
a566825589
Issue error if no visibility is specified (on 0.5.0)
2018-02-27 16:31:53 +01:00
chriseth
88a5c66f4a
Only active variables at the point of their declaration.
2018-02-27 12:17:25 +01:00
chriseth
6b9dda06f3
Enable C99-scoping with the 0.5.0-experimental pragma.
2018-02-27 12:17:25 +01:00
chriseth
e6d48bb72a
Blocks and for loops can be scopes.
2018-02-27 12:17:25 +01:00
chriseth
5f20129e65
Scopes do not have to be declarations.
2018-02-27 12:17:25 +01:00
chriseth
53289e15a2
Make all lookups recursive by default.
2018-02-27 12:17:25 +01:00
Alex Beregszaszi
5c0d82059f
Turn throw into a syntax error for 0.5.0
2018-02-27 02:10:24 +01:00
chriseth
8c1a8ecc2e
Warn about using events without emit.
2018-02-22 15:17:42 +01:00
chriseth
388718b59f
Introduce emit statement.
2018-02-22 15:17:30 +01:00
chriseth
c182284d28
Do not warn about analysis-only experimental features.
2018-02-22 14:50:20 +01:00
chriseth
4272d16f30
Fix shadowing for imports with aliases.
2018-02-20 13:06:28 +01:00
chriseth
930485cd24
Properly warn about the use of constants in inline assembly in connection with `_offset
and
_slot
`.
2018-02-19 19:22:39 +01:00
chriseth
e08a206070
Disallow uninitialized storage pointers as experimental 0.5.0 feature.
2018-02-15 11:58:50 +01:00
chriseth
23484ba6a4
Merge pull request #3498 from ethereum/allowthisfselector
...
Allow `this.f.selector` to be pure.
2018-02-13 17:08:35 +01:00
chriseth
1dcd7c5e0b
Fix: remove reference.
2018-02-13 15:04:10 +00:00
chriseth
dc0a25f1cd
Minor changes.
2018-02-13 15:04:03 +00:00
Balajiganapathi S
8a491c77ba
Restructure code for alternative identifier suggestions
2018-02-13 15:00:15 +00:00
Balajiganapathi S
b1417b318f
Move string distance function to utils and format error message
2018-02-13 14:59:33 +00:00
Balajiganapathi S
2859834e58
Suggest alternatives when identifier not found.
2018-02-13 14:54:36 +00:00
chriseth
5916cf1e0a
Allow this.f.selector
to be pure.
2018-02-13 11:00:59 +01:00
Jimmy Vogel
dc5ad899d0
Deprecate the var keyword (and mark it an error as experimental 0.5.0 feature)
2018-02-12 22:37:26 +00:00
Federico Bond
75a3a707a2
Fix segfault with undeclared array types
2018-02-11 21:40:41 -03:00
Alex Beregszaszi
32300ea3ff
Merge pull request #3360 from federicobond/nonfatal-reference-errors
...
Replace some fatal errors when resolving references with normal ones
2018-02-04 13:07:55 +00:00
Federico Bond
600e66e605
Replace some fatal errors when resolving references with normal ones
2018-02-02 14:09:32 -03:00
Alex Beregszaszi
b545987ec7
Issue warning for using public visibility for interface functions
2018-02-01 10:28:00 +00:00
chriseth
124190336b
Split inline assembly into loose and strict flavours.
2018-01-06 01:23:38 +00:00
Alex Beregszaszi
2cdd789b5d
Merge pull request #3297 from ethereum/separate_expression_and_statement
...
Separate expression and statement
2018-01-04 12:04:19 +00:00
Federico Bond
a0771691ff
Improve error message for wrong struct initialization ( #3359 )
2018-01-04 11:24:39 +01:00
chriseth
3d1830f3f2
Merge pull request #3232 from ethereum/simplifyConstant
...
Simplify ConstantEvaluator.
2017-12-14 16:14:46 +01:00
chriseth
54b6739962
Separate expression and statement.
2017-12-13 12:28:15 +01:00
chriseth
e7ed9d878e
Re-use commonType
2017-12-12 10:45:40 +01:00
chriseth
48c7ba72f3
Simplify ConstantEvaluator.
2017-12-12 09:44:18 +00:00
Alex Beregszaszi
7ff9a85592
Reduce the types of errors outputted by ConstantEvaluator
2017-12-12 09:40:29 +00:00
Alex Beregszaszi
5226d54ed1
Improve error message for constant evaluator
2017-12-12 09:39:26 +00:00
chriseth
2d171c25e5
Limit number of secondary source locations.
2017-12-12 10:27:28 +01:00
chriseth
9e36c189e5
Fix struct encoding warning for libraries.
2017-12-11 02:34:42 +00:00
Alex Beregszaszi
e9d256ddf4
Suggest the experimental ABI encoder if using structs as function parameters
2017-12-11 02:34:42 +00:00
Alex Beregszaszi
745eefa36f
Split Instruction and FunctionalInstruction in Julia
2017-12-05 14:52:11 +00:00
chriseth
19e067465a
Unary operators and division.
2017-11-30 01:20:21 +01:00
chriseth
6dbc34e16e
If statement for Iulia / inline assembly.
2017-11-22 16:25:24 +01:00
Alex Beregszaszi
455e51a608
Improve cyclic constant error message
2017-11-22 02:11:22 +00:00
Balajiganapathi S
d102deaec9
Detect cyclic constant definitions
2017-11-22 02:07:56 +00:00
Balajiganapathi S
165857b1d4
Allow constant integer variables as array lengths.
2017-11-22 01:41:46 +00:00
Alex Beregszaszi
1d5dd909b4
Do not try to display checksummed address for too-short/long address literals
2017-11-17 00:46:45 +00:00
wadeAlexC
8a6692b2cf
Improves address literal checksum error message
2017-11-17 00:46:44 +00:00
Kwang Yul Seo
33664c04a8
Update outdated comments
...
_errors -> _errorReporter.
2017-11-16 00:28:41 +09:00
Kwang Yul Seo
f364529713
Fix a typo
...
A semicolon was mistakenly inserted where a string concatenation
operator was meant.
2017-11-14 21:50:09 +09:00
Alex Beregszaszi
3a8324266f
More detailed errors for invalid array lengths (such as division by zero).
2017-10-20 11:59:18 +01:00
Alex Beregszaszi
10677125ae
Turn usage of callcode into an error as experimental 0.5.0 feature
2017-10-19 02:20:30 +01:00
chriseth
8a8a71de84
Only check tuples for valid rational numbers if they have more than one element.
2017-10-17 19:14:49 +02:00
Alex Beregszaszi
c99d2aae04
Validate each tuple literal
2017-10-17 18:59:01 +02:00
Alex Beregszaszi
c45e55675c
Force interface functions as external (0.5.0)
2017-10-06 13:48:38 +01:00
Alex Beregszaszi
ed62b2583c
Use the proper error reporting interface in ConstantEvaluator
2017-10-05 20:17:54 +01:00
Alex Beregszaszi
81519845bc
Require location keyword for local variables (0.5.0)
2017-10-05 19:02:30 +01:00
Federico Bond
76d3d24842
Do not consider shadowing in variable names inside event declarations
2017-10-04 13:30:26 -03:00
wadeAlexC
73f17876e9
Better error message when using fractional number as array size expressions
2017-10-03 22:01:58 +01:00
Federico Bond
2b82352692
Disallow non-pure constant state variables in 0.5.0
2017-10-03 15:30:16 +01:00
Federico Bond
1e7b6875b7
Extract duplicate function or event finding logic
2017-09-29 19:45:56 -03:00
Federico Bond
6d95447955
Emit error when declaring event with same name and arguments twice
2017-09-29 19:17:31 -03:00