Commit Graph

2485 Commits

Author SHA1 Message Date
chriseth
f714b0dd7c
Merge pull request #5242 from ethereum/someChecks
Some well-formedness checks for the Yul AST.
2018-10-25 12:44:28 +02:00
Leonardo Alt
d8cbf321da Grouping of symbolic variables in the same file and support to FixedBytes 2018-10-25 09:30:48 +02:00
chriseth
01566c2e1a
Merge pull request #5272 from ethereum/smt_special_vars
[SMTChecker] Support msg.*, tx.*, block.*, gasleft and blockhash
2018-10-24 14:34:17 +02:00
Leonardo Alt
e2cf5f6ed9 Add gasleft constraint and use full member access name 2018-10-22 18:19:11 +02:00
Christian Parpart
f112377dd4
Refactor solidity::Token into an enum class with TokenTraits helper namespace 2018-10-22 17:00:51 +02:00
chriseth
19be6cd818 Some well-formedness checks for the Yul AST. 2018-10-22 15:52:26 +02:00
Leonardo Alt
b46b827c30 [SMTChecker] Support msg.*, tx.*, block.*, gasleft and blockhash 2018-10-19 15:52:16 +02:00
chriseth
c13b5280c1
Merge pull request #5256 from ethereum/lvalueCleanup
Lvalue cleanup
2018-10-19 11:20:12 +02:00
chriseth
fed7a7d61a
Merge pull request #5257 from ethereum/assertAboutRemoved
Assert about some removed language concepts in the code generator.
2018-10-19 11:04:29 +02:00
chriseth
e78b95d9d4 Renamed SHA3.{h,cpp} files. 2018-10-18 14:31:36 +02:00
chriseth
97d01d9b47 Assert about some removed language concepts in the code generator. 2018-10-17 22:26:40 +02:00
chriseth
c14dfeb8c5 Removed unreachable cases in LValue.cpp. 2018-10-17 22:17:33 +02:00
Leonardo Alt
070471d8d4 Fix possibly effectless map emplace 2018-10-17 19:00:38 +02:00
Leonardo Alt
c92d3b537d [SMTChecker] Refactor expressions such that they also use SymbolicVariable 2018-10-17 18:36:24 +02:00
Leonardo
3db1ce0e14
Merge pull request #5235 from ethereum/smt_refactor_types
[SMTChecker] Refactoring types
2018-10-17 18:35:48 +02:00
chriseth
9d00f710bc
Merge pull request #5224 from bshastry/compilerwarn-fix
Fix compiler warning
2018-10-17 17:23:22 +02:00
Bhargava Shastry
67fd3ca4a7 Retained move/copy semantics; removed const qualifier from Expression's members name (of type std::string) and arguments (of type std::vector<Expression>) 2018-10-17 16:46:18 +02:00
Bhargava Shastry
546b08c158 Fix compiler warning: clang-8 warns of explicitly-defined op implicitly deleted for Expression object's copy and move constructors 2018-10-17 16:42:51 +02:00
Leonardo Alt
afe83cc28b Refactor SymbolicAddressVariable and SymbolicVariable allocation 2018-10-17 15:58:13 +02:00
Leonardo Alt
aa23326e06 Consistent renaming of 'counters' and 'sequence' to 'index' 2018-10-17 15:58:13 +02:00
Leonardo Alt
ec39fdcb3c [SMTChecker] Refactoring types 2018-10-17 15:58:13 +02:00
chriseth
5e01d767d0 Prevent externally used functions from being removed. 2018-10-17 14:12:10 +02:00
chriseth
2384947521
Merge pull request #5209 from ethereum/smt_ssa_refactor
[SMTChecker] Refactor SSAVariable such that it only uses Type and not Declaration
2018-10-15 16:49:47 +02:00
Leonardo Alt
e4851cf59e [SMTChecker] Inline calls to internal functions 2018-10-15 15:11:21 +02:00
Leonardo Alt
4a4620ac95 Refactor SSAVariable such that it only uses Type and not Declaration 2018-10-15 14:20:54 +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
9a4bec7e47
Renaming libjulia to libyul 2018-10-15 11:52:35 +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
b5399a7aa0
Merge pull request #5132 from ethereum/genericVisitor
Generic visitor.
2018-10-10 16:01:20 +02:00
chriseth
06200b4b64
Merge pull request #5180 from ethereum/cpp-cleanup
Some C++ cleanup
2018-10-10 11:43:42 +02:00
Alex Beregszaszi
6c3d12d85b Do not require ctype/stdio if not needed 2018-10-09 19:06:22 +01:00
Alex Beregszaszi
e732c49c2f Change find to use a single character 2018-10-09 18:06:25 +01:00
Christian Parpart
4d5216c2e0 Fixes large rational number literals being wrongly interpreted.
Fixes #5052.
2018-10-09 14:36:49 +02:00
chriseth
3f216bac5e Generic visitor. 2018-10-09 14:27:21 +02:00
chriseth
547b26d464
Merge pull request #5124 from lazaridiscom/1802-hex-error-reporting
use Token type for hex error, draft re #1802
2018-10-09 14:17:11 +02:00
Lazaridis
4bcd89105c provide general hex-literal error message, fixes #1802
dummy
2018-10-09 06:51:19 +03: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
7ff9a27979
Merge pull request #4734 from ethereum/astUpdate
JSON AST: replace ``isConstructor`` by ``kind`` which also supports fallbacks
2018-10-08 21:47:27 +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
db4f780283
Merge pull request #4962 from anurag-git/anurag_issue_3667-1
Removed default case from "ExpressionCompiler::visit(FunctionCall...)".
2018-10-01 13:24:26 +02:00
chriseth
5ae32b24a6
Merge pull request #5113 from ethereum/compilerstack-datagas
Use GasEstimator::dataGas in CompilerStack
2018-10-01 13:20:38 +02:00
Anurag Dashputre
3321000f67 Removing extra default cases to force compile time error, instead of runtime. 2018-09-30 12:40:38 +05:30
Alex Beregszaszi
c4b5101b9d
Merge pull request #4676 from jwasinger/extcodehash
Add support for EXTCODEHASH
2018-09-28 00:04:40 +01:00
Alex Beregszaszi
d71cc66dde Use GasEstimator::dataGas in CompilerStack 2018-09-28 00:03:35 +01:00
chriseth
f81c6e6d16
Merge pull request #5099 from ethereum/standard-json-optimiser
Be more strict about values in the optimizer block in StandardJSON
2018-09-26 22:31:27 +02:00
Alex Beregszaszi
384a65f660 Be more strict about values in the optimizer block in StandardJSON 2018-09-26 16:51:08 +01:00
Jared Wasinger
c6bd2979b1 Add assembly support for EXTCODEHASH (EIP-1052) 2018-09-26 16:11:02 +01:00
Alex Beregszaszi
d64be90497 Add PathGasMeter.estimateMax helper 2018-09-26 14:25:40 +01: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
chriseth
46f630c5a6
Merge pull request #5092 from ethereum/create2-evmversion
CREATE2 is part of Constantinople now
2018-09-26 14:53:44 +02:00
Alex Beregszaszi
00b1b96eb4 Use better assertion messages for RationalNumberType::literalValue 2018-09-26 13:05:58 +01:00
Erik Kundt
466e8f56e6 Removes unnecessary check of array type. 2018-09-26 12:46:08 +02:00
Alex Beregszaszi
8cfc6c98d6 CREATE2 is part of Constantinople now
Also add hasCreate2 to EVMVersion
2018-09-26 01:58:10 +01:00
Nicolás Venturo
f8d43a4da5
Removed extra whitespace. 2018-09-25 14:40:39 -03:00
chriseth
64a6888aba
Merge pull request #5063 from ethereum/standard-json-bug
Fix typo in parsing/writing JSON error in StandardCompiler
2018-09-24 15:01:38 +02:00
chriseth
32112d6480
Merge pull request #5041 from liangdzou/fix_typo_in_doc
fix typo in docs and comments
2018-09-24 13:52:33 +02: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
Alex Beregszaszi
abfd283af7 Fix typo in parsing/writing JSON error in StandardCompiler 2018-09-21 22:43:57 +01:00
Erik Kundt
ff5be17990 Disallows fixed-size multidim. arrays with zero-length. 2018-09-21 18:44:56 +02:00
Alex Beregszaszi
5dd3ee2d96
Merge pull request #5050 from ethereum/standard-json-crashes
Add proper error reporting when invalid settings are provided in StandardJSON
2018-09-21 15:48:05 +01:00
Alex Beregszaszi
8f96fe698d
Merge pull request #5049 from ethereum/structtype-assert-annotation
Add assertion for annotated type in Structtype::canBeUsedExternally
2018-09-21 15:02:26 +01:00
Alex Beregszaszi
a515173900 Add proper error reporting when invalid settings are provided in StandardJSON 2018-09-21 14:53:24 +01:00
Alex Beregszaszi
69ff61d149 Add assertion for annotated type in Structtype::canBeUsedExternally 2018-09-21 14:25:05 +01:00
liangdzou
f347dee812 fix typo 2018-09-21 09:27:33 +08:00
chriseth
dc9853bb6e
Merge pull request #5030 from ethereum/payableConversion
Make non-payable default for conversion to address.
2018-09-20 21:20:46 +02:00
liangdzou
44e8dfd393 fix typo 2018-09-20 22:54:57 +08:00
chriseth
d0461c49fe Make non-payable default for conversion to address. 2018-09-20 14:31:04 +02:00
hydai
b409faa675
Disallow uppercase X in hex number literals 2018-09-19 22:01:15 +08:00
liangdzou
24e5dcc352 fix code format problems 2018-09-19 00:18:49 +08:00
liangdzou
808c3f3df5 fix some format typos 2018-09-17 22:13:21 +08: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
e7daed68c1
Merge pull request #4911 from ethereum/addressPayable
Payable and non-payable address type.
2018-09-13 17:30:54 +02:00
Daniel Kirchner
ae35a58124 Add `stateMutability field to JSON AST for address` types. 2018-09-13 15:15:49 +02:00
Daniel Kirchner
12aaca1645 Add payable and non-payable state mutability to AddressType. 2018-09-13 15:15:49 +02:00
Anurag Dashputre
b86cea033b Removed default case from "ExpressionCompiler::visit(FunctionCall...)". 2018-09-13 15:40:06 +05:30
liangdzou
558a4ac49c give more information (at most 35 chars before and after) for too long lines
add tests for giving more informations for too long lines

add edge tests for giving more informations for too long lines

avoid printing out tailing white space

update test case after avoiding printing out trailing whitespace

update test case for removing the pre-release warning from reference

refactor the code to if-else flavor

rename folder to cmdlineErrorReports under test

rename folder to cmdlineErrorReports under test

ignore whitespace for reference files

avoiding to modify the file stderr_path by call sed without -i option

print ' ...' instead of ' ... ' at the end of a line
2018-09-13 09:55:54 +08:00
Daniel Kirchner
1ce3581a52 Accept `address payable` during parsing. 2018-09-11 14:52:23 +02:00
Daniel Kirchner
a434896458 Restore `isConstructor` in the legacy AST. 2018-09-11 14:47:25 +02:00
Daniel Kirchner
395ab9a872 Replace `isConstructor field in the JSON AST by a kind` field. 2018-09-11 14:47:25 +02:00
chriseth
120438c0cf Always perform cleanup for EXP. 2018-09-10 12:47:46 +02:00
chriseth
0b7b8162ca This fixes several bugs with regards to line breaks and comments:
- any unicode line break (line feed, vertical tab, form feed, carriage
   return, NEL, LS and PS) is considered to terminate a single-line
   comment. The line break itself is considered to be the next token
   after the comment, leading to a parser error if it is not an
   ascii character (i.e. for NEL, LS and PS).
 - unterminated multiline comments are considered illegal tokens
 - '/** /' is considered an unterminated multiline comment
   (previously, whitespace was allowed before the last '/'
2018-09-06 16:42:59 +02:00
chriseth
977ac9c390 Refactor handling of whitespace. 2018-09-06 16:42:59 +02:00
Daniel Kirchner
f020f96b6c More consistently use parse*() functions without argument in the parser. 2018-09-06 14:55:07 +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
e6aa15bae1
Merge pull request #4895 from ethereum/abidecodesingle
Fix abi.decode returning single value.
2018-09-04 23:47:56 +02:00
chriseth
85debe77d9
Merge pull request #4866 from bakaoh/issue4743
Fix#4743: Incorrect source location for nameless parameters
2018-09-04 20:21:03 +02:00
chriseth
8da1f25030
Merge pull request #4897 from ethereum/trailingWhitespaceDetection
Trailing whitespace detection script and circleci job.
2018-09-04 18:20:57 +02:00
chriseth
624dbbe142 Fix abi.decode returning single value. 2018-09-04 18:19:00 +02:00
Daniel Kirchner
1ae6ec9038 Remove trailing whitespace. 2018-09-04 17:43:04 +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
Daniel Kirchner
82f512a7d4 Add return data to bare calls. 2018-09-04 13:31:10 +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
Daniel Kirchner
a102f3b783 Remove trailing whitespace for all files in the repository. 2018-09-04 11:30:30 +02:00
chriseth
2783905bab
Merge pull request #4837 from chase1745/default-to-unspecified
Rename `Location::Default` to `Location::Unspecified`
2018-09-03 18:44:41 +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
chriseth
758bc1614c
Merge pull request #4851 from anurag-git/anurag_issue_4824
Removed unused "FunctionType::Kind::CallCode"
2018-09-03 16:51:05 +02:00
bakaoh
c458f5988b Fix#4743: Incorrect source location for nameless parameters 2018-08-28 11:11:40 +07:00
Anurag Dashputre
94c327c1ae Removed unused "FunctionType::Kind::CallCode" from Types.h and all its usage 2018-08-23 13:09:00 +05:30
Anurag Dashputre
8497dcd721
Merge branch 'develop' into anurag_issue_3667 2018-08-23 11:56:45 +05:30
Anurag Dashputre
55524788e2 Removed the default cases related to assertion to detect the problem at compile-time instead of run-time 2018-08-23 11:47:00 +05:30
Chase McDermott
551e0bf47c Rename Location::Default to Location::Unspecified. 2018-08-17 18:15:22 -05:00
Anurag Dashputre
435cd95c54 Default case removed to detect errors at comoile time rather than run time 2018-08-17 18:37:35 +05:30
chriseth
410d288dfc
Merge pull request #4629 from ethereum/mapping_dynamic_key
Dynamic type as mapping key returns error instead of assertion fail
2018-08-16 15:56:14 +02:00
chriseth
c274af0770
Merge pull request #4825 from ethereum/expressionCompBareCall
More safeguards for (library) function types.
2018-08-16 14:38:44 +02:00
Leonardo Alt
583e7156ba Dynamic type as mapping key returns error instead of assertion fail 2018-08-16 11:59:41 +02:00
liangdzou
74c37935f0 fix a typo: declaratoion => declaration 2018-08-16 13:42:46 +08:00
chriseth
cc6fa6d61f
Merge pull request #4822 from ethereum/addressStaticCall
Add ``staticcall`` to ``address``.
2018-08-16 00:13:21 +02:00
chriseth
455345871d More safeguards for (library) function types. 2018-08-15 17:11:43 +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
chriseth
3f42118d19
Merge pull request #4765 from ethereum/fixes-issue-4673
[WIP] Fixes issue where computing storage size for a number would take too long (or even cause a crash).
2018-08-14 17:34:04 +02:00
Jesse Busman
c059119145 Add implicit convertibility to function pointer with higher state mutability 2018-08-14 17:13:10 +02:00
chriseth
ec7ccbdf86
Merge pull request #4782 from ethereum/encodePackedArrayOfStructs
Encode packed array of structs
2018-08-14 16:32:57 +02:00
Christian Parpart
43bda53410
Fixes issue where computing storage size for a number would take too long.
Fixes #4673.
2018-08-14 15:38:10 +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
chriseth
ae8218543b
Merge pull request #4696 from ethereum/byteLiteralConversion
Disallow ambiguous implicit and explicit conversions from number literals to bytesXX
2018-08-13 17:25:30 +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
Daniel Kirchner
954d7433bd Disallow remappings with empty prefix. 2018-08-10 19:26:48 +02:00
chriseth
0b65b2dff6 Disallow packed encoding of arrays of structs. 2018-08-09 21:16:51 +02:00
chriseth
6954f83a0c
Merge pull request #4790 from ethereum/fixCalldata
Fix data location of external reference parameters.
2018-08-09 19:40:15 +02:00
Daniel Kirchner
b6e352f694
Merge pull request #4767 from ethereum/cvc4Build
Add workarounds for building against CVC4 on ArchLinux.
2018-08-09 15:45:52 +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
Daniel Kirchner
c7a0f44159 Do not force GMP to be present as dependency of CVC4, but also allow CLN instead. 2018-08-08 19:02:59 +02:00
Daniel Kirchner
9b4546c487 Add workarounds for building against CVC4 on ArchLinux. 2018-08-08 19:02:59 +02:00
Alex Beregszaszi
551343ae3e
Merge pull request #4665 from mattaereal/cmake-patch-solver
cmake option added to make solvers optional
2018-08-08 17:58:01 +01:00
Alex Beregszaszi
9d782cc39c
Merge pull request #4770 from ethereum/throw-codegen
Remove code generation for Throw statement
2018-08-08 17:55:27 +01:00
Alex Beregszaszi
bb071f3075
Merge pull request #4769 from ethereum/inlineasm-overloading-resolution
Provide nicer error message when referencing overloaded references
2018-08-08 17:55:10 +01:00
Alex Beregszaszi
a9819aa8bc Remove code generation for Throw statement
It is disallowed in the type system.
2018-08-08 17:02:25 +01:00
Matías Aereal Aeón
4b20708c49 cmake flags to make solvers optional. Implementation of #4651 2018-08-08 12:43:57 -03:00
Alex Beregszaszi
9062704054
Merge pull request #4753 from mattaereal/boost-to-string-patch
Replace boost:lexical_cast<std::string> for std::to_string.
2018-08-08 16:07:25 +01:00
Alex Beregszaszi
3c791d637d Provide nicer error message when referencing overloaded references 2018-08-08 15:59:24 +01:00
Alex Beregszaszi
efeffa8083
Merge pull request #4761 from ethereum/libsolc-exceptions
Mark libsolc external C functions as noexcept
2018-08-08 15:56:12 +01:00
Matías Aereal Aeón
e902ce1aa0 Removing std:: from std::to_string and include for boost/lexical_cast 2018-08-08 11:26:30 -03:00
Alex Beregszaszi
1bfb841771 Remove experimental 0.5.0 pragma 2018-08-08 14:05:36 +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
Alex Beregszaszi
5b4ad10b3c Mark StandardCompiler::compile as noexcept
It has a generic catch statement and shouldn't leak out exceptions.
2018-08-08 13:22:40 +01:00
Christian Parpart
b9222808f6
Cleanup & polish numbers-with-underscores parsing, also improving tests. 2018-08-08 13:38:46 +02:00
chriseth
d0863f4994
Merge pull request #4748 from ethereum/validate-identifier
Assert that type identifier contains only valid characters
2018-08-08 12:50:45 +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
Alex Beregszaszi
64e3c9913f
Merge pull request #4736 from ethereum/removeFillRight
Remove remaining instances of ``fillRight``.
2018-08-08 11:27:37 +01:00
Balajiganapathi S
09a36cba02 Add stricter hex underscore rules 2018-08-08 12:05:51 +02:00
Balajiganapathi S
0000bfc604 Allow underscores in numbers. 2018-08-08 12:05:51 +02:00
Matías Aereal Aeón
7dae58cbcc Replace boost:lexical_cast<std::string> for std::to_string. 2018-08-08 03:55:43 -03:00
Alex Beregszaszi
3064bd17bc Assert that type identifier contains only valid characters 2018-08-07 22:29:21 +01:00
Alex Beregszaszi
4dc3335cda
Merge pull request #4744 from ethereum/smt-magic-variable
SMT: do not crash on referencing MagicVariableDeclaration
2018-08-07 21:30:14 +01:00
chriseth
43d6a9d763 Do not stop after the first error in reference resolution. 2018-08-07 22:04:59 +02:00
Alex Beregszaszi
f024efb7ab SMT: do not crash on referencing MagicVariableDeclaration 2018-08-07 20:43:20 +01: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
901550e473
Merge pull request #4692 from ethereum/devcore-path
Move absolutePath/sanitizePath helpers from CompilerStack to libdevcore
2018-08-07 16:15:49 +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
chriseth
c61cc98d0d
Merge pull request #4726 from ethereum/moveNothrow
Make MemberList nothrow move constructible.
2018-08-07 16:11:59 +02:00
Alex Beregszaszi
a765b5b31c
Merge pull request #4720 from ethereum/abi-rational-type-identifier
Fix type identifiers for RationalNumberType (on negative numbers)
2018-08-07 14:25:11 +01:00
Alex Beregszaszi
13e37df97c Allow enums in interfaces 2018-08-07 13:28:53 +01:00
Alex Beregszaszi
b0f9fc5af0 Fix type identifiers for RationalNumberType 2018-08-07 13:23:14 +01:00
chriseth
133fd3d302 Make MemberList nothrow move constructible. 2018-08-07 14:20:18 +02: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
8b2d630275
Merge pull request #4724 from ethereum/slot-in-assembly
Do not crash on using _slot and _offset suffixes on their own
2018-08-07 12:55:40 +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
chriseth
71e26f6adb Remove clone feature. 2018-08-07 11:10:50 +01:00
Christian Parpart
4c90ddf64a
libsolidity: Remove dead code wrt. VariableDeclaration::canHaveAutoType()
Closes #4667
2018-08-07 11:34:13 +02:00
Alex Beregszaszi
bd75d4268b Move fullyQualifiedName to ContractDefinition only 2018-08-06 18:58:27 +02:00
chriseth
276724dedc
Merge pull request #4663 from ethereum/dropConstantAST
[BREAKING] Drop constant field from JSON AST
2018-08-06 18:55:12 +02:00
Alex Beregszaszi
eccc603291 FixedBytes(0) is invalid, do not check for it in ABIEncoderV2 2018-08-06 16:54:05 +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
3de0b8b7f0 Move absolutePath/sanitizePath helpers from CompilerStack to libdevcore 2018-08-06 12:54:22 +01: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
Daniel Kirchner
44374a5846 Remove "constant" from JSON AST. 2018-08-06 11:15:25 +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
009a55c82d
Merge pull request #4327 from ethereum/document-internals
Properly explain all the analsys steps in CompilerStack
2018-08-02 15:07:35 +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
Alex Beregszaszi
6003ed2abd
Merge pull request #4603 from ethereum/smtlib2
[SMTLib2] Fix repeated declarations
2018-08-02 12:04:58 +01:00
Leonardo Alt
90f319615f SMT model variables are sorted and printed as secondary source location 2018-08-01 23:27:46 +02:00
Leonardo Alt
b6a2655513 Replace "value" by "<result>" in the SMT model 2018-08-01 23:27:11 +02: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
chriseth
c8232d9759 Disallow conversion between unrelated contract types. 2018-08-01 11:04:35 +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
Leonardo Alt
41ac3d6cfb Remove repeated declarations in Z3 and CVC4 as well 2018-08-01 11:12:56 +02: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
f74cff622d Properly explain all the analsys steps in CompilerStack 2018-07-31 00:39:18 +01:00
Alex Beregszaszi
179427fd65 Import dev::solidity namespace in SMTPortfolio 2018-07-27 23:17:17 +01:00
Leonardo Alt
f249f9c86f [SMTLib2] Fix repeated declarations 2018-07-27 17:34:44 +01:00
Alex Beregszaszi
dea0567e06 Fix unterminated parentheses typo in SMTLib2
Found by @leonardoalt
2018-07-27 17:33:53 +01:00
Leonardo Alt
55c1fb60b4 [SMTChecker] Add CheckResult::CONFLICTING 2018-07-27 16:16:26 +01:00
Leonardo Alt
87a38e1abe [SMTChecker] SMTPortfolio: use all SMT solvers available 2018-07-27 16:15:34 +01:00
Leonardo Alt
b356f6a7f9 Setting timeout to Z3 and CVC4 2018-07-27 16:01:48 +02:00
Leonardo Alt
06dbcb3afe Only ask for a model if it's SAT 2018-07-27 14:13:22 +02:00
Alex Beregszaszi
ae15b52d93
Merge pull request #4565 from ethereum/smt-stringutils-crash
Add assert for both branches in mergeVariables in SMTChecker
2018-07-25 11:08:47 +01:00
Alex Beregszaszi
a5a61a0b77 More consistent catch statements
Also take const& in all cases.
2018-07-25 01:18:09 +01:00
Alex Beregszaszi
d30a6de942 Add better warning on binary operation on non-integer types in SMT Checker 2018-07-24 23:23:54 +01:00
Alex Beregszaszi
278372c13d Add assert for both branches in mergeVariables in SMTChecker 2018-07-24 22:43:05 +01:00
Leonardo Alt
a2f03ea9e5 Fix abiDecode comment 2018-07-23 23:31:02 +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