Commit Graph

1094 Commits

Author SHA1 Message Date
djudjuu
e3583d04f7 include new InlineAssemblyInformation into JSON 2017-05-17 15:58:28 +02:00
djuju
a4ba5ace8a prefixChanges and contractKind-field 2017-05-17 11:14:33 +02:00
djuju
2fa7646944 fixed styletypos, renaming and added helperfunction 2017-05-17 11:14:33 +02:00
Alex Beregszaszi
487eef18cc Use different AST node names in legacy and new format 2017-05-17 11:14:33 +02:00
Alex Beregszaszi
f2a6331ffb Support the new AST in StandardCompiler 2017-05-17 11:14:33 +02:00
chriseth
dea7b864e6 Compact format for AST-Json with backwards compatibility 2017-05-17 11:14:33 +02:00
chriseth
d9b5ff0b43 Merge pull request #2222 from ethereum/julia-types
Add support for types in Julia
2017-05-16 16:59:15 +02:00
Alex Beregszaszi
c0f31e4c1b Ensure proper checks are in CompilerStack 2017-05-11 08:02:03 +01:00
Alex Beregszaszi
5b4b620d8b Do not crash on AST if parsing failed 2017-05-11 08:02:03 +01:00
Erik Quenon Steggall
0489c99870 Added change to make compile happy on MacOS 10.9.5 2017-05-05 16:49:09 -07:00
Alex Beregszaszi
8688b63fa6 Use boost range adaptors in AsmPrinter 2017-05-05 22:31:22 +01:00
Alex Beregszaszi
d6396ee85f Parse types in Julia mode 2017-05-05 22:31:22 +01:00
Alex Beregszaszi
07176e82de Assert that invalid AST elements are not printed in Julia mode 2017-05-05 14:21:25 +01:00
Alex Beregszaszi
c423e140ee Add flag for JULIA printing 2017-05-05 14:21:25 +01:00
Alex Beregszaszi
804971973d Show better error message for Julia mode 2017-05-05 14:21:25 +01:00
Alex Beregszaszi
f1f209db40 Do not allow literal pushes in Julia 2017-05-05 14:21:25 +01:00
Alex Beregszaszi
d61f9c4d4e Disable labels in Julia 2017-05-05 14:21:25 +01:00
chriseth
0582fcb93b Merge pull request #2194 from ethereum/removeerrorlabel
Remove error label / invalid jump label.
2017-05-05 14:25:43 +02:00
chriseth
230f51efb7 Cleanup, style and additional test. 2017-05-03 11:26:21 +02:00
chriseth
e0266b79f3 Refactor: Combine bool and function pointer. 2017-05-03 11:26:21 +02:00
Rhett Aultman
a6faa5acf3 Treat returns with expressions as return param use
There are many cases of code where the return parameters exist mostly
as a form of documentation.  This change ensures that they do not have
to be used in the function body so long as there is a return supplying
values
2017-05-03 11:26:21 +02:00
Rhett Aultman
a40c8cfb68 Warn on unused local variables
Analyze functions for all local variables, parameters, and named
return variables which are never used in the function, and issue
a warning.
2017-05-03 11:26:21 +02:00
Alex Beregszaszi
c09f071ff6 Merge pull request #2211 from ethereum/jsonio-fixes
Follow the JSON I/O spec closely
2017-05-02 16:47:14 +01:00
Alex Beregszaszi
ed3ab3506a Follow the JSON I/O spec closely 2017-05-02 16:52:38 +02:00
chriseth
acab525fef Merge pull request #2199 from roadriverrail/no_unary_plus
Deprecate use of unary '+'
2017-05-02 16:43:47 +02:00
Alex Beregszaszi
2871663cad Remove why3 from standard compiler 2017-05-02 14:49:13 +01:00
chriseth
96870686a9 Style and stricter tests. 2017-05-02 15:48:58 +02:00
chriseth
f42a9a9408 Merge pull request #2198 from ethereum/conditionalCompilerStateReset
conditional reset of compilerState-Enum
2017-05-02 15:17:10 +02:00
chriseth
2891b98882 Merge pull request #2110 from federicobond/fix-posttypechecker
Fix PostTypeChecker retaining state across contracts
2017-05-02 12:12:46 +02:00
Rhett Aultman
e544698ad3 Deprecate use of unary '+'
The unary '+' serves no meaningful purpose in Solidity and it makes it
possible to produce typos with dagerous implications (e.g. 'a =+5 '),
so we are deprecating it.  The SyntaxChecker currently issues warnings
on the unary '+' but will still compile it for now.
2017-04-28 17:43:19 -07:00
djuju
e9954eb325 conditional reset of compilerState-Enum 2017-04-28 18:46:27 +02:00
chriseth
f33614e1f7 Merge pull request #2171 from ethereum/splitParseAndAnalyze
refactoring parse() into two separate functions
2017-04-28 17:19:31 +02:00
djuju
a6306a1d44 error fixed 2017-04-28 16:20:32 +02:00
djuju
45f8c5aa88 enumchecks not working 2017-04-28 15:24:59 +02:00
chriseth
28f10f4783 Remove error label / invalid jump label. 2017-04-28 13:14:52 +02:00
chriseth
f9bccab7b7 Merge pull request #2193 from ethereum/julia-assign-stack
Disallow assign from stack in Julia (=: var)
2017-04-27 22:00:33 +02:00
chriseth
6776be33a8 Merge pull request #2189 from ethereum/julia-instructions
Do not disallow EVM instructions as identifiers in Julia
2017-04-27 21:58:45 +02:00
Alex Beregszaszi
20206a04dd Disallow assign from stack in Julia (=: var) 2017-04-27 19:20:53 +01:00
Alex Beregszaszi
8020144d06 Do not validate identifiers against EVM instructions in JULIA 2017-04-27 18:16:42 +01:00
Alex Beregszaszi
01b60a4f8d Add flag for JULIA parsing 2017-04-27 18:16:42 +01:00
Alex Beregszaszi
b0485e327b Make assembler errors fatal 2017-04-27 16:34:57 +01:00
Alex Beregszaszi
16276ab10b Catch assembler exceptions and throw readable Solidity exceptions 2017-04-27 16:06:49 +01:00
Alex Beregszaszi
8b79517d47 Do not validate identifiers against EVM instructions in JULIA 2017-04-27 14:12:48 +01:00
Alex Beregszaszi
b48bc81d40 Add flag for JULIA parsing 2017-04-27 14:12:43 +01:00
djuju
5fd7942173 documentation, checks and renaming 2017-04-27 12:56:56 +02:00
djuju
99a7aefb75 refactoring parse() into two separate functions 2017-04-27 12:38:24 +02:00
Alex Beregszaszi
35f1cf92db Remove parentheses from around function return parameters 2017-04-27 10:08:02 +01:00
chriseth
d7b3ce24a4 Check stack height during code generation. 2017-04-26 17:12:04 +02:00
chriseth
f3ec2ba39e Refactor to combined scope and stack height info. 2017-04-26 17:12:04 +02:00
chriseth
68218387cf Store stack height in analysis phase. 2017-04-26 12:34:24 +02:00
chriseth
1d712c7d64 Fix storage access tests. 2017-04-25 16:49:04 +02:00
chriseth
e841b23bfd Special case for storage types with offset zero. 2017-04-25 16:49:04 +02:00
chriseth
3df7b06464 Pass internal resolver to assembly analyzer. 2017-04-25 16:49:04 +02:00
chriseth
0ebaf220b5 Fix refactoring error. 2017-04-25 16:49:04 +02:00
chriseth
978884d9ca Build fix. 2017-04-25 16:49:04 +02:00
chriseth
478f2997ea Storage access from inline assembly. 2017-04-25 16:49:04 +02:00
chriseth
5f4b68e211 Another stack check. 2017-04-25 16:49:04 +02:00
chriseth
dfb7d5ebd9 Move analysis out of code generator. 2017-04-25 16:49:04 +02:00
chriseth
dfaab73efe Only allow access to local variables and only if they have a stack size of one. 2017-04-25 16:49:04 +02:00
chriseth
f19e6a09a7 Check again that instruction argument count is correct. 2017-04-25 16:49:03 +02:00
chriseth
b622c2e9d3 Only run stack filler on AST elements that are or contain declarations. 2017-04-25 16:49:03 +02:00
chriseth
34717838da Review comments. 2017-04-25 16:49:03 +02:00
chriseth
83bf34c571 Review comments and cleanup. 2017-04-25 16:49:03 +02:00
chriseth
4755757c00 Remove some errors checks from code generation (was moved to analysis already). 2017-04-25 16:49:03 +02:00
chriseth
580921b329 Perform stack height checks in assembly analysis phase. 2017-04-25 16:49:03 +02:00
chriseth
c4a0826f40 Add some missing error locations. 2017-04-25 16:49:03 +02:00
chriseth
c6fa78c73e Use actual type checking phase of assembler. 2017-04-25 16:49:03 +02:00
chriseth
e0849f2f3b Split external identifier access into resolving and code generation. 2017-04-25 16:49:03 +02:00
chriseth
5d6747eb32 Refactor assembly analysis into scope filling and checking. 2017-04-25 16:49:03 +02:00
chriseth
72fdf755c9 Register functions. 2017-04-25 16:49:03 +02:00
chriseth
c3b839ca75 Merge pull request #2164 from ethereum/jsonio-catch-internal-exceptions
JSON IO catch internal exceptions
2017-04-25 10:45:59 +02:00
Alex Beregszaszi
5e7a643051 Catch jsoncpp exceptions 2017-04-24 22:49:50 +01:00
Alex Beregszaszi
2f66c69bd1 Do not crash on invalid JSON input 2017-04-24 22:38:03 +01:00
chriseth
4d111e3366 Merge pull request #2152 from ethereum/warnRevert
Warn about side-effect free statements.
2017-04-24 19:25:45 +02:00
chriseth
d3b8d5f049 Merge pull request #2161 from ethereum/jsonio-cleanup
Small cleanups to JSON IO
2017-04-24 17:12:37 +02:00
chriseth
2c3fea55df Merge pull request #2159 from ethereum/jsonio-source-verify
Verify supplied hash in JSON I/O
2017-04-24 16:15:32 +02:00
Alex Beregszaszi
4a9ba5b952 Verify supplied hash in JSON I/O 2017-04-24 14:34:29 +01:00
Alex Beregszaszi
43eb839871 Do not fail if parsing failed in StandardCompiler 2017-04-24 11:44:33 +01:00
Alex Beregszaszi
3cd02ca148 Change error type names to not include spaces 2017-04-24 11:34:02 +01:00
Alex Beregszaszi
e24c35bce0 Be a bit more verbose and capture Boost exceptions in StandardCompiler 2017-04-24 11:34:02 +01:00
Alex Beregszaszi
c82a203206 Document that the ReadFileCallback should not emit exceptions 2017-04-22 14:08:28 +01:00
chriseth
c76e0a5872 Changed const reference to value. 2017-04-22 01:12:38 +02:00
Alex Beregszaszi
8de02c7778 Support URL sources in StandardCompiler 2017-04-21 16:44:15 +01:00
chriseth
937695bfdc Change error message. 2017-04-21 15:04:03 +02:00
chriseth
9bc9fe6af7 Warn about side-effect free statements. 2017-04-21 11:36:38 +02:00
Alex Beregszaszi
6ae7a87b78 Rename ast to legacyAST in StandardCompiler 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
f71b465eb7 Ensure the language field is present in the JSON 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
6d13260232 Pull out collectEVMObject 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
413c146edd Enclose local functions in a namespace 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
aa0776d5e8 Support Why3 in StandardCompiler 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
b513db74a0 Support gas estimates in StandardCompiler 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
77d5148f0d Reject import URLs for now 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
df7e703925 Support the metadata.useLiteralContent setting 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
ef559de84f Properly split contract filename and name 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
ad1fe86508 Support linkReferences 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
2df52edfbd Support new assembly output 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
a87dd17d0f Move opcodes inside the bytecode section 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
63b6d0099f Support methodIdentifiers 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
f25efceaf8 Support proper error reporting in StandardCompiler 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
b3c6b1e936 Refactor formatError 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
2c15e2b541 Fail if no sources are given 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
5aec120da3 Support the AST output 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
50bb24af5e Include source mapping identifier 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
115458c50e Output legacyAssembly in StandardCompiler 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
4eaee772b3 Capture error messages from the JSON parser 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
f8cb0766d4 Add formatFatalError() to StandardCompiler 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
ce87984cc1 Parse remappings in StandardCompiler 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
81775b2df6 Parse libraries in StandardCompiler 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
13fa440d37 Parse optimizer settings in StandardCompiler 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
418759ece0 Catch exceptions of StandardCompiler 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
985db17e1e Initial implementation of StandardCompiler 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
5754b13b47 Add StandardCompiler skeleton 2017-04-20 19:38:00 +01:00
Alex Beregszaszi
bf074f3f41 Fix source index allocation in CompilerStack. Depending on compiler(optimisations) this could be off-by-one. 2017-04-20 19:20:14 +01:00
Yoichi Hirai
3cacea74c9 Merge pull request #2117 from ethereum/implementAsmOut
Implement missing assembly output functions and do not use PushString for assembly.
2017-04-18 18:11:25 +02:00
Alex Beregszaszi
54dcb0e11b Keep gas values as a string in CompilerStack::gasEstimate 2017-04-13 02:18:29 +01:00
Alex Beregszaszi
3fbb48bd46 Exclude fallback function from the internal functions in estimateGas 2017-04-13 02:17:40 +01:00
Alex Beregszaszi
e6221108b6 Move gasEstimate into CompilerStack 2017-04-13 02:17:37 +01:00
chriseth
4d715e9055 Implement missing assembly output functions and do not use PushString for assembly. 2017-04-11 19:54:44 +02:00
Alex Beregszaszi
bd48f181b5 Merge pull request #2098 from ethereum/sourceformatter
Introduce formatExceptionInformation
2017-04-10 14:46:59 +01:00
Alex Beregszaszi
b1db6eac8b Introduce formatExceptionInformation 2017-04-10 14:07:36 +01:00
Alex Beregszaszi
623b8eb107 Pull out ReadFile from CompilerStack 2017-04-10 12:49:47 +01:00
Federico Bond
e6f13353f2 Fix PostTypeChecker retaining state across contracts 2017-04-08 18:45:15 -03:00
chriseth
4792806b99 Fix: Contract inheriting from base with unimplemented constructor is abstract. 2017-03-21 18:12:08 +01:00
chriseth
5ced3af3a0 Visit structs only once. 2017-03-21 15:05:59 +01:00
Alex Beregszaszi
96c09fcbcd Simplify interface checks for FunctionDefinition 2017-03-17 17:07:20 +00:00
Alex Beregszaszi
2067a00f22 Disallow private or internal functions in interfaces 2017-03-17 17:07:18 +00:00
Alex Beregszaszi
d5102c1db7 Disallow constructor in interfaces 2017-03-17 17:06:52 +00:00
Alex Beregszaszi
2c4bce2d62 Disallow enums in interfaces 2017-03-17 17:06:52 +00:00
Alex Beregszaszi
16a91ef90a Use declared instead of defined 2017-03-17 17:06:52 +00:00
Alex Beregszaszi
f8da9a8fd5 Factor out tokenToContractKind 2017-03-17 17:06:52 +00:00
Alex Beregszaszi
4693aed177 Reject invalid definitions for interface contracts 2017-03-17 16:27:04 +00:00
Alex Beregszaszi
54230d2d5d Support interface (contract) keyword in the parser 2017-03-17 16:27:04 +00:00
Alex Beregszaszi
6d4628ace4 Add ContractKind to ContractDefinition 2017-03-17 16:27:04 +00:00
chriseth
c37397c178 Merge pull request #1773 from ethereum/ASTEntry
Ast entry
2017-03-17 17:24:58 +01:00
chriseth
44a0329921 Comment. 2017-03-17 14:44:44 +01:00
chriseth
245c8914cf Merge pull request #1792 from ethereum/function-kind
Rename FunctionType::Location to Kind
2017-03-17 10:25:58 +01:00
Alex Beregszaszi
e0ff70778a Rename ErrorMesage to ErrorMessage 2017-03-16 23:59:36 +00:00
djudjuu
616a9854e9 AST entry for VariableDeclaration 2017-03-16 16:56:44 +01:00
Alex Beregszaszi
3ae88377d6 Change references to FunctionType::Location 2017-03-16 12:49:52 +00:00
Alex Beregszaszi
7123f25210 Rename FunctionType::Location to FunctionType::Kind 2017-03-16 12:49:17 +00:00
chriseth
0c8a766146 Merge pull request #1698 from ethereum/exp-notation
Fix scientific notation in number literals
2017-03-15 14:55:45 +01:00
Alex Beregszaszi
e923f27ea8 Split out parseRational from isValidLiteral 2017-03-15 13:06:27 +00:00
Alex Beregszaszi
dde87de4cf Rename x to value 2017-03-15 13:06:27 +00:00
Alex Beregszaszi
a2b9f52ca4 Disallow radix points in hex literals 2017-03-15 13:06:27 +00:00
Alex Beregszaszi
07045d492f Do not try parsing hex numbers as scientific notation 2017-03-15 13:06:27 +00:00
Alex Beregszaszi
dfc8f890bf Support older version of boost 2017-03-15 13:06:27 +00:00
Alex Beregszaszi
1083e6da68 Support negative exponent 2017-03-15 13:06:26 +00:00
Alex Beregszaszi
924a8fff6b Fix exponentional notation in number literals 2017-03-15 13:06:24 +00:00
chriseth
ab178b8bac Mention 'transfer' in warning about unchecked 'send'. 2017-03-15 11:10:24 +01:00
Yoichi Hirai
d134fda0c0 Merge pull request #1729 from ethereum/constantvariables
Only allow pure expressions for constant state variables.
2017-03-15 10:03:35 +01:00