Alex Beregszaszi
c7ee649d80
More user friendly output in case of Identifier and Token keywords
2018-05-04 13:27:05 +01:00
Alex Beregszaszi
882248ce75
Remove code duplication in expectToken
2018-05-04 13:27:05 +01:00
Alex Beregszaszi
252bde8542
Introduce Token::friendlyName() helper
2018-05-04 13:11:23 +01:00
Alex Beregszaszi
e3279d8af8
Display nicer error messages in the parser (display tokens and not internal names)
2018-05-04 12:39:37 +01:00
chriseth
81d61ca086
Merge pull request #4059 from ethereum/parser-simplify
...
Simplify the parser expectations
2018-05-04 12:50:12 +02:00
Alex Beregszaszi
ffe7f224a6
Show proper error when trying to emit a non-event
2018-05-04 12:47:01 +02:00
daniel
aa1542a9e1
Change bytes to unsigned in FixedBytesType
2018-05-03 23:11:34 +01:00
Alex Beregszaszi
ed9f80690b
Simplify expectIdentifierToken by using expectToken
2018-05-03 22:10:51 +01:00
Alex Beregszaszi
73c99d15cd
Remove useless helper expectAssignmentOperator in parser
2018-05-03 21:35:38 +01:00
Alex Beregszaszi
b34428249a
Change numBits to unsigned IntegerType
2018-05-02 23:22:25 -07:00
Alex Beregszaszi
2c00ebbee1
Change totalBits and fractionalDigits to unsigned in FixedPointType
2018-05-02 23:22:25 -07:00
chriseth
a856135bbf
Merge pull request #3797 from ethereum/shift-constantinople
...
Use native shift instructions on Constantinople
2018-05-02 16:50:15 +02:00
chriseth
8debded743
Revert "BREAKING: Bool variables should not allow arithmetic comparison"
2018-05-02 15:56:59 +02:00
chriseth
42289b642f
Merge pull request #4003 from ethereum/bool_vars_comparison
...
BREAKING: Bool variables should not allow arithmetic comparison
2018-05-02 15:56:06 +02:00
Alexander Arlt
f94b793472
Add virtual destructors on base classes.
2018-05-02 13:29:16 +02:00
Alex Beregszaszi
059e232e69
Support shifts in gas estimator
2018-04-30 21:22:59 +01:00
chriseth
2968639406
Removed signed shift right from the utilities.
2018-04-30 20:34:43 +01:00
Alex Beregszaszi
52c9441879
Do not use SAR instead of SDIV in shifts because it rounds differently
2018-04-30 20:34:43 +01:00
Alex Beregszaszi
c3608eaf90
Use native shift instructions in ABIFunctions on Constantinople
2018-04-30 20:34:43 +01:00
Alex Beregszaszi
22bfd3da41
Use native shift instructions on Constantinople
2018-04-30 20:34:43 +01:00
chriseth
d26b6b64c0
Merge pull request #3996 from ethereum/refactorParser
...
Refactor parser.
2018-04-30 19:15:11 +02:00
chriseth
15024154ab
Merge pull request #4018 from ethereum/disable-bytes0
...
Disable FixedBytesType(0) aka bytes0
2018-04-30 18:19:07 +02:00
chriseth
9e61b25dc4
Merge pull request #3958 from meowingtwurtle/fixedPointTypes
...
Types class changes for fixed points
2018-04-30 15:56:55 +02:00
Alex Beregszaszi
548bf2ff28
Remove unused function smallestTypeForLiteral
2018-04-30 14:35:26 +01:00
Alex Beregszaszi
e0b178e1c5
Disable FixedBytesType(0) aka bytes0
2018-04-30 12:23:30 +01:00
Leonardo Alt
ab251c7e7d
Bool variables should not allow arithmetic comparison
2018-04-27 11:35:58 +02:00
chriseth
d44fb03322
Refactor parser.
2018-04-26 10:59:02 +02:00
Alexander Arlt
3ec667f59b
Add virtual destructor in LValue class.
2018-04-24 23:39:25 +02:00
chriseth
d1e1293fbd
Merge pull request #3981 from ethereum/years-suffix
...
The "year" denomination is deprecated
2018-04-24 12:12:03 +02:00
Alex Beregszaszi
258ae8927e
Merge pull request #3970 from elopio/test/docstring-tag-end
...
docstring: add missing space
2018-04-24 02:16:27 +01:00
Leo Arias
b74566e4ea
docstring: add missing space
2018-04-23 21:47:53 +00: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
5423974e87
Remove category check in FixedPointType:binaryOperatorResult as commonType handles the same
2018-04-20 17:54:34 +01:00
Jason Cobb
57003c534a
Types changes for fixed points
2018-04-20 17:53:42 +01: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
676732776e
Merge pull request #3943 from ethereum/smt_remove_branch_warning
...
[SMTChecker] Remove 'information is erase' message for if-else
2018-04-20 09:01:59 +02:00
chriseth
2546a274ca
Merge pull request #3941 from ethereum/bytes-contract
...
Disallow explicit conversion of bytesXX to contract
2018-04-19 16:10:15 +02:00
Alex Beregszaszi
754d79edfa
Disallow explicit conversion of bytesXX to contract
2018-04-19 15:58:14 +02:00
Leonardo Alt
ba3d16fc58
[SMTChecker] Remove 'information is erase' message for if-else
2018-04-19 09:28:44 +02:00
chriseth
a94945dfe4
Improve error message for failed member lookup.
2018-04-18 22:56:45 +01:00
Alex Beregszaszi
39b7b44a8d
Merge pull request #3923 from ethereum/warnConstructor
...
Warn about functions named "constructor".
2018-04-18 22:22:58 +01:00
Alex Beregszaszi
377254d5a8
Merge pull request #3922 from ethereum/smt_sol_unimplementedassert
...
[SMTChecker] Using solUnimplementedAssert instead of solAssert
2018-04-18 20:28:47 +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
Leonardo Alt
78ba34608f
[SMTChecker] Using solUnimplementedAssert instead of solAssert when applicable
2018-04-18 13:17:59 +02:00
Leonardo Alt
ae3350ae03
[SMTChecker] Integration with CVC4
2018-04-17 12:26:58 +01:00
chriseth
3d04d83297
Merge pull request #3868 from ethereum/bytescleanup
...
Properly force-clean for shortening bytesXX conversions.
2018-04-16 15:23:36 +02:00
chriseth
533d08517f
Merge pull request #3793 from ethereum/rationalNumberLimit
...
Rational number limit
2018-04-16 13:10:50 +02:00
Alex Beregszaszi
0201492bbf
Remove redundant cleanup for abi.encode.
2018-04-16 12:47:38 +02:00
chriseth
4c1d39b7a2
Properly force-clean for shortening bytesXX conversions.
2018-04-16 12:47:38 +02:00
Erik Kundt
33fbf88707
Limits rational numbers to 4096 bits.
2018-04-16 11:45:55 +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
Erik Kundt
8935c0dd2f
Uses short string representation of TypePointer
2018-04-12 21:14:50 +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
Daniel Kirchner
6862f22943
Fix internal compiler error when parsing `var
` declaration without identifier.
2018-04-12 14:57:14 +02:00
chriseth
4faa839813
Use error signature for revert data.
2018-04-12 13:09:38 +02:00
chriseth
fcb7a27216
Only forward returndata if EVM version supports it.
2018-04-12 13:09:38 +02:00
chriseth
7a9ee69e98
Bubble up error messages.
2018-04-12 13:09:38 +02:00
chriseth
ae1d040285
Allow error string for `require
`.
2018-04-12 13:09:37 +02:00
chriseth
012ab37fe3
Code generator for revert with reason string.
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
17fc0f54b5
Use FunctionTypePointer (adds `const
`).
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
b5a696ad48
Properly cope with constructor headers.
2018-04-11 22:00:21 +02:00
chriseth
2ad1acaf72
Warn if modifiers are applied to functions without implementation.
2018-04-11 22:00:21 +02:00
chriseth
6d289783b4
Fix state variable parsing.
2018-04-11 22:00:04 +02:00
chriseth
ae3fca6db2
Merge pull request #3863 from ethereum/fixGasEstimation
...
Correctly ignore costs of fallback for other functions.
2018-04-11 21:53:41 +02:00
Daniel Kirchner
daa69df447
Error on invalid arithmetic with constant expressions.
2018-04-11 21:17:10 +02:00
chriseth
928ce08845
Correctly ignore costs of fallback for other functions.
2018-04-11 19:42:34 +01: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
Jason Cobb
3b7b962b66
Fix bug in typechecking when comparing rational literals
2018-04-11 12:03:08 +02:00
Daniel Kirchner
3eedbc6a9c
Error when using no parentheses in modifier-style constructor calls.
2018-04-10 12:09:34 +02:00
chriseth
b52614116e
Merge pull request #3821 from ethereum/warn-constructor-override
...
Warn constructor override
2018-04-10 11:39:31 +02:00
hydai
aaa8edc36d
Fixed typos
2018-04-10 13:41:35 +08: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
43d2954de8
Do not abort excessive warnings, just ignore them.
2018-04-06 14:44:03 +02:00
Alex Beregszaszi
0812d1189a
Ignore warnings when limited errors to 256
2018-04-06 13:52:19 +02:00
Alex Beregszaszi
3730f68d4b
reindent
2018-04-06 13:52:19 +02:00
Alex Beregszaszi
e8be0e61b3
Catch FatalError in CompilerStack::analysis to cover all the analysis tests
2018-04-06 13:52:19 +02:00
Alex Beregszaszi
d5f40c141b
Limit the number of errors output in a single run to 256
2018-04-06 13:52:19 +02:00
chriseth
543e1e19c7
Merge pull request #3831 from ethereum/memory-suffix
...
Allow ``memory`` suffix for internal elementary type parsing.
2018-04-05 17:02:43 +02:00
chriseth
4c50ed39d7
Merge pull request #3829 from ethereum/smt_remove_uf
...
[SMTChecker] Remove usage of UFs to access SSA vars
2018-04-05 16:07:07 +02:00
chriseth
5b1c0506fa
Allow `memory
` suffix for internal elementary type parsing.
2018-04-05 16:06:04 +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
Leonardo Alt
8d087d1889
[SMTChecker] Removing usage of UFs to access SSA indices
2018-04-05 12:48:58 +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
chriseth
65f18a18de
More specific push implementation.
2018-04-04 16:50:45 +02:00
chriseth
0cbe55005d
Create empty dynamic memory arrays more efficiently.
2018-04-04 12:37:04 +02:00
Daniel Kirchner
8f66390f56
Set isConstructor to false unconditionally and update to true later for constructors.
2018-04-03 18:21:55 +02:00
Daniel Kirchner
e2dac9ed39
Set header.isConstructor for old style constructors in parseFunctionHeader as well.
2018-04-03 18:21:55 +02:00
Daniel Kirchner
d664a599e6
Constructors are defined using the `constructor
` keyword.
2018-04-03 18:21:55 +02:00
Alex Beregszaszi
0edce4b570
Merge pull request #3693 from ethereum/optimizeMLOAD
...
Optimize across MLOAD if MSIZE is not used.
2018-04-03 15:58:11 +01:00
chriseth
eb5b18e814
Generalize cycle detection.
2018-04-03 16:29:18 +02:00
chriseth
5bdadff0d8
Fix detection of recursive structs.
2018-04-03 16:27:28 +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
chriseth
a54fdc495f
Fix: Treat empty base constructor argument list as not provided.
2018-04-03 14:53:48 +02:00
chriseth
6777f7a57f
Optimize across MLOAD if MSIZE is not used.
2018-04-03 14:34:32 +02: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
Jason Cobb
e37b619593
Set default fixed point decimal places to 18
2018-03-31 00:56:36 +01: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
chriseth
3bb54e8bd5
Merge pull request #3775 from federicobond/improve-error-fractional-shift
...
Improve error message when attempting to shift by fractional number
2018-03-28 11:16:44 +02: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
chriseth
59538e9a04
Merge pull request #3686 from ethereum/doNotIncludeItnernal
...
Do not include internal functions only used by constructor
2018-03-27 15:28:08 +02:00
Alex Beregszaszi
fab527c414
Add runtimeOnly option to pushCombinedFunctionEntryLabel
2018-03-27 04:00:12 +01:00
chriseth
0a67d616db
Use shortcut for internal function calls to avoid runtime reference.
2018-03-27 04:00:12 +01: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
Federico Bond
b79531bebf
Improve error message when trying to shift by fractional number
2018-03-22 10:05:49 -03: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
chriseth
32c94f5059
Simple size check for old ABI decoder.
2018-03-21 14:53:25 +00:00
chriseth
2cdf44f65c
Move the old ABI decoder code.
2018-03-20 15:20:43 +00:00
chriseth
78abe81f08
Merge branch 'develop' into externalFunctionsInLibraries
2018-03-14 18:07:55 +01:00
chriseth
abc7a45230
Merge pull request #3725 from ethereum/blockhashNoCall
...
Allow ``block.blockhash`` without it being called.
2018-03-14 18:04:40 +01:00
Alex Beregszaszi
59658afa30
Merge pull request #3722 from ethereum/fixMods
...
Fix modifier lookup in libraries.
2018-03-14 17:20:51 +01:00
Daniel Kirchner
0d0c9b8688
DocStringParser: Fix error message for empty parameter description.
2018-03-14 10:14:35 +01:00
chriseth
834d63de2c
Allow `block.blockhash
` without being called.
2018-03-13 17:34:21 +01:00
chriseth
eecc26deec
Make external library functions accessible.
2018-03-13 17:18:46 +01:00
chriseth
069b150e42
Bugfix in virtual lookup for modifiers in libraries.
2018-03-13 16:55:41 +01:00
Leonardo Alt
9b64dc501d
[SMTChecker_Bool] Fix PR review comments: method renaming and solAssert
2018-03-12 20:16:47 +01:00
Leonardo Alt
c2d26eb6a2
[SMTChecker_Bool] Fix PR comments; Add support to gt, ge, lt, le. and tests.
2018-03-12 20:16:47 +01:00
Leonardo Alt
6a940f0a99
[SMTChecker] Support to Bool variables
2018-03-12 20:16:47 +01:00
Alex Beregszaszi
a59d6d2e53
Support constantinople in evm-version
2018-03-12 18:13:19 +01:00
chriseth
0649f900ca
Properly skip cleanup if only enlarging storage array.
2018-03-09 14:06:54 +01: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
Alex Beregszaszi
250a6bad8c
Merge pull request #3527 from ethereum/warnLooseAsm
...
Warn about using loose assembly.
2018-03-06 18:59:23 +01:00
Daniel Kirchner
b4d38c5491
Use double quotes for suggestion about hex literals and denominations.
2018-03-06 18:09:54 +01:00
chriseth
95ca829750
Merge pull request #3663 from ethereum/gasleftEmscripten
...
Add gasleft to FunctionType::richIdentifier().
2018-03-06 18:06:30 +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
Daniel Kirchner
fb4d01e2cd
Add gasleft to FunctionType::richIdentifier().
2018-03-06 17:29:04 +01:00
Alex Beregszaszi
14b12ae745
Merge pull request #2966 from ethereum/useStaticCall
...
Use STATICCALL for pure function calls.
2018-03-06 17:07:03 +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
b467116ea8
Use STATICCALL for pure function calls if EVM version supports it and 0.5.0 is activated.
2018-03-06 15:30:18 +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
9d67e9b4fc
Merge pull request #3640 from AnthonyBroadCrawford/spanning-multiline-message-fix
...
moved spanning multi lines message to appear on some lane vs new line…
2018-03-05 22:51:53 +01:00
Anthony Broad-Crawford
174c46d5af
Improved messaging when an error spans multiple lines and updated change log file.
2018-03-05 14:14:14 -06:00
chriseth
be797cb796
Merge pull request #3599 from ethereum/sendAllGasOnByzantium
...
Send all gas on byzantium
2018-03-05 20:13:52 +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
83fcf007bf
Do not retain any gas in external calls (except if EVM version is set to homestead).
2018-03-05 19:32:12 +01:00
chriseth
f190b27431
Merge pull request #3600 from ethereum/version050IsAnalysisOnly
...
Do not warn about 0.5.0 experimental pragma.
2018-03-05 19:28:41 +01:00
Daniel Kirchner
3340053fd9
Style improvements.
2018-03-05 17:00: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
477571e190
Do not warn about 0.5.0 experimental pragma.
2018-03-05 12:14:44 +01:00
chriseth
cd6ffbdf79
Merge pull request #3642 from leonardoalt/fix_z3-46
...
Add z3 performance option
2018-03-05 12:13:39 +01:00
chriseth
6dc137317f
Merge pull request #3569 from ethereum/evmVersion
...
EVM version
2018-03-05 12:10:49 +01:00
chriseth
6ec4517929
Use EVM version in gas meter and optimizer.
2018-03-05 11:36:33 +01:00
Daniel Kirchner
c633c0eacb
Move msg.gas to global function gasleft(). Closes #2971 .
2018-03-05 11:18:04 +01:00
Leonardo Alt
5d74b862a3
This z3 option is necessary for good solving performance
2018-03-04 14:42:36 +01:00
chriseth
f78d6a9a1e
Merge pull request #3628 from ethereum/literalsHexUnit
...
Deprecate using unit denominations in combination with hex numbers.
2018-03-02 11:11:16 +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
Alex Beregszaszi
5a54cd5c70
Only warn for shift instructions if not using constantinople
2018-03-01 17:19:35 +01:00
chriseth
4ce0e7775d
Add constantinople.
2018-03-01 17:19:35 +01:00
chriseth
982476f99d
Add TangerineWhistle.
2018-03-01 17:19:35 +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
chriseth
f75a411325
Provide target EVM version in CompilerContext.
2018-03-01 17:19:35 +01:00
chriseth
85785710e6
Store EVM version in settings.
2018-03-01 17:19:34 +01:00
chriseth
5ab4a1ae78
Add ability to set the target EVM version.
2018-03-01 17:19:34 +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
Alex Beregszaszi
2c82f748bb
Merge pull request #3624 from ethereum/jsonio-libraries-hex
...
Ensure that library addresses supplied are of correct length and hex prefixed
2018-03-01 12:37:14 +01:00
Alex Beregszaszi
b6dfd9ef54
Ensure that library addresses supplied are of correct length and hex prefixed in JSONIO
2018-03-01 12:03:56 +01:00
Leonardo Alt
8b1b4b78c0
Fix PR comments
2018-02-28 18:31:11 +01:00
Leonardo Alt
cff0836c03
Fix PR comments
2018-02-28 18:05:20 +01:00
Leonardo Alt
21c6b80fc9
Supported types listed in SSAVariable
2018-02-28 18:05:20 +01:00
Leonardo Alt
3b2851ee41
Integer min and max values placed under SymbolicIntVar instead of SMTChecker
2018-02-28 18:05:20 +01:00
Leonardo Alt
f41591b3dd
[SMTChecker] A little refactoring on SSA vars
2018-02-28 18:05:20 +01:00
chriseth
7938339572
Merge pull request #3617 from ethereum/jsonio-libraries
...
Add more comprehensive tests and checks for libraries in JSONIO
2018-02-28 17:40:29 +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
7897301b71
Properly validate invalid hex characters in JSONIO libraries
2018-02-28 10:44:48 +01:00
Alex Beregszaszi
83fec0232d
Add more comprehensive tests and checks for libraries in JSONIO
2018-02-28 10:36:07 +01:00
chriseth
908b46e9a7
Merge pull request #3476 from ethereum/scoping
...
C99/C++ scoping rules
2018-02-27 17:06:10 +01:00
Alex Beregszaszi
a566825589
Issue error if no visibility is specified (on 0.5.0)
2018-02-27 16:31:53 +01:00
Alex Beregszaszi
afa4a48e37
Remove ROL/ROR as they are not part of EIP145 anymore
2018-02-27 13:42:41 +01:00
Alex Beregszaszi
468d0f6199
Warn on using shift instructions
2018-02-27 13:42:31 +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
Alex Beregszaszi
b62d43912b
Merge pull request #3589 from ethereum/identifiers
...
Clean up type identifiers
2018-02-26 20:27:26 +01:00
Alex Beregszaszi
b471983e3c
Use new escaping helpers for type identifiers
2018-02-26 19:09:43 +01:00
Alex Beregszaszi
2e7067fbe4
Rename Types::identifier to Types::richIdentifier
2018-02-26 19:09:43 +01:00
Alex Beregszaszi
751705978e
Add helpers escapeIdentifier to Types
2018-02-26 19:09:39 +01:00
chriseth
4da20bdf01
Fix: Function types for getters should not have storage pointers.
2018-02-26 11:17:40 +01:00
chriseth
917dd28eef
Simplify FunctionType constructors.
2018-02-26 10:45:41 +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
Alex Beregszaszi
42856e0f53
Add assertion for boolean literals in Julia-mode
2018-02-22 01:02:23 +01:00
Alex Beregszaszi
ae02bb5aad
Raise error on oversized number literals in assembly
2018-02-22 01:02:19 +01:00
chriseth
3076a434ba
Merge pull request #3554 from ethereum/reuseScannerOrNot
...
Expect end of string at end of top-level block for assembly parser.
2018-02-21 00:41:57 +01:00
chriseth
e2bf5de8a2
Expect end of string at end of top-level block for assembly parser.
2018-02-21 00:41:39 +01:00
Alexander Arlt
0f29ac4e56
Add new JSON API for better abstraction and for supporting strict JSON parsing
2018-02-20 21:58:26 +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
abc23ac608
Merge pull request #3135 from federicobond/formatter-instance
...
Convert static SourceReferenceFormatter functions to member ones
2018-02-19 17:34:07 +01:00
Emilio Almansi
ca6957da37
Added property _documentation_ to Function, Event, and Modifier definition classes.
2018-02-19 16:45:38 +01:00
chriseth
305d5f70c2
Fix scannerFromSourceName use-after-free.
2018-02-19 15:13:49 +01:00
Federico Bond
d7532f7b9c
Convert static SourceReferenceFormatter functions to member ones
2018-02-19 15:04:22 +01:00
Alexander Arlt
1d4547ab03
Minor improvement: check sources
...
- returns error, if "sources" is an array, an empty object or not defined
- Added new test-cases in test/libsolidity/StandardCompiler.cpp
2018-02-16 18:44:46 +01:00
chriseth
2b5a5a8669
Make addmod and mulmod revert if the last argument is zero.
2018-02-15 13:52:17 +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
Alex Beregszaszi
8f8ad3840e
Merge pull request #3349 from federicobond/number-improv
...
Avoid output messages size blow-up using huge bignums literals
2018-02-13 12:36:05 +00:00
chriseth
560fbd0df1
Always use shortened literal number representation.
2018-02-13 11:43:47 +01:00
chriseth
5916cf1e0a
Allow this.f.selector
to be pure.
2018-02-13 11:00:59 +01:00
Federico Bond
a320ffeafd
Avoid output messages size blow-up using huge bignums literals
2018-02-12 22:53:33 +00: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
6807010dc7
Prevent libraries from being called.
2018-01-19 16:27:44 +01:00
Alex Beregszaszi
8b20a7cd53
Disallow non-functional instructions in parseExpression early
2018-01-10 14:16:46 +01:00
Alex Beregszaszi
42f8875770
Show restricted instruction warning before argument mismatch issue
2018-01-08 00:39:22 +00:00
Alex Beregszaszi
c269a12c5e
Support strict assembly mode in AssemblyStack
2018-01-06 01:23:38 +00:00
chriseth
124190336b
Split inline assembly into loose and strict flavours.
2018-01-06 01:23:38 +00:00
Alex Beregszaszi
fcbdaa32b9
Simplify parseElementaryOperation in regards to special instructions
2018-01-06 00:39:06 +00:00
chriseth
bca01f8f68
Merge pull request #3382 from ethereum/julia-identifier-parser
...
Support some restricted tokens (return, byte, address) as identifier in Julia
2018-01-06 00:02:21 +01:00
Alex Beregszaszi
a91393f4d7
Support some restricted tokens (return, byte, address) as identifiers in Julia
2018-01-05 15:53:49 +00:00
Alex Beregszaszi
9e7e312fdf
Properly support library file names containing a colon (such as URLs).
2018-01-05 13:24:07 +00:00
Leonardo Alt
d0abc5359b
[SMTChecker] Variables are merged after branches (ite variables)
2018-01-04 18:20:12 +01:00
chriseth
00692a4ff6
Reset source location after using inline assembly.
2018-01-04 14:29:03 +01: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
Alex Beregszaszi
8901b38959
Merge pull request #3369 from ethereum/jsonio-colon
...
Properly handle colons in file names within jsonio
2018-01-04 11:58:29 +00:00
Federico Bond
a0771691ff
Improve error message for wrong struct initialization ( #3359 )
2018-01-04 11:24:39 +01:00
Alex Beregszaszi
ff9fdfac57
Properly handle colons in file names within jsonio
2018-01-03 15:44:03 +00:00
Leonardo Alt
b588134840
[SMTChecker] Fix typo in the code (satisifable->satisfiable)
2017-12-18 17:31:27 +01:00
Alex Beregszaszi
55752db956
Merge pull request #3342 from ethereum/jsonio-sourcelocation
...
Populate the sourceLocation field properly in standard JSON on errors
2017-12-18 14:32:23 +00:00
chriseth
2e2f819fd6
Merge pull request #3304 from leonardoalt/smt_checker
...
[SMTChecker] Keep track of current path conditions
2017-12-18 15:10:28 +01:00
Alex Beregszaszi
add4cde68c
Populate the sourceLocation field properly in standard JSON on errors
2017-12-18 12:17:51 +00:00
chriseth
e2828cfa61
Favour if over switch in ABI coder.
2017-12-15 09:47:34 +01:00
chriseth
3d1830f3f2
Merge pull request #3232 from ethereum/simplifyConstant
...
Simplify ConstantEvaluator.
2017-12-14 16:14:46 +01:00
Leonardo Alt
a1e296e392
[SMTChecker] Helper functions to add an expression to the solver conjoined with or implied by the current path conditions
2017-12-13 17:59:36 +01:00
Leonardo Alt
2af4d7c7dd
[SMTChecker] Keep track of current path conditions
2017-12-13 17:39:10 +01:00
chriseth
54b6739962
Separate expression and statement.
2017-12-13 12:28:15 +01:00
Yoichi Hirai
55e9af2f20
Merge pull request #3310 from ethereum/limitDecl
...
Limit number of secondary source locations.
2017-12-12 11:14:06 +01:00
Yoichi Hirai
14707b27e2
Merge pull request #3183 from federicobond/fix-event-parsing
...
Fix event parsing. Refs #3175
2017-12-12 11:12:18 +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
793537e089
Suggest the "if" statement too instead of jumps
2017-12-05 19:27:12 +00:00
Alex Beregszaszi
bc875f6b9c
Warn for assembly labels too
2017-12-05 19:27:12 +00:00
Alex Beregszaszi
745eefa36f
Split Instruction and FunctionalInstruction in Julia
2017-12-05 14:52:11 +00:00
chriseth
b47e023df1
Merge pull request #3032 from ethereum/division
...
Division and unary operators for SMT checker
2017-12-05 13:59:01 +01:00
chriseth
240c79e614
Merge pull request #3265 from ethereum/rename_args_to_params
...
Rename arguments to parameters.
2017-12-04 06:49:44 -05:00
chriseth
43bb915454
Rename arguments to paramaters and returns to returnVariables.
2017-12-01 16:18:01 +01:00
chriseth
a256983320
Fix expression creation problems.
2017-11-30 01:20:21 +01:00
chriseth
d160ec8595
Fix signed division.
2017-11-30 01:20:21 +01:00
chriseth
19e067465a
Unary operators and division.
2017-11-30 01:20:21 +01:00
Alex Beregszaszi
9f756e3797
Include missing forward declarations in AsmDataForward
2017-11-29 21:43:44 +00:00
Alex Beregszaszi
3576ccf5b3
Simplify target selection code
2017-11-29 20:10:18 +00:00
Alex Beregszaszi
b2023196a2
Rename target selection to use the word artifact
2017-11-29 20:10:18 +00:00
Alex Beregszaszi
bbcec95bac
Add workaround for bytecode/deployedBytecode selection
2017-11-29 20:10:18 +00:00
Alex Beregszaszi
8da245cca3
Limit output according to the selected targets in StandardCompiler
2017-11-29 20:10:18 +00:00
Alex Beregszaszi
d37e6ba1c7
Add target selection helpers to StandardCompiler
2017-11-29 20:10:04 +00:00
chriseth
5a3dbb0269
Cleanup and overflow checks for data pointers.
2017-11-29 17:08:44 +01:00
chriseth
bdc1ff8ec7
ABI decoder.
2017-11-29 17:08:44 +01:00
chriseth
a1f59cbb17
Merge pull request #3220 from ethereum/IuliaIf
...
If statement for Iulia / Inline Assembly
2017-11-27 09:02:46 -05:00
chriseth
0e2a9658d2
Explain IntIntFun and merge assertion.
2017-11-23 19:02:47 +01:00
Federico Bond
14fd647b85
Fix event parsing. Refs #3175
2017-11-22 23:08:12 -03:00
chriseth
6ed4e0632f
Use if statement in abi functions.
2017-11-22 16:25:24 +01:00
chriseth
6dbc34e16e
If statement for Iulia / inline assembly.
2017-11-22 16:25:24 +01:00
chriseth
762d591a47
Introduce sorts for smt expressions.
2017-11-22 15:20:26 +01:00
chriseth
8538a25f8d
Fix problem with non-value-typed variables.
2017-11-22 02:35:34 +00:00
chriseth
19d5c42429
For loop.
2017-11-22 02:35:34 +00:00
chriseth
95a65dc04c
Fix boolean constants.
2017-11-22 02:35:34 +00:00
chriseth
22c689d516
Check for conditions being constant.
2017-11-22 02:35:34 +00:00
chriseth
e5de4a66ed
Tests.
2017-11-22 02:35:34 +00:00
chriseth
b37377641d
Track usage of variables.
2017-11-22 02:35:34 +00:00
chriseth
f62caf587e
Handle branches.
2017-11-22 02:35:34 +00: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
8d26894841
Show checksummed address always (prepend with 0)
2017-11-17 00:46:45 +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
chriseth
0c1fc594ef
Merge pull request #3209 from ethereum/unimplemented-msgs
...
Add explanation to unimplemented assertions
2017-11-16 04:32:51 -05:00
Alex Beregszaszi
f2e9dea5e7
Merge pull request #3194 from kseo/print-using-for
...
Print using for directive in ASTPrinter
2017-11-15 17:20:49 +00:00
Alex Beregszaszi
c1e202618c
Add explanation to unimplemented assertions
2017-11-15 17:19:29 +00:00
Kwang Yul Seo
02db1ad584
Print using for directive in ASTPrinter
2017-11-16 01:36:57 +09:00
Alex Beregszaszi
08fec146ba
Merge pull request #3206 from kseo/outdated-comment
...
Update outdated comments
2017-11-15 16:35:53 +00:00
Alex Beregszaszi
ed3ce43d6d
Merge pull request #3189 from kseo/unused
...
Remove unused method
2017-11-15 16:31:22 +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
Kwang Yul Seo
d70ff5f8c3
Remove a redundant check
...
m_type can't be FunctionType::Kind::DelegateCall.
2017-11-13 09:54:55 +09:00
Kwang Yul Seo
486647fd38
Remove unused method
...
The body of Function::functionIdentifier is missing and is not used.
2017-11-12 22:27:05 +09:00
chriseth
dc6b1f02bc
Merge pull request #3092 from rivenhk/b_2885
...
added formatting when source snippets is too long
2017-10-23 10:54:52 +02:00
chriseth
7d0e46bf59
Merge pull request #3030 from ethereum/smt-variable-types
...
SMT enforce variable types
2017-10-20 16:55:09 +02:00
Alex Beregszaszi
3a8324266f
More detailed errors for invalid array lengths (such as division by zero).
2017-10-20 11:59:18 +01:00
rivenhk
950f5ae7d7
updated formatting when source snippets is too long
2017-10-19 20:20:07 +08:00
chriseth
4e7d1440ab
Merge pull request #3101 from ethereum/compilerstack-header
...
Remove the reliance on empty contract name equals "last contract" in CompilerStack
2017-10-19 13:43:17 +02:00
chriseth
0ae4aad8f3
Merge pull request #3108 from ethereum/remove-callcode
...
Turn usage of callcode into an error as experimental 0.5.0 feature
2017-10-19 11:10:10 +02: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
Alex Beregszaszi
8d3cfa8cff
Simplify contract lookup in CompileStack
2017-10-18 23:54:32 +01:00
Alex Beregszaszi
2ce35b77be
Implement CompilerStack.lastContractName()
2017-10-18 23:54:32 +01:00
Alex Beregszaszi
039cc25b1f
Always require a contract/sourceName in CompilerStack
2017-10-18 23:32:33 +01:00
Alex Beregszaszi
7a4c165518
Remove unused variable in Z3
2017-10-18 23:18:11 +01:00
rivenhk
d53c44a066
updating formatting when source snippets is too long
2017-10-18 22:03:33 +08:00
chriseth
e854da1a8c
Merge pull request #2925 from ethereum/tuple-value-check
...
Validate each tuple literal
2017-10-18 11:59:40 +02:00
chriseth
a3db1fc197
Do not accept truncated function selectors.
2017-10-17 23:17:36 +02:00
rivenhk
b93a5980ed
added formatting when source snippets is too long
2017-10-18 01:59:15 +08:00
chriseth
153ae98878
Catch exception in Z3.
...
Note: This exception might not be the result of resource limitation,
it might also hint towards usage error.
2017-10-17 18:30:10 +01:00
Alex Beregszaszi
a71c6faf0f
Remove duplicate >= in Z3
2017-10-17 18:30:07 +01:00
chriseth
114983e079
Missing forward declaration.
2017-10-17 18:30:04 +01:00
chriseth
1f97c1ea8f
Rename variables in SMT checker.
2017-10-17 18:29:53 +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
chriseth
6001bd1406
Allocate one byte per memory byte array element instead of 32.
2017-10-16 22:29:31 +02:00
Alex Beregszaszi
372c6693ea
Improve Z3 message in cmake
2017-10-13 13:33:18 +01:00
Alex Beregszaszi
c45e55675c
Force interface functions as external (0.5.0)
2017-10-06 13:48:38 +01:00
Alex Beregszaszi
475b818801
Remove obsolete createTypeError in AST
2017-10-05 20:18:46 +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
chriseth
d0fa56a217
Merge pull request #2981 from ethereum/no-address-overload
...
Do not add members of address to contracts in experimental 0.5.0
2017-10-05 16:12:21 +02:00
Alex Beregszaszi
8b26d65b62
Merge pull request #3020 from ethereum/smt-functioncall
...
SMT should not crash on special function calls (typecast)
2017-10-05 14:04:16 +01:00
Alex Beregszaszi
18ae0c3d78
SMT enforce variable types
2017-10-05 12:29:20 +01:00
Alex Beregszaszi
6ba0c2bba8
Merge pull request #2982 from ethereum/encoderFixes
...
ABI encoder fixes and test.
2017-10-05 11:59:42 +01:00
Alex Beregszaszi
09276cb9d3
Do not add members of address to contracts in experimental 0.5.0
2017-10-05 11:42:34 +01:00
Alex Beregszaszi
10529e994f
SMT should not crash on typecast/structs
2017-10-05 11:41:11 +01:00
Alex Beregszaszi
880be25811
Merge pull request #3029 from ethereum/tanwisgas
...
Send all gas for 0.5.0.
2017-10-05 11:34:17 +01:00
chriseth
11c51de5b9
Merge pull request #2968 from ethereum/calldataencodedsize
...
Add some asserts about calldata encoded size.
2017-10-05 12:16:37 +02:00
chriseth
69ea5c43f3
Send all gas for 0.5.0.
2017-10-05 11:56:36 +02:00
chriseth
54cf15ac4f
Merge pull request #2901 from ethereum/compiler-names
...
Provide optional list of contract names to CompilerStack.compile
2017-10-05 11:23:46 +02:00
Alex Beregszaszi
a0394a1bfa
Restrict contracts compiled via outputSelection (but not the individual output details)
2017-10-04 20:30:14 +01:00
Alex Beregszaszi
f96e932243
Provide optional list of contract names to CompilerStack.compile
2017-10-04 20:30:14 +01:00
Federico Bond
76d3d24842
Do not consider shadowing in variable names inside event declarations
2017-10-04 13:30:26 -03:00
chriseth
19274c7890
Merge pull request #2962 from ethereum/optionalDebugInfoAsm
...
Debugging info in CompilerContext.
2017-10-04 17:01:52 +02:00
chriseth
80cefb9cc8
Rename "compacted" to "fromStack".
2017-10-04 16:56:54 +02:00
Alex Beregszaszi
66b188cce9
Merge pull request #3022 from ethereum/assert
...
Use solAssert and not assert
2017-10-04 14:11:43 +01:00
chriseth
f6fb7d96d3
Merge pull request #2990 from ethereum/someMoreSMTStuff
...
Basic SMT tests.
2017-10-04 14:56:24 +02:00
Alex Beregszaszi
a9847c9551
Use solAssert and not assert
2017-10-04 13:05:55 +01:00
chriseth
364b4dea62
Add some asserts about calldata encoded size.
2017-10-04 13:19:57 +02:00
chriseth
a5fddc9c57
Debugging info in CompilerContext.
2017-10-04 13:18:33 +02: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
Alex Beregszaszi
e7a1e1abe7
Merge pull request #2997 from federicobond/duplicate-events
...
Emit error when declaring event with same name and arguments twice
2017-10-02 20:21:16 +01:00
Alex Beregszaszi
8a32d7c3d7
Add helpers for isPush/isDup/isSwap
2017-10-02 10:34:54 +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
Rhett Aultman
e434437eb7
Unary + now a synax error (experimental 0.5.0)
...
The unary + was deprecated with a warning, but will be elevated to an
error in 0.5.0. This adds the syntax error for the 0.5.0 pragma, and
for a true 0.5.0 release we should consider removing the operator from
the parser.
2017-09-29 17:50:25 +01:00
Alex Beregszaszi
b1741b7735
Validate array length in type checker
2017-09-29 16:44:00 +01:00
chriseth
5ee3ceaef7
Remove leftover couts.
2017-09-29 12:44:39 +02:00
Alex Beregszaszi
d5d1a08b09
Pull out helper to apply address member to contract members
2017-09-28 14:54:15 +01:00
Alex Beregszaszi
aa6de49457
Simplify address overloading
2017-09-28 14:53:41 +01:00
Alex Beregszaszi
7cb4d714c7
Fix overload resolution when conflict is with members of address (balance, transfer, etc)
2017-09-28 13:57:19 +01:00
Alex Beregszaszi
010189d58e
Merge pull request #2986 from ethereum/fixsourcelocationofvariabledecsatement
...
Fix source location of VariableDeclarationStatement.
2017-09-28 13:50:23 +01:00
chriseth
639b85f498
Fix source location of VariableDeclarationStatement.
2017-09-27 19:27:36 +02:00
chriseth
3ebe29a031
Better readable encoder assembly.
2017-09-27 15:59:59 +02:00
chriseth
2940964044
ABI encoder fixes and test.
2017-09-27 15:57:39 +02:00
Alex Beregszaszi
3f783c8dad
Merge pull request #2975 from ethereum/encode-memory
...
Split encodeToMemory into packedEncode and abiEncode
2017-09-27 13:04:37 +01:00
Alex Beregszaszi
204214f070
Split encodeToMemory to packedEncode and abiEncode
2017-09-27 11:32:19 +01:00
Alex Beregszaszi
0dda5eeca3
Order GlobalContext entries
2017-09-27 11:19:53 +01:00
Alex Beregszaszi
82673b7b3f
Format GlobalContext for readability
2017-09-27 11:19:53 +01:00
Alex Beregszaszi
a657d3b1a1
Make most of the parameters mandatory in encodeToMemory
2017-09-27 11:15:27 +01:00
chriseth
9c62647f19
Merge pull request #2978 from ethereum/infer-location
...
Report correct location for inferred types in packed encoding
2017-09-27 12:13:01 +02:00
Alex Beregszaszi
dcb61352f6
Report correct location for inferred types in packed encoding
2017-09-27 10:21:24 +01:00
Alex Beregszaszi
ee65ecfb3b
Ensure that address types are always declared as 160bit
2017-09-26 22:46:33 +01:00
chriseth
af4d8779bb
Merge pull request #2934 from ethereum/fallthrough
...
Remove last two instances of switch fall-through
2017-09-26 11:38:22 +02:00
Alex Beregszaszi
cb6cdfe780
Simplify switch statements by refactoring internal break statements
2017-09-25 10:57:21 +01:00
Alex Beregszaszi
74972f5fa6
Avoid switch fallthrough in ExpressionCompiler
2017-09-25 10:51:58 +01:00
Alex Beregszaszi
3e5d81578a
Avoid switch fallthrough in CompilerUtils
2017-09-25 10:51:58 +01:00
wadeAlexC
0099911ace
Better error message for unexpected trailing comma in parameter lists
2017-09-25 10:42:01 +01:00
chriseth
2530223ab5
More verbose errors for generated assembly.
2017-09-22 15:18:32 +02:00
chriseth
8af298ade3
Merge pull request #2902 from ethereum/warn-obsolete
...
Warn about obsolete sha3/suicide calls
2017-09-20 18:00:40 +02:00
Alex Beregszaszi
6948758156
Limit parser recursion depth further (needed by increased assembly data structure size)
2017-09-20 11:16:23 +02:00
Alex Beregszaszi
3b813ed295
Support multiple assignment in inline assembly
2017-09-20 11:16:23 +02:00
Alex Beregszaszi
efa4598c23
Mark functions static
2017-09-20 01:23:21 +01:00
Alex Beregszaszi
1c0c5d923a
Mark constructors explicit
2017-09-20 01:23:21 +01:00
Alex Beregszaszi
aad829948a
Ensure parameter names match between headers and implementation
2017-09-20 01:23:21 +01:00
Alex Beregszaszi
ed1fd49ab0
Warn about obsolete sha3/suicide calls
2017-09-19 11:11:19 +01:00
chriseth
ff275e369c
Allow constant byte arrays.
2017-09-18 19:49:27 +01:00
chriseth
3a9a9db6d6
Merge pull request #2910 from ethereum/fallback-restrict-external
...
Force fallback to be external (experimental 0.5.0 change)
2017-09-18 16:38:55 +02:00
Alex Beregszaszi
a3380ea8d0
Force fallback to be external (experimental 0.5.0 change)
2017-09-18 11:58:37 +01:00
chriseth
0696545808
Check for interface types of members and cache recursion check.
2017-09-16 12:31:13 +01:00
chriseth
c5063d3155
Use "tuple" for struct types in ABI JSON.
...
Only use tuple as a type in the ABI (and remove all "anonymous struct" references too)
2017-09-16 12:31:12 +01:00
chriseth
70d70e7816
Implement struct encoder.
2017-09-16 12:31:12 +01:00
chriseth
6385641f6e
Fix tests.
2017-09-16 12:31:12 +01:00
chriseth
7e1b9c1652
Structure type json using "components".
2017-09-16 12:12:44 +01:00
chriseth
36a90289e6
Fix interface type conversion internal to structs.
2017-09-16 12:12:43 +01:00
chriseth
080be885f8
Function signatures containing structs.
2017-09-16 12:12:43 +01:00
chriseth
22f85d5af3
Update tests and error messages.
2017-09-16 12:12:43 +01:00
chriseth
59ea19b3b9
Check for recursive structs.
2017-09-16 12:12:43 +01:00
chriseth
2e72bd163a
Allow structs as part of function interfaces.
2017-09-16 12:12:43 +01:00
chriseth
80ce3ca66f
Move ABI encoder into its own function.
2017-09-15 20:46:32 +01:00
chriseth
73771f5bb2
Named assembly labels.
2017-09-15 20:44:49 +01:00
Alex Beregszaszi
7dd372ce5c
Merge pull request #2904 from ethereum/viewPure5
...
Enforce view with error for experimental 0.5.0.
2017-09-14 18:13:56 +01:00
chriseth
24fd67b7db
Enforce view with error for experimental 0.5.0.
2017-09-14 17:53:43 +02:00
Alex Beregszaszi
5b5367dc12
Warn if no visibility is specified on contract functions.
2017-09-14 15:58:04 +01:00
Alex Beregszaszi
06c2ddfd50
Add experimental feature 'v0.5.0'
2017-09-13 19:22:03 +01:00
Alex Beregszaszi
5c9dbd5083
Merge pull request #2473 from ethereum/functiontype-sig
...
Add .selector member on function types
2017-09-13 17:35:48 +01:00
chriseth
3f3bcc4f8a
Merge pull request #2848 from ethereum/checkViewPure
...
Enforce view and pure.
2017-09-13 18:29:13 +02:00
chriseth
e2f30ce9ca
Minor changes from review.
2017-09-13 17:29:27 +02:00
chriseth
66c01301fe
Rename to invalidInPureFunctions
2017-09-13 17:18:22 +02:00
Alex Beregszaszi
fd1f8ab38b
Rename .sig to .selector on function types
2017-09-13 11:40:57 +01:00
Alex Beregszaszi
58f7a27ee0
Add sig member on function type
2017-09-13 11:40:57 +01:00
Alex Beregszaszi
0259459b21
Limit each duplicate declaration error to 32 references
2017-09-12 21:37:06 +01:00
chriseth
5084a9cda9
Merge pull request #2852 from ssuman/develop
...
This commit will display warning when there is unused function parameter
2017-09-12 17:57:55 +02:00
Suman
10d290cb9b
Display helpful warning for unused function arguments/return parameters
2017-09-12 15:35:03 +01:00
Alex Beregszaszi
5ae9b8dab1
Do not report overload conflicts for every line excessively
2017-09-12 14:58:10 +01:00
Alex Beregszaszi
f2412da800
Merge pull request #2888 from ethereum/same-declaration-error
...
Use secondary source location as a vector in same declaration errors
2017-09-12 14:57:42 +01:00
chriseth
ac3742cd25
Merge pull request #2887 from ethereum/missing-functions-list
...
Show each unimplemented function in secondary source location
2017-09-12 13:28:49 +02:00
chriseth
513ae59bba
Merge pull request #2853 from ethereum/cleanup-asm-stream
...
Split out the JSON functionality from assembly.stream()
2017-09-12 13:23:59 +02:00
Alex Beregszaszi
da1a53e02a
Use secondary source location as a vector in same declaration errors
2017-09-12 12:06:16 +01:00
Alex Beregszaszi
a03211f3c9
Show each unimplemented function in secondary source location
2017-09-12 10:59:56 +01:00
Alex Beregszaszi
a52e0de67c
Do not show the same error multiple times for events
2017-09-12 00:03:35 +01:00
Alex Beregszaszi
bbfb16cf5c
Introduce assemblyString
2017-09-11 15:53:20 +01:00
Alex Beregszaszi
50570c6c79
Do not return the stream in asssemblyStream
2017-09-11 15:48:58 +01:00
Alex Beregszaszi
a535a8b06e
Split out the JSON functionality from assembly.stream()
2017-09-11 15:48:52 +01:00
chriseth
b756274357
Allow constant variables in pure functions.
2017-09-06 13:52:29 +02:00
chriseth
15bdc48a73
Rename and add anonymous namespace.
2017-09-06 13:52:29 +02:00
chriseth
c83768c426
Fix tests
2017-09-06 13:52:29 +02:00
chriseth
1a1db1ec96
Tone down error message.
2017-09-06 13:52:29 +02:00
chriseth
7886c24d40
Modifier invocation can be base constructor call
2017-09-06 13:52:29 +02:00
chriseth
d6861d909c
Analyze assembly.
2017-09-06 13:52:29 +02:00
chriseth
ec27e569b0
Do not report on overriding function and only warn for view.
2017-09-06 13:50:49 +02:00
chriseth
342367d5dc
Store super function.
2017-09-06 13:50:49 +02:00
chriseth
eacee5b25c
Remove previous warning about pureness not being enforced.
2017-09-06 13:50:49 +02:00
chriseth
5470da4d9a
View-pure checker.
2017-09-06 13:50:49 +02:00
Alex Beregszaszi
3326a2282e
Change array too large error message as it is valid for non-calldata too
2017-09-05 22:38:45 +01:00
Alex Beregszaszi
bf294253bb
Merge pull request #2860 from ethereum/noparamsfordefaulted
...
Remove parameter names for defaulted functions.
2017-08-31 12:38:08 +01:00
chriseth
9e63710b8e
Remove parameter names for defaulted functions.
2017-08-31 12:16:41 +02:00
Alex Beregszaszi
eb33e76416
Use Json::valueToQuotedString directly
2017-08-29 15:51:37 +01:00
chriseth
cd22da1d9e
Remove escape function.
2017-08-29 15:50:28 +01:00
Alex Beregszaszi
a3f77527e9
Merge pull request #2847 from ethereum/codegen-docs
...
Document more of the codegen features
2017-08-29 15:27:07 +01:00
chriseth
93b1cc9702
Merge pull request #2833 from ethereum/statemutability-builtins
...
Mark all built in functions with appropriate statemutability
2017-08-29 15:24:51 +02:00
Alex Beregszaszi
3c24dcfe45
Document more of the codegen features
2017-08-29 13:36:13 +01:00
Alex Beregszaszi
7fb4a64136
Move all file specific globals to anonymous namespace
2017-08-29 11:09:18 +01:00
Alex Beregszaszi
0e11e5af10
Include all overloaded events in ABI
2017-08-28 20:07:43 +01:00
Alex Beregszaszi
79e84a8fa4
Swap declaration/statemutability in FunctionType constructor
2017-08-28 19:43:35 +01:00
Alex Beregszaszi
aa94000a91
Mark all built in functions with appropriate statemutability
2017-08-28 19:43:35 +01:00
Alex Beregszaszi
c7cb00d49a
Mark event non-payable and not view
2017-08-28 16:37:45 +01:00
Alex Beregszaszi
ab06346e6e
Merge pull request #2835 from ethereum/compilerstack-docs
...
Reorder some methods in CompilerStack for readability
2017-08-28 16:27:10 +01:00
Alex Beregszaszi
ceba40c410
Reorder some methods in CompilerStack for readability
2017-08-28 15:14:19 +01:00
Alex Beregszaszi
1beef38361
Merge pull request #2834 from ethereum/fixTypeNameParsing
...
Crash fix, parseTypeName can return null.
2017-08-28 15:07:14 +01:00
chriseth
122e65f8f4
Crash fix, parseTypeName can return null.
2017-08-28 15:13:02 +02:00
chriseth
5bd6254449
Merge pull request #2825 from ethereum/contract-unused-natspec
...
Removed unused natspec members of ContractDefinition
2017-08-28 13:06:30 +02:00
Alex Beregszaszi
2b3a49f702
Merge pull request #2821 from ethereum/errorreporter-copy
...
Add copy constructor to ErrorReporter (since it has assignment operator)
2017-08-25 20:40:27 +01:00
Alex Beregszaszi
8e5f9c5981
Removed unused natspec members of ContractDefinition
2017-08-25 20:29:43 +01:00
chriseth
372279ceb2
Merge pull request #2819 from ethereum/compilerstack-typecheck
...
Simplify typechecking loop in compilerstack
2017-08-25 19:38:15 +02:00
chriseth
9e90ddcae5
Merge pull request #2820 from ethereum/fallthrough
...
Fix some other fallthrough cases
2017-08-25 19:37:59 +02:00
Alex Beregszaszi
523e76332a
Merge pull request #2813 from ethereum/tightpack-warn
...
Warn on using literals in tight packing
2017-08-25 16:08:42 +01:00
Alex Beregszaszi
774363eb74
Add copy constructor to ErrorReporter (since it has assignment operator)
2017-08-25 16:03:24 +01:00
Alex Beregszaszi
da56bde58f
Move the break in switch for readability
2017-08-25 16:02:05 +01:00
Alex Beregszaszi
51d6141f7e
Mark to places fall-through
2017-08-25 16:00:36 +01:00
Alex Beregszaszi
5c73a80418
Remove fallthrough from ArrayUtils
2017-08-25 15:57:27 +01:00
Alex Beregszaszi
ec6d8007db
Merge pull request #2815 from ethereum/parser-fallthrough
...
Remove fallthrough from literal parsing
2017-08-25 15:54:46 +01:00
Alex Beregszaszi
e6f55fb95e
Do not create a new TypeChecker instance for every contract
2017-08-25 15:43:26 +01:00
Alex Beregszaszi
670df8e874
Attach natspec before type checking
2017-08-25 15:39:20 +01:00
Alex Beregszaszi
d60d4b3031
Remove duplicate work from CompilerStack.analyze()
2017-08-25 15:37:10 +01:00
Alex Beregszaszi
f2317670fa
Remove two other fall-through cases in Parser
2017-08-25 14:24:07 +01:00
Alex Beregszaszi
ef8355da7f
Remove fallthrough from literal parsing
2017-08-25 14:22:59 +01:00
Alex Beregszaszi
f6dba97fe1
Warn on using literals in tight packing
2017-08-25 14:16:50 +01:00
chriseth
4b0e30d259
Cleanup of Common.h
2017-08-25 14:54:23 +02:00
Alex Beregszaszi
e03dfd8476
Remove unused statements from the Natspec headers
2017-08-25 13:15:08 +01:00
Alex Beregszaszi
20e3b98d1f
Reorder ABI for readability
2017-08-25 10:39:53 +01:00
Alex Beregszaszi
deeac7e2e0
Rename statemutability to stateMutability in ABI/AST
2017-08-24 15:23:00 +01:00
Alex Beregszaszi
f646247dfb
Consider pure as constant for the AST JSON (to aid static analyzers)
2017-08-24 14:13:34 +01:00
Alex Beregszaszi
5668377c72
Introduce pure specifier on functions
2017-08-24 13:46:18 +01:00
chriseth
8af6f193bc
Merge pull request #2770 from ethereum/recursionInAsm
...
Also prevent too much recursion in the assembly parser.
2017-08-24 11:14:01 +02:00
chriseth
cf5e1d6120
Review changes.
2017-08-23 17:37:35 +02:00