Commit Graph

1904 Commits

Author SHA1 Message Date
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
chriseth
c93f0434cd Use experimental feature pragma for SMT checker. 2017-08-23 17:37:35 +02:00
chriseth
75f09f2a84 Partial support for if statements. 2017-08-23 17:37:35 +02:00
chriseth
5bfd5d98c1 Format numbers more nicely. 2017-08-23 17:37:35 +02:00
chriseth
1e05ebe50e Refactor Z3 read callback. 2017-08-23 17:37:35 +02:00
chriseth
9ac2ac14c1 Rename read file callback. 2017-08-23 17:37:35 +02:00
chriseth
ab5e3a8f6d Introduce native Z3 support. 2017-08-23 17:37:35 +02:00