Commit Graph

1729 Commits

Author SHA1 Message Date
Alex Beregszaszi
c5947ae6e3 Remove Why3 error class 2017-06-30 22:30:43 +01:00
Alex Beregszaszi
d4fecc7b11 Warn on JUMP/JUMPI in inline assembly 2017-06-30 20:47:14 +01:00
Alex Beregszaszi
95f7902955 Merge pull request #2491 from ethereum/warnAboutCallcode
Warn about callcode.
2017-06-30 20:39:20 +01:00
chriseth
044058276e Warn about callcode. 2017-06-30 16:37:32 +02:00
chriseth
71d866cd7a Abort early if there is nothing to encode or decode. 2017-06-30 14:16:16 +02:00
Alex Beregszaszi
dad6a9ad08 Merge pull request #2457 from ethereum/fixNegativeStackHeight
Fix negative stack height
2017-06-28 18:16:52 +01:00
Alex Beregszaszi
c70d73809a Use boost::starts_with 2017-06-28 17:01:55 +01:00
Alex Beregszaszi
06fe61f89b Rename to isHexNumber() 2017-06-28 17:01:55 +01:00
Alex Beregszaszi
6a708b0cfe Document appendFunctionSelector 2017-06-28 18:00:40 +02:00
chriseth
ef9a7b2144 Stack adjustment and code generation for fallback function.
This assumes that the fallback function does not have return parameters.
2017-06-28 18:00:31 +02:00
Alex Beregszaszi
8b0c866f02 Add hasHexPrefix() to AST::Literal 2017-06-28 16:57:32 +01:00
chriseth
168f64f4cb Fix negative stack size checks. 2017-06-28 16:55:49 +01:00
chriseth
c3e5d6b7ef Give min and max values in warning message. 2017-06-28 15:02:25 +02:00
chriseth
9f19bc8cbc Warn if using var x = 0 2017-06-28 11:41:03 +02:00
chriseth
708d17d13f Merge pull request #2464 from federicobond/deprecate-function-type-names
Warn deprecated usage of parameter names in function types
2017-06-27 16:32:48 +02:00
Alex Beregszaszi
bc31d4969c Merge pull request #2437 from ethereum/warnDoubleCopyStorage
Warn about copies in storage that might overwrite unexpectedly.
2017-06-27 10:24:03 +01:00
Alex Beregszaszi
9d201a086c Merge pull request #2459 from ethereum/noComparisonForSomeTypes
No comparison for some types
2017-06-26 22:55:22 +01:00
Alex Beregszaszi
b0ab9aaee0 Merge pull request #2453 from ethereum/memcopyAsForLoop
Use for loop for assembly memcopy.
2017-06-26 22:39:30 +01:00
chriseth
ab15040caa Comment about zero length. 2017-06-26 21:48:17 +01:00
Federico Bond
70fd5c1770 Warn deprecated usage of parameter names in function types 2017-06-26 15:39:01 -03:00
chriseth
d0b6de0b34 Warn about copies in storage that might overwrite unexpectedly. 2017-06-26 16:31:36 +02:00
chriseth
4407a13c17 Only allow equality checks for internal function types. 2017-06-26 16:30:37 +02:00
chriseth
f47e6e90fb Disallow comparisons between some types. 2017-06-26 16:30:36 +02:00
Alex Beregszaszi
751ba701bc Merge pull request #2450 from ethereum/addressstring
Fix for strings treated as addresses.
2017-06-26 12:18:33 +01:00
Alex Beregszaszi
a0b0df2d98 Merge pull request #2460 from ethereum/disallowMultiModifier
Disallow invoking the same modifier multiple times.
2017-06-26 11:51:12 +01:00
chriseth
c328ab411b Merge pull request #2442 from ethereum/remove-why3
Remove Why3 generator
2017-06-26 09:20:23 +02:00
chriseth
d94a12a34c Reformat. 2017-06-26 09:19:11 +02:00
chriseth
0aaa6d876d Use for loop for assembly memcopy. 2017-06-26 09:18:14 +02:00
chriseth
f879489291 Merge pull request #2449 from federicobond/warn-bytesxx-decimal
Warn if decimal literals are used in a bytesXX context
2017-06-26 09:13:41 +02:00
Alex Beregszaszi
555dc4f46f Remove Why3 generator 2017-06-25 12:26:16 +01:00
Federico Bond
7a3ea61ffd Warn if decimal literals are used in a bytesXX context
Fixes #2349
2017-06-23 23:21:19 -03:00
chriseth
5a75581f66 Disallow invoking the same modifier multiple times. 2017-06-23 20:12:22 +02:00
chriseth
64067975e4 Review suggestions. 2017-06-23 19:29:11 +02:00
chriseth
831ed08387 Change invalid opcode to revert for input validation. 2017-06-23 19:29:11 +02:00
chriseth
1f7697eee3 Merge pull request #2448 from federicobond/constant-addresses
Fix address literals not being treated as compile-time constants
2017-06-23 11:56:24 +02:00
chriseth
50e8a887a4 Merge pull request #2443 from ethereum/julia-asm-size
Support appendAssemblySize() in AbstractAssembly
2017-06-23 11:30:02 +02:00
Federico Bond
0fb1621a98 Fix address literals not being treated as compile-time constants
The early return implemented for address literals in TypeChecker was
preventing the isPure annotation from getting applied. Closes #2441
2017-06-23 11:19:57 +02:00
Alex Beregszaszi
f9144ae5a4 Merge pull request #2444 from ethereum/parser-scanner
Avoid including Scanner.h in ParserBase.h
2017-06-23 00:14:18 +01:00
Alex Beregszaszi
5cf2332d6d Support appendAssemblySize() in AbstractAssembly 2017-06-23 00:09:35 +01:00
Alex Beregszaszi
79ed529b3f Merge pull request #2452 from ethereum/fixPassingEmptyString
Fix passing empty string
2017-06-22 22:33:06 +01:00
Alex Beregszaszi
007ffe9430 Avoid including Scanner.h in ParserBase.h 2017-06-22 22:22:19 +01:00
chriseth
bffb8c404f Merge pull request #2408 from federicobond/constant-parameters
Fix segmentation fault with constant function parameters
2017-06-22 18:46:15 +02:00
chriseth
83ea7793d9 Fix ABI encoding of empty string literal. 2017-06-22 17:55:06 +02:00
chriseth
f340ff8764 Fix strings interpreted as addresses. 2017-06-22 16:48:44 +02:00
Alex Beregszaszi
f823952d9f Merge pull request #2404 from ethereum/methodidentifiers
Clean up method identifiers handling in CLI/CompilerStack
2017-06-22 13:00:19 +01:00
Alex Beregszaszi
d5f8ce90c7 Merge interface/Exceptions and interface/Utils 2017-06-22 11:25:07 +01:00
Alex Beregszaszi
ba7d698ee6 Make compiler.contractDefinition private 2017-06-22 11:13:06 +01:00
Alex Beregszaszi
b99e4bc68b Rework functionHashes into methodIdentifiers 2017-06-22 11:13:06 +01:00
Alex Beregszaszi
63395b31af Use compilerStack.functionHashes in StandardCompiler 2017-06-22 11:13:06 +01:00
Federico Bond
0f8ad1d68f Fix segmentation fault with constant function parameters 2017-06-21 22:46:27 -03:00
chriseth
622703c0c0 Merge pull request #2409 from federicobond/trailing-commas-2
Improve error reporting of trailing commas
2017-06-19 12:01:19 +02:00
chriseth
b3a7b5a145 Merge pull request #2416 from federicobond/multiple-specifiers
Display error if payable or constant is specified multiple times
2017-06-19 12:00:04 +02:00
chriseth
0c75afb2c1 Merge pull request #2225 from ethereum/julia-for
Implement for statement in assembly parser / printer / code generator
2017-06-19 11:53:22 +02:00
Federico Bond
d170ceaf3d Display error if payable or constant is specified multiple times 2017-06-17 12:21:46 -03:00
chriseth
868b5ad3aa Split block code generation into main and finalize. 2017-06-16 10:56:21 +01:00
chriseth
78b49db779 Helper to count the number of variables in a scope. 2017-06-16 10:56:21 +01:00
chriseth
8e5c4bf21d Add include file to forward-declare inline assembly structs. 2017-06-16 10:56:21 +01:00
chriseth
49b1112117 For loops analysis. 2017-06-16 10:56:21 +01:00
Alex Beregszaszi
47925bc14e Parse for statement in assembly parser / printer 2017-06-16 10:56:21 +01:00
Federico Bond
0eaae03bbf Try to recover from parser errors where possible 2017-06-15 21:14:05 -03:00
Federico Bond
60bfae75e5 Improve error reporting of trailing commas 2017-06-15 13:10:08 -03:00
chriseth
9084d48750 Merge pull request #2382 from ruchevits/combined-json-hashes
Allow including hashes of method signatures in --combined-json output
2017-06-15 10:10:18 +02:00
Alex Beregszaszi
c08c4b8b6f Move subroutine helpers from CompilerContext to Assembly 2017-06-14 21:21:26 +01:00
Alex Beregszaszi
398099f50e Remove obsolete errorTag() 2017-06-14 21:21:26 +01:00
Alex Beregszaszi
42b61171d9 Merge pull request #2192 from winsvega/develop
add STATICCALL instruction
2017-06-14 21:03:32 +01:00
chriseth
f008ddf836 Merge pull request #2381 from ethereum/fixcrash
Fix a crash about a non-callable expression.
2017-06-14 18:35:38 +02:00
chriseth
fd5bf16101 Merge pull request #2384 from ethereum/parseFunctionalInstructions
Enforce function arguments when parsing functional instructions.
2017-06-14 18:35:16 +02:00
Dimitry
c20cdd0a05 add new opcode instructions to the parser
STATICCALL        0xfa  6 inputs  (gas address mem1 mem2 mem3 mem4)
2017-06-14 18:18:12 +02:00
chriseth
29e7ad3d7b Silence compiler warning. 2017-06-14 17:39:36 +02:00
Alex Beregszaszi
a921bd0ae4 Display user friendly instruction name 2017-06-14 16:00:39 +02:00
Alex Beregszaszi
494b9dbfaa Issue warning for using CREATE2 in inline assembly 2017-06-14 16:00:39 +02:00
chriseth
1ae0e082b3 Merge pull request #2392 from federicobond/disallow-trailing-commas
Forbid trailing commas in named arguments
2017-06-14 15:31:40 +02:00
chriseth
1b1f35762e Enforce function arguments when parsing functional instructions. 2017-06-14 14:51:47 +02:00
chriseth
21aafaa704 Merge pull request #2331 from ethereum/ASTDocumentationEntry
documentation field added to ContractDefinition-Node
2017-06-14 14:32:27 +02:00
chriseth
e232a105f0 Merge pull request #2327 from ethereum/assembler-object
Return assembler object in AssemblyStack
2017-06-14 14:28:06 +02:00
chriseth
07cc84fade Fix a crash about a non-callable expression. 2017-06-14 14:26:20 +02:00
chriseth
43cfab70d0 Merge pull request #2389 from ethereum/moveLabelIDs
Move LabelIDs to generation phase.
2017-06-14 14:12:33 +02:00
Federico Bond
fd8365df08 Forbid trailing commas in named arguments 2017-06-14 00:15:27 -03:00
chriseth
154002cda0 Move "active variable" to analysis phase. 2017-06-14 00:10:33 +02:00
chriseth
1bf717fd65 Remove struct constructor. 2017-06-14 00:03:08 +02:00
chriseth
c554145f4d Move stack height to generation phase. 2017-06-14 00:01:06 +02:00
chriseth
45d96959f8 Move LabelIDs to generation phase. 2017-06-13 22:01:15 +02:00
Edward Ruchevits
5f7bca94e5 Reverted functionHashes output to use method signature as keys 2017-06-13 18:04:33 +01:00
Edward Ruchevits
2e816967d3 Allow including hashes of method signatures in --combined-json output 2017-06-13 17:03:17 +01:00
Yoichi Hirai
8775e77305
Add a warning about a varialbe of the name of an instruction 2017-06-13 16:57:08 +02:00
Alex Beregszaszi
05af6c9255
Warn if returndatasize/returndatacopy is used 2017-06-13 16:57:07 +02:00
Alex Beregszaszi
ca92bda886 Supply text representation of assembly 2017-06-09 16:40:14 +02:00
Alex Beregszaszi
f0d213e6b5 Introduce MachineAssemblyObject 2017-06-09 16:40:14 +02:00
Alex Beregszaszi
fe3b46554a Merge pull request #2362 from ethereum/lowercase_instructions
Use lowercase when reporting instruction error.
2017-06-09 14:49:59 +01:00
chriseth
bf2b5c746a Use lowercase when reporting instruction error. 2017-06-09 15:17:29 +02:00
Alex Beregszaszi
8768080a02 Remove excess includes 2017-06-09 12:47:05 +01:00
Alex Beregszaszi
1da3af161f Simplify CodeGenerator by remove seldom used case 2017-06-09 12:45:56 +01:00
Alex Beregszaszi
114c157b04 Remove obsolete AsmStack 2017-06-09 11:43:41 +01:00
Alex Beregszaszi
ae6251effd Use inline assembly directly and not via AsmStack 2017-06-09 11:43:40 +01:00
chriseth
6b3e7f79cf Comments and consistent variable names. 2017-06-09 10:45:36 +01:00
chriseth
308a726ad1 Fix: Copy resolver. 2017-06-08 15:52:45 +02:00
chriseth
b32d5e4cc0 Visitor bugfix. 2017-06-08 15:52:45 +02:00
chriseth
ef3d5874fe Remove error reporter from code generation phase. 2017-06-08 15:52:45 +02:00
chriseth
19f707aeaa Some more comments. 2017-06-08 15:52:45 +02:00
chriseth
0185f3cbf6 Correct stack height adjustment after returnsub. 2017-06-08 15:52:45 +02:00
chriseth
ba5ee71b7f Generate only single error in inline assembly. 2017-06-08 15:52:45 +02:00
chriseth
fefd3b866d Introduce machine-dependent stack adjustment. 2017-06-08 15:52:45 +02:00
chriseth
97cc968a13 Initial EVM1.5 assembly implementation. 2017-06-08 15:52:44 +02:00
Alex Beregszaszi
aa310f9fec Refactor AssemblyStack 2017-06-07 14:42:22 +01:00
Alex Beregszaszi
502304f30b Add analyze(block) to AssemblyStack 2017-06-07 14:42:22 +01:00
Alex Beregszaszi
937c208320 Reset error list in parseAndAnalyze 2017-06-07 14:41:44 +01:00
chriseth
1fba984966 Merge pull request #2332 from ethereum/fixLiteralPrint
fix Literalprint
2017-06-06 15:09:48 +02:00
djudjuu
62eafdd010 adjusted testcase and renaming 2017-06-06 13:26:23 +02:00
chriseth
b4ae188a0f Merge pull request #2336 from ethereum/expectExpression
Refactor to use expectExpression in analyzer.
2017-06-01 15:57:28 +02:00
chriseth
d5408f78ad Add comma. 2017-06-01 15:56:49 +02:00
chriseth
40f3e4413b Improved error message. 2017-06-01 15:31:07 +02:00
Alex Beregszaszi
998ca552b8 Fix state after CompilerStack.reset() 2017-06-01 13:44:08 +01:00
chriseth
05004253ba Refactor to use expectExpression in analyzer. 2017-06-01 14:28:39 +02:00
Alex Beregszaszi
c212d7c2e6 Remove unused functions from CompilerStack 2017-06-01 13:28:05 +01:00
djudjuu
597bf8a43d fix Literalprint 2017-05-30 19:53:32 +02:00
chriseth
d4a57d81ba Merge pull request #2317 from ethereum/keccak256
Use keccak256 in tests and replace the SHA3 instruction in assembly
2017-05-30 19:34:28 +02:00
djudjuu
2e7190534b documentation field added to ContractDefinition-Node 2017-05-30 18:52:43 +02:00
Rhett Aultman
89b60ffbd4 Refactor error reporting
This commit introduces ErrorReporter, a utility class which consolidates
all of the error logging functionality into a common set of functions.
It also replaces all direct interactions with an ErrorList with calls to
an ErrorReporter.

This commit resolves issue #2209
2017-05-30 07:28:31 -07:00
Alex Beregszaszi
75e4a2be1b Alias sha3 to keccak256 in inline assembly 2017-05-30 10:54:29 +01:00
Alex Beregszaszi
0c8beac357 Rename the SHA3 assembly instruction to KECCAK256 2017-05-30 10:54:29 +01:00
chriseth
8b29cc5535 Merge pull request #2319 from ethereum/virtualBlocks
Introduce virtual blocks for function arguments.
2017-05-29 16:52:51 +02:00
chriseth
4af55c78eb Introduce virtual blocks for function arguments. 2017-05-29 16:18:16 +02:00
chriseth
9adff68ecc Introduce LabelID typedef. 2017-05-29 15:40:32 +02:00
chriseth
2c4a107f43 Merge pull request #2311 from ethereum/julia-types
Validate types for Julia (part 1)
2017-05-29 14:12:38 +02:00
Alex Beregszaszi
751c97ca19 Pull out common code to a helper 2017-05-26 21:40:14 +01:00
Alex Beregszaszi
48f58aa3f9 Remove duplicate code 2017-05-26 21:02:31 +01:00
Alex Beregszaszi
9337003d5e Use the new ParserBase API in AsmParser 2017-05-26 20:44:34 +01:00
Alex Beregszaszi
3459052ae8 Add scanner helpers to ParserBase 2017-05-26 20:44:34 +01:00
Alex Beregszaszi
2fefe3b549 Move Solidity specific methods from ParserBase to the Solidity Parser 2017-05-26 20:44:34 +01:00
Alex Beregszaszi
2a50e869d0 Move builtin type list to the top 2017-05-26 20:43:28 +01:00
Alex Beregszaszi
efadf7e41f Change error message for invalid type 2017-05-26 20:42:17 +01:00
Alex Beregszaszi
8fe79fe706 Introduce Julia mode in AsmAnalyzer 2017-05-26 20:39:30 +01:00
Alex Beregszaszi
3b75c5b45f Validate that only basic types are used in Julia 2017-05-26 20:39:10 +01:00
Alex Beregszaszi
dda497ca02 Move constructor to AsmAnalyzer header 2017-05-26 20:39:10 +01:00
chriseth
fe32531a16 More comments for assembly 2017-05-26 15:08:27 +02:00
chriseth
261731f7ee Adapt EVM codegen to new namespace. 2017-05-26 15:08:27 +02:00
chriseth
71b923cc36 Move EVM codegen to libjulia. 2017-05-26 15:03:30 +02:00
chriseth
eaa13d42a0 Support multiple assembly front and backends. 2017-05-26 15:03:29 +02:00
chriseth
68e1e464be Merge pull request #2316 from ethereum/inlineasm-cleanup
Better error message for elementary operations
2017-05-26 11:29:51 +02:00
chriseth
ec676ba9f2 Merge pull request #2224 from ethereum/julia-switch
Implement switch statement in the assembly parser/printer
2017-05-26 11:24:38 +02:00
chriseth
40d5d5a956 Also change error message. 2017-05-26 11:13:32 +02:00
Alex Beregszaszi
e410cec19a Better error message for elementary operations 2017-05-26 09:41:53 +01:00
Alex Beregszaszi
05fcf1989c Better error messages for invalid switch cases 2017-05-26 03:20:34 +01:00
Alex Beregszaszi
c64bd33784 Disallow instructions as a switch expression 2017-05-26 03:20:34 +01:00
Alex Beregszaszi
d745dd6542 Visit case bodies in scope filler 2017-05-26 03:20:34 +01:00
Alex Beregszaszi
ba8a79c600 Do not stop on first switch error 2017-05-26 03:20:31 +01:00
Alex Beregszaszi
e48e84ca2b Check token within parseCase 2017-05-26 03:20:15 +01:00
Alex Beregszaszi
db3d9e0416 Switch cases are not followed by colon 2017-05-26 03:20:15 +01:00
Alex Beregszaszi
66eab1caf6 Change switch case string to Literal 2017-05-26 03:20:10 +01:00
Alex Beregszaszi
b5080860d5 Implement switch statement in the assembly parser/printer 2017-05-26 03:16:09 +01:00
Alex Beregszaszi
8c3ec16132 Scanner requires only the SourcesSet state 2017-05-24 22:45:10 +01:00
Alex Beregszaszi
338202ea96 Uniform error messages 2017-05-24 13:35:52 +01:00
Alex Beregszaszi
56fe3a6ab9 Better error messages during parsing functional instructions 2017-05-24 13:35:52 +01:00
chriseth
451acd4c9f Merge pull request #2301 from ethereum/ASTFunctionTypeFix
insert ParameterList-node in FunctionType-json
2017-05-24 14:28:07 +02:00
chriseth
6873c936ed Merge pull request #2294 from ethereum/inlineasm
Fix scope assert in AsmAnalyzer
2017-05-24 14:19:08 +02:00
chriseth
e980812fab Merge pull request #2289 from ethereum/astjson-fix
Fix AST JSON converter type lookup
2017-05-24 13:55:56 +02:00
djudjuu
26abd61d9b insert ParameterList-node in FunctionType-json 2017-05-24 13:52:16 +02:00
Alex Beregszaszi
74d41ad25f Fix scope assert in AsmAnalyzer 2017-05-24 11:58:49 +01:00
Alex Beregszaszi
b77b11781d Rename parseFunctionalInstruction to parseCall 2017-05-24 01:48:54 +01:00
Alex Beregszaszi
4f738ff1c0 Reorder AsmData for readability 2017-05-24 01:48:54 +01:00
Alex Beregszaszi
187fa50751 Rename FunctionalAssignment to Assignment 2017-05-24 01:48:53 +01:00
Alex Beregszaszi
f15d6ea45f Rename Assignment to StackAssignment 2017-05-24 01:07:07 +01:00
Alex Beregszaszi
604d254e8c Fix AST JSON converter type lookup 2017-05-23 23:12:40 +01:00
Alex Beregszaszi
e9b106cd0e Merge pull request #2292 from roadriverrail/inline_asm_unused_warning
Drop the inline asm includes from StaticAnalyzer
2017-05-23 23:11:03 +01:00
Rhett Aultman
f735207732 Drop the inline asm includes from StaticAnalyzer 2017-05-23 06:38:17 -07:00
Alex Beregszaszi
3451a30e5c Display actual error message and not assertion in analysis 2017-05-22 18:45:34 +01:00
Alex Beregszaszi
cb4966046d Enable a single right hand item on let 2017-05-22 18:45:34 +01:00
Alex Beregszaszi
15b4d4def2 Support multiple variables in a variable declaration in inline assembly 2017-05-22 18:45:34 +01:00
chriseth
74d2e7311a Merge pull request #2265 from roadriverrail/inline_asm_unused_warning
Analyze InlineAssembly for variable use
2017-05-22 16:34:29 +02:00
chriseth
8eead553af Merge pull request #1810 from ethereum/compactJson
Compact format for AST-Json.
2017-05-22 14:33:46 +02:00
djudjuu
e82df073d1 minor fixes and changelog update 2017-05-22 12:25:50 +02:00
Rhett Aultman
621c3fa22f Analyze InlineAssembly for variable use
The unused variable checker in StaticAnalyzer did not conssider
InlineAssembly objects.  This commit introduces that missing feature.
2017-05-21 15:23:05 -07:00
chriseth
7f5601fd4b Add const 2017-05-19 20:15:28 +02:00
chriseth
69413ae32a Review changes. 2017-05-19 20:12:12 +02:00
chriseth
e2b21e1c96 Refactor to abstract assembly to JULIA. 2017-05-19 19:20:28 +02:00
chriseth
56424bb202 Merge pull request #2262 from ethereum/interface-cleanup
Cleanup the external interfaces (ABI and Natspec)
2017-05-19 17:55:33 +02:00
Alex Beregszaszi
cd5d93da2a Rename CompilerStack.metadata to CompilerStack.natspec 2017-05-19 16:11:04 +01:00
Alex Beregszaszi
81877cc594 Rename InterfaceHandler to Natspec 2017-05-19 16:11:04 +01:00
Alex Beregszaszi
12328b7848 Split ABI out of InterfaceHandler 2017-05-19 16:11:03 +01:00
Alex Beregszaszi
4bf3cbb09a Use CompilerStack.contractABI directly 2017-05-19 15:57:36 +01:00
Alex Beregszaszi
8169e149c9 Rename CompilerStack.interface to CompilerStack.contractABI 2017-05-19 15:57:36 +01:00
djudjuu
1d22233a43 refactoring functionCallAnnotation 2017-05-19 15:48:07 +02:00
Alex Beregszaszi
ebcb27e5c1 Accept bool as a type in Julia mode 2017-05-19 09:44:16 +01:00
Alex Beregszaszi
edd0afa3c3 Support true/false literals in inline assembly 2017-05-19 09:44:16 +01:00
djudjuu
6316a76ab9 testsuite adjustment 2017-05-19 09:51:23 +02:00
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
chriseth
9f328ff749 Turn non-constant constants error into warning. 2017-03-14 19:25:16 +01:00
chriseth
47cd8964b8 Require and Assert. 2017-03-14 14:21:33 +01:00
chriseth
592cec7e90 Disallow constants that are neither value types nor strings. 2017-03-13 13:30:23 +01:00
chriseth
14948e514d Allow enum values for constants. 2017-03-13 13:30:23 +01:00
chriseth
f39763e91c Type checking for pure expressions. 2017-03-13 13:30:21 +01:00
Yoichi Hirai
ef8b56a058 Merge pull request #1751 from ethereum/warnLiteralExpBase
Warn if base of exponentiation operation is a literal.
2017-03-10 19:25:47 +01:00
Ryan Casey
fe8d09a3c1 Fix 'ambiguous overload for operator==' Boost error. 2017-03-09 17:04:26 -08:00
Ryan Casey
797e05ba08 Resolve build-stopping error about 'minor' and 'major' being defined in <sys/types.h> 2017-03-09 17:03:19 -08:00
Yoichi Hirai
e364909e06 Merge pull request #1747 from ethereum/fixICEInternalConstructor
Move privateness of constructor into AST itself.
2017-03-08 17:49:14 +01:00
chriseth
3f9a775834 Merge pull request #1748 from ethereum/singletonArray
Use mobile type for singleton array.
2017-03-08 16:11:03 +01:00
chriseth
93ef7fd260 Disallow compound assignment for tuples. 2017-03-08 12:42:07 +01:00
Yoichi Hirai
78f7dd2344 Merge pull request #1750 from ethereum/asmoctal
Disallow octal numbers in parser.
2017-03-08 12:24:22 +01:00
Yoichi Hirai
a1e350a4ae Merge pull request #1699 from ethereum/asmlabels
Assembly labels with stack information
2017-03-08 11:56:44 +01:00
chriseth
1324ebc4bf Warn about literal constant base in exponentiation. 2017-03-07 13:44:11 +01:00
chriseth
bb06569dc6 Disallow octal literals. 2017-03-07 12:34:32 +01:00
chriseth
a2ac05e1a2 Merge pull request #1733 from ethereum/selfReferentialConstant
Detect cyclic dependencies between constants.
2017-03-06 17:18:39 +01:00
chriseth
2fcccb97d3 Merge pull request #1737 from ethereum/localmappings
Disallow uninitialized mapping variables.
2017-03-06 15:05:58 +01:00
chriseth
5c5d83fd70 Check for circular references in constant variables. 2017-03-06 15:05:09 +01:00
chriseth
c500d9f717 Convert to mobile type for array type. 2017-03-06 14:42:28 +01:00
chriseth
c126edc6ea Disallow uninitialized mapping variables. 2017-03-06 14:27:18 +01:00
chriseth
960b5fa032 Error constructor. 2017-03-06 14:27:18 +01:00
chriseth
f300bdb020 Move public constructor property into AST itself. 2017-03-06 14:12:42 +01:00
chriseth
ca4e2933dd Strict checking for AST annotation types. 2017-03-06 14:12:42 +01:00
chriseth
f521fd7b19 Mention way to remove warning. 2017-03-06 13:37:57 +01:00
Yoichi Hirai
cfbbd89daf Merge pull request #1702 from ethereum/assertError
Change effect of assert to invalid opcode.
2017-03-03 18:25:50 +01:00
chriseth
f8ce32f2a6 Fix error message. 2017-03-03 15:41:02 +01:00
chriseth
369005fc03 Remove stack annotations again. 2017-03-03 15:41:02 +01:00
chriseth
13fd569f76 First reset stack height, then register variables. 2017-03-03 15:41:02 +01:00
chriseth
455e8a4ef8 Move lambda. 2017-03-03 15:41:02 +01:00
chriseth
41236cd08c Slightly cleaner label ids. 2017-03-03 15:41:02 +01:00
chriseth
e963405a19 Partially add functions. 2017-03-03 15:41:02 +01:00
chriseth
647473cf01 Generic visitor. 2017-03-03 15:41:02 +01:00
chriseth
caa3761dc9 Refactor variable access. 2017-03-03 15:41:02 +01:00
chriseth
25dcfa3480 Refactor CodeGen to recurse on blocks. 2017-03-03 15:41:01 +01:00
chriseth
7f2def8971 Analysis refactoring. 2017-03-03 15:41:01 +01:00
chriseth
98e343b3fc Parsing of labels with stack info. 2017-03-03 15:41:01 +01:00
chriseth
cc01d870ff Disallow variable declaration with inferred empty tuple type. 2017-03-02 14:33:58 +01:00
chriseth
5c411b472b Merge pull request #1728 from ethereum/externalfunctiontypes
Convert reference types to pointers in member function conversion.
2017-03-02 12:08:17 +01:00
chriseth
a689152c4b Convert reference types to pointers in member function conversion. 2017-03-01 16:02:36 +01:00
chriseth
7a24a5764e Add line info to serious exceptions. 2017-02-24 19:32:41 +01:00
chriseth
d2c79bf8e9 Merge pull request #1700 from ethereum/fixNoMobile
Some checks for the existence of mobile type.
2017-02-24 15:50:45 +01:00
chriseth
92bf5154fd Merge branch 'develop' into fixNoMobile 2017-02-24 10:39:55 +01:00
Alex Beregszaszi
4d290e551c Disallow setting .gas() on .transfer() 2017-02-24 00:27:36 +00:00
Alex Beregszaszi
c674155e58 Do not keep the gas stipend if sending non-zero value 2017-02-24 00:18:18 +00:00
Alex Beregszaszi
81006dae98 Support gas modifier on addr.transfer() 2017-02-24 00:18:18 +00:00
Alex Beregszaszi
4264625c69 Implement address.transfer() 2017-02-24 00:17:45 +00:00
chriseth
4b1e8111cc Remove assert for now. 2017-02-23 19:43:40 +01:00
chriseth
c0961664f9 Deposit one stack item for non-value types in inline assembly type checking. 2017-02-20 12:33:22 +01:00
chriseth
7bdc4ddab2 Merge pull request #1627 from ethereum/asmfunctions
Parsing assembly function definitions and calls.
2017-02-16 20:12:31 +01:00
chriseth
811bb770c5 Change effect of assert to invalid opcode. 2017-02-16 15:54:17 +01:00
chriseth
c3c3cccbec Fix early exist for fatal errors. 2017-02-16 14:57:00 +01:00
chriseth
dcc16c81e2 Some checks for the existence of mobile type. 2017-02-16 11:46:27 +01:00
chriseth
a5ce81100e Assembly printer for functions. 2017-02-16 10:18:12 +01:00
chriseth
49a919b3e0 Parsing function calls. 2017-02-16 10:15:22 +01:00
chriseth
5d584aded8 Parsing function definitions. 2017-02-16 10:15:22 +01:00
chriseth
24197a2b3f Assembly printing fixes. 2017-02-14 15:41:25 +01:00
chriseth
ca71b7624d Review changes. 2017-02-14 15:41:25 +01:00
chriseth
80f7243786 Assembly printer. 2017-02-14 15:41:25 +01:00
chriseth
a791ec75e2 Review comments. 2017-02-14 13:32:48 +01:00
chriseth
b1bb228ab3 Allow different entry scope for registerDeclarations. 2017-02-14 13:23:44 +01:00
chriseth
e67faa9839 Extract scopes into compiler stack. 2017-02-14 13:23:44 +01:00
chriseth
c87bafd2ed Refactor type system to allow multiple entry points. 2017-02-14 13:23:44 +01:00
chriseth
fc8e50f688 Refactor NameAndTypeResolver and SyntaxChecker to allow other entry points. 2017-02-14 13:23:44 +01:00
Alex Beregszaszi
c8ec79548b Use the revert opcode in assert() 2017-02-10 22:53:32 +00:00
Alex Beregszaszi
586d156f33 Use the REVERT opcode for throw; 2017-02-10 22:41:09 +00:00
Alex Beregszaszi
f3158f92d6 Support revert() 2017-02-10 22:40:42 +00:00
Alex Beregszaszi
8a3d4a0500 Cleanup is not needed for assert() 2017-02-10 13:32:36 +00:00
Alex Beregszaszi
f8461e9e31 Implement assert as a global function 2017-02-10 13:29:17 +00:00
Alex Beregszaszi
693226b1ab Rename SUICIDE opcode to SELFDESTRUCT in libevmasm 2017-02-06 20:17:52 +00:00
Alex Beregszaszi
ba0015cf25 Warn early when exhausting stack 2017-02-02 11:39:29 +00:00
Alex Beregszaszi
697db80b48 Disallow arrays with negative length 2017-02-02 00:24:45 +00:00
Alex Beregszaszi
c01f5699e6 Add isNegative to RationalNumberType 2017-02-02 00:16:50 +00:00
Alex Beregszaszi
4361797ddc Only capture function type to address conversion 2017-02-01 12:23:47 +00:00
Alex Beregszaszi
ce62c7c01c Be more verbose on the stack-mismatch errors 2017-02-01 12:23:47 +00:00
Alex Beregszaszi
767ec1d670 Support explicit conversion of external function type to address 2017-02-01 12:23:47 +00:00
chriseth
b2c35fb41a Merge pull request #1598 from wuestholz/develop
Change translation of implicit throws
2017-01-27 14:10:22 +01:00
chriseth
636e480156 Merge pull request #1451 from LefterisJP/fix_build
Accept any kind of whitespace after natspec tags
2017-01-27 14:09:39 +01:00
chriseth
0e021e76a5 Minor changes. 2017-01-27 11:19:48 +01:00
chriseth
bff8fc23e6 Changelog and review suggestions. 2017-01-27 10:18:53 +01:00
Lefteris Karapetsas
98b51b378e
More verbose function naming 2017-01-27 00:09:00 +01:00
Lefteris Karapetsas
cc7834f2a9
Doc tags followed by newline are now parsed properly 2017-01-27 00:00:05 +01:00
chriseth
a9c6ff4ac8 Refactor json return type generation. 2017-01-26 18:21:19 +01:00
chriseth
a98fa41897 Uninitialized internal function should call INVALID. 2017-01-26 16:39:07 +01:00
chriseth
d9fbb83861 Allow inserting low-level functions without calling them. 2017-01-26 16:39:07 +01:00
chriseth
390bebaaf9 Split line. 2017-01-26 16:39:07 +01:00
Valentin Wüstholz
5b7cc018f0 Address feedback from code review. 2017-01-26 16:39:07 +01:00
Valentin Wüstholz
9bcbd93ac5 Change translation of implicit throws (issue #1589).
This adds a new invalid instruction that is used for encoding
implicit throws that are emitted by the compiler. This makes it
possible to distinguish such runtime errors from user-provided,
explicit throws.
2017-01-26 16:39:07 +01:00
Alex Beregszaszi
102fd7ee5d Merge pull request #1604 from ethereum/checksums
Warn about invalid checksums of addresses.
2017-01-26 14:42:34 +00:00
Alex Beregszaszi
fcf483ee6b Add option to store literal sources in metadata 2017-01-26 13:16:26 +00:00
chriseth
873f2dddd6 Update error message. 2017-01-26 13:52:02 +01:00
chriseth
525758a130 Disallow assignment to non-identifiers. 2017-01-26 13:40:40 +01:00
chriseth
f62e269115 Disallow instructions in assignment. 2017-01-25 17:29:06 +01:00
chriseth
a5696e1f0a Renamed function. 2017-01-25 17:26:11 +01:00
chriseth
27ba665694 Moved test. 2017-01-25 17:24:43 +01:00
Alex Beregszaszi
900c56d996 Do not allow shadowing inline assembly instructions with variables 2017-01-25 11:28:09 +00:00
Lefteris Karapetsas
9ca0fde853 Fix and better output for tests 2017-01-25 11:01:52 +01:00
Lefteris Karapetsas
5738e865d5 Accept any kind of whitespace after natspec tags 2017-01-25 11:01:52 +01:00
chriseth
3949624a61 Also check library addresses. 2017-01-24 23:37:48 +01:00
chriseth
1316bb7565 Warn about invalid checksums of addresses. 2017-01-24 23:37:48 +01:00
chriseth
ead1a3b33f Include creation code only once. 2017-01-24 17:41:31 +01:00
chriseth
7e6f1b3f00 Use int arithmetics for stack adjustment. 2017-01-24 12:07:09 +01:00
chriseth
23eca813f5 Change clearStorageLoop to TypePointer. 2017-01-24 12:07:09 +01:00
chriseth
82a00e7dc5 Use shared_ptrs to enable shared_from_this. 2017-01-24 12:06:41 +01:00
chriseth
cea020b89e Convert ArrayUtils routines into low-level functions. 2017-01-24 12:06:40 +01:00
chriseth
b60623521f Move some util functions to low-level functions. 2017-01-24 12:06:40 +01:00
chriseth
d0e8d340a5 Low level named functions for CompilerContext. 2017-01-24 12:06:40 +01:00
chriseth
b52a60402d Merge pull request #1245 from ethereum/1215
Allow multiple events of the same name
2017-01-24 11:52:21 +01:00
Yoichi Hirai
4e1fd68b38
analysis: disallow overloading functions with events 2017-01-23 15:25:13 +01:00
Yoichi Hirai
399b7b695a
analysis: fix format 2017-01-23 15:25:13 +01:00
Yoichi Hirai
846f7dc3ea
analysis: Resolve event overloading 2017-01-23 15:25:13 +01:00
Yoichi Hirai
08015590f2
analysis: Allow multiple events of the same name
Fixes #1215
2017-01-23 15:25:13 +01:00
Yoichi Hirai
9c278448c8 Merge pull request #1591 from ethereum/stackTooDeepLocation
Report source location on "stack too deep" errors.
2017-01-23 15:02:22 +01:00
chriseth
0ef460461a Check if constructor is public or not. 2017-01-20 19:22:39 +01:00
chriseth
2536bdd6d0 Report source location on "stack too deep" errors. 2017-01-20 19:01:19 +01:00
Yoichi Hirai
12b002b3b8 Merge pull request #1576 from ethereum/typeIdentifiers
Type identifiers.
2017-01-20 16:18:57 +01:00
chriseth
07b0a0a560 Make m_id const. 2017-01-20 15:56:56 +01:00
chriseth
7159944f0f Reset AST node IDs between compilation runs. 2017-01-20 12:00:16 +01:00
chriseth
da178d967f Properly escape user strings and lists. 2017-01-19 13:23:58 +01:00
chriseth
3fed790a56 Type identifiers. 2017-01-19 13:23:57 +01:00
chriseth
23a654ade8 Fix default function type name visibility. 2017-01-19 11:11:40 +01:00
Federico Bond
d40ae663ec Fix typo in comment 2017-01-18 12:43:23 -03:00
chriseth
28a05e5aa3 Merge pull request #1581 from ethereum/fixosx
Fix JSON output on macos.
2017-01-18 15:41:39 +01:00
chriseth
005e190885 Merge pull request #1397 from roadriverrail/contract_collision
Error out when contracts collide on name
2017-01-18 14:28:00 +01:00
chriseth
c16e141ffb Fix JSON output on macos. 2017-01-18 14:09:40 +01:00
Alex Beregszaszi
4675599170 Include SOL_VERSION_COMMIT/SOL_VERSION_PLATFORM in buildinfo.h 2017-01-17 12:54:58 +00:00
Alex Beregszaszi
350c7e7e2c Store strict version number in metadata (exclude the platform) 2017-01-17 12:54:58 +00:00
chriseth
99eaadd2cd Deterministic AST node identifiers. 2017-01-17 10:45:45 +01:00
Rhett Aultman
94b092d87c Provide fall-back method for contract lookup
Properly, contracts are now looked up via <source>:<contract> identifiers
called "fully qualified names."  As a modicum of backward-compatibility,
failure on a lookup is now backed up by seeing if the ":" exists at all,
and if it doesn't, then the known contracts are scanned for any matching
contract name.
2017-01-16 23:47:04 -05:00
Rhett Aultman
5a2331a9f6 Remove checkLibraryNameClashes()
The library name clash checker throws errors when two libraries of the
same name are spotted.  In a previous commit, this function was
rewritten to use fully-qualified names instead, which makes it redundant
to the checker for multiply-declared identifiers.  Since it no longer
serves a clear purpose, the function is being dropped.
2017-01-16 12:32:58 -05:00
Rhett Aultman
1f30982ab5 Use fully-qualified names for linking, too
Using libraries leaves behind a library link reference in the binary
which the linker must later resolve.  These link references were still
being generated by name and not by fully-qualified name.  This would
lead to a link-time collision between two libraries having the same
name but in different source units.

This change changes linker symbols over to fully-qualified names,
which resolves that issue.  This does potentially introduce a new
problem, which is that linker symbols appear to be limited to 36
characters and are truncated.  Storing paths extends the average
symbol size, and it would be great if truncation was from the tail
rather than the head.
2017-01-16 12:32:57 -05:00
Rhett Aultman
85c55c796a Remove unique error for contract collision
Because contracts are uniquely identified by their source unit, there
is no need for a unique error for this; it's actually covered by the
checker for double-declaration of identifiers.
2017-01-16 12:32:57 -05:00
Rhett Aultman
f10bf36ae3 Move fullyQualified() name to Declaration 2017-01-16 12:32:57 -05:00
Rhett Aultman
0c98e4b2da Stylistic corrections 2017-01-16 12:32:57 -05:00
Rhett Aultman
e3b0827721 Push the error instead of throwing it
Throwing a CompilerError on multiple contract definition violates the
expectations of the test suite, which thinks that compile() will
return false if the code can't compile.  This brings contract
collision reporting in line with most of the other errors.
2017-01-16 12:32:57 -05:00
Rhett Aultman
8f25bd54e3 Drop ':' if the source file name is empty
A large number of tests compile contracts while passing in an empty
string for the source name.  This leads to it being keyed by the name
":<contract>", while the tests try to look it up under the name
"<contract>".  This change resolves that issue by dropping the ':' in
cases where there is, effectively, no source file to prepend anyway.
2017-01-16 12:32:57 -05:00
Rhett Aultman
071b936b37 Only avoid collision if it's the same file
@chriseth had suggested that it would be better if contracts were
referenced in a file:contract notation, and that we output .bin files
that prepend original path names if necessary to avoid a collision.

This commit is mostly a draft; it still needs to be run through the test
suite.
2017-01-16 12:32:57 -05:00
Rhett Aultman
9e88f1eebe Tab whitespace cleanup (again) 2017-01-16 12:32:57 -05:00
Rhett Aultman
ce3082dec2 Tidy up the error message 2017-01-16 12:32:57 -05:00
Rhett Aultman
b24ca4fa23 Fix tab, drop stupid '!!!', change error message. 2017-01-16 12:32:57 -05:00
Rhett Aultman
f3a84eab91 Error out when contracts collide on name
The previous behaviour, courtesy of the [] operator in std::map, would
uncritically store a new ContractDefinition in m_contracts even when a
ContractDefinition already existed.  This "resolved" collissions on contract
names by clobbering the original one with the new one, and could lead to
scenarios where the clobber would only be discovered when the original
ContractDefinition could not be found or referred to, which was an unhelpful
InternalCompilerError.

This change checks the m_contracts map for a collision first and will not let
the ContractDefinition be changed to a new one once it's set, throwing a
CompilerError with information about the conflict.
2017-01-16 12:32:57 -05:00
chriseth
bde0b40634 Merge pull request #1479 from ethereum/function_variable_mixin
Disallow mixin of functions and attributes under the same name
2017-01-13 09:36:00 +01:00
Yoichi Hirai
abc24420a7
ast: events have FunctionType too 2017-01-11 20:06:59 +01:00
Yoichi Hirai
7fea4b7360
analysis: use Declaration::functionType() in another location 2017-01-11 19:55:55 +01:00
Yoichi Hirai
eda147f47b
ast: add Declaration::functionType() 2017-01-11 19:55:50 +01:00
VoR0220
b6508ca992
fixed
Signed-off-by: VoR0220 <rj@erisindustries.com>
2017-01-11 12:03:54 -06:00
VoR0220
4542f459f1
added fix and a test for order independence of nested prefixing
Signed-off-by: VoR0220 <rj@erisindustries.com>
2017-01-11 11:45:14 -06:00
Yoichi Hirai
0216f34010
analysis: avoid emscripten build failure 2017-01-11 18:28:11 +01:00
Yoichi Hirai
91d4e8e0ba
analysis: changes necessary to compile std/StandardToken.sol 2017-01-11 18:28:11 +01:00
Yoichi Hirai
42b6726173
analysis: allow some shadowings explicitly 2017-01-11 18:28:11 +01:00
Yoichi Hirai
bff76c1ca0
analysis: report errors when inheritance causes collision 2017-01-11 18:28:11 +01:00
VoR0220
4585bfdce7
cleanup
Signed-off-by: VoR0220 <rj@erisindustries.com>

fixup

Signed-off-by: VoR0220 <rj@erisindustries.com>
2017-01-11 11:03:02 -06:00
VoR0220
e02270bbb4
fixed unused filepath bug
Signed-off-by: VoR0220 <rj@erisindustries.com>
2017-01-11 09:03:41 -06:00
VoR0220
8ace851831
much smaller helper function
Signed-off-by: VoR0220 <rj@erisindustries.com>
2017-01-10 07:17:11 -06:00
VoR0220
79dbd40096
can do this purely on length. Also made prefix filesystem string for more accurate readings.
Signed-off-by: VoR0220 <rj@erisindustries.com>
2017-01-08 22:53:57 -06:00
VoR0220
6d9020b3b8
fixed test and added solution
Signed-off-by: VoR0220 <rj@erisindustries.com>
2017-01-08 22:53:54 -06:00
chriseth
a4d7a590ea Merge pull request #1537 from ethereum/absolute-path
absolute path detection is not confused by ".dir"
2017-01-06 17:11:10 +01:00
chriseth
0031e6a530 Merge pull request #1545 from federicobond/refactor-rename
Rename contractName to typeName when parsing new expression
2017-01-05 10:53:08 +01:00
Federico Bond
584356e7f6 Rename contractName to typeName when parsing new expression 2017-01-04 23:09:10 -03:00
Yoichi Hirai
41fe412389
interface: change absolutePath() so that ".dir" is considered as an absolute path
fixes #1534
2017-01-03 18:18:22 +01:00
Yoichi Hirai
6a312233fc
ast, codegen: enable accessing events through contract names.
Fixes #1286
2017-01-02 17:59:20 +01:00
Yoichi Hirai
f8fe6e4f7c Merge pull request #1503 from federicobond/json-visibility
Include visibility level for functions in AST
2016-12-14 17:23:14 +01:00
chriseth
e97ba77a45 Merge pull request #1508 from ethereum/multiurls
Use multiple URLs for metadata.
2016-12-14 17:22:25 +01:00
Yoichi Hirai
18f8f29c0a Merge pull request #1487 from ethereum/shift-ops
Shift operators
2016-12-14 16:31:27 +01:00
Yoichi Hirai
e53d125571 Merge pull request #1507 from ethereum/memcopystyle
Renamed padToWordBoundaries -> padToWords
2016-12-14 14:20:27 +01:00
chriseth
e9d3327ad6 Use correct type for storing. 2016-12-13 16:50:50 +01:00
chriseth
56a027bedc Use multiple URLs for metadata. 2016-12-13 16:37:48 +01:00
Federico Bond
de720e643d Improve error message when trying to modify constant variables 2016-12-13 00:32:37 -03:00
chriseth
0e0d5d47c0 Renamed padToWordBoundaries -> padToWords 2016-12-12 23:43:21 +01:00
Yoichi Hirai
1c3605362d Merge pull request #1468 from ethereum/memcpy-assembly
Implement memcpy without the identity precompile
2016-12-12 22:39:47 +01:00
chriseth
c111d6e27e Merge pull request #1491 from ameten/refactoring
Just refactored some code
2016-12-12 21:43:04 +01:00
Federico Bond
9ed65f2ab9 Include visibility level for functions in AST 2016-12-12 16:21:57 -03:00
chriseth
2738045030 Cleaner shift handling and type conversion for binary operations. 2016-12-12 11:12:12 +01:00
chriseth
2df60bec92 Type after shift should be type of left operand. 2016-12-12 11:12:12 +01:00
Alex Beregszaszi
b8b4f5e9f9 Support bitshifting in variables 2016-12-12 11:12:10 +01:00
chriseth
bfa4f45116 Split memcopy into three functions. 2016-12-11 17:57:15 +01:00
chriseth
4184525d4a Fix inline assembly. 2016-12-11 17:57:15 +01:00
Alex Beregszaszi
efd7b4bfbb Reset stack height after inline assembly block 2016-12-11 17:57:15 +01:00
Alex Beregszaszi
4a11200a27 Better assert message for appendInlineAssembnly 2016-12-11 17:57:15 +01:00
Alex Beregszaszi
b93589b3b6 Implement identity call in inline assembly 2016-12-11 17:57:15 +01:00
Alex Beregszaszi
bf5dac1fb2 Turn off the identity precompile for testing 2016-12-11 17:57:15 +01:00
Alex Beregszaszi
1bf412d9fd Implement CompilerUtils::memoryCopy using inline assembly 2016-12-11 17:57:15 +01:00
Alex Beregszaszi
4abc8ab5a9 Add usingIdentity option to CompilerUtils::memoryCopy 2016-12-11 17:57:15 +01:00
chriseth
d2b8bdd016 Merge pull request #1464 from federicobond/warn-msgvalue
Warn about using msg.value in non-payable function
2016-12-11 16:46:06 +01:00
Federico Bond
df76230240 Fix names of JSON AST nodes 2016-12-11 02:07:08 -03:00
Federico Bond
05139500fb Warn about using msg.value in non-payable function 2016-12-08 16:22:13 -03:00
Danil Nemirovsky
db42294a20 - fixed a misprint. 2016-12-08 21:33:09 +03:00
chriseth
84443eb560 Merge pull request #1351 from ethereum/truncate_bit
Truncate a boolean from calldata into one bit
2016-12-08 16:15:35 +01:00
chriseth
b201e148fa Merge pull request #1465 from ethereum/missing_keywords
document missing keywords
2016-12-06 13:47:30 +01:00
Alex Beregszaszi
86d54c02cd Throw if calling the identity precompile (memoryCopy) failed 2016-12-02 13:18:39 +00:00
Yoichi Hirai
43b56a61aa
parsing: default and null are reserved keywords 2016-12-02 11:52:11 +01:00
chriseth
f1907bbb12 Add the _runs parameter. 2016-12-01 16:04:00 +01:00
Alex Beregszaszi
f869792eec Fix type of optimizeRuns 2016-12-01 16:03:59 +01:00
chriseth
6a7ff039df Use CBOR encoding. 2016-12-01 16:03:59 +01:00
chriseth
1e35526eb6 Fix tests. 2016-12-01 16:03:59 +01:00
chriseth
91ecc4533d Add swarm hash to the end of the bytecode. 2016-12-01 16:03:59 +01:00
chriseth
659b635b2d Make sure some keys are present. 2016-12-01 16:03:59 +01:00
chriseth
e666f8cda7 Incorporate comments. 2016-12-01 16:03:59 +01:00
chriseth
5789eaa78d Metadata stamp. 2016-12-01 16:03:59 +01:00
chriseth
55a719a79c Merge pull request #1462 from ethereum/fix-incorrect-assertion
codegen: assertion did not assert non-nullness
2016-12-01 15:14:31 +01:00
chriseth
2f9a91a034 Merge pull request #1463 from ethereum/duplicate-assignment
codegen: this commit removes one of duplicate assignments
2016-12-01 15:11:35 +01:00
Yoichi Hirai
1e791f30aa
codegen: this commit removes one of duplicate assignments 2016-12-01 12:03:25 +01:00
Yoichi Hirai
e29047b24d
codegen: assertion did not assert non-nullness
This commit strengthens an assertion so that it makes sure that a pointer is not null.
Moreover, `isLocalVariable(variable)` is now positively asserted, following the error message.
2016-12-01 11:58:34 +01:00
Yoichi Hirai
d77c8f730c
codegen: clean not only booleans but all types before storing them into memory 2016-11-30 17:42:21 +01:00
Yoichi Hirai
547deec4be
codegen: clean any data from the input 2016-11-30 17:42:03 +01:00
Yoichi Hirai
fb9babce54
codegen: truncate booleans before they enter storage 2016-11-30 17:41:51 +01:00
Yoichi Hirai
0123e74a2e
codegen: cleanup booleans before storing them into memory 2016-11-30 17:41:46 +01:00
Yoichi Hirai
03ccc6df70
codegen: truncate a boolean calldata down to one bit 2016-11-30 17:41:38 +01:00
Yoichi Hirai
eaab712944
parser: recognize an end of comment of the form **/ at the end of a multi-line doc comment
This fixes #1433
2016-11-30 17:28:07 +01:00
Alex Beregszaszi
2962426d53 Include the grammar verbatim in the documentation 2016-11-30 12:20:13 +00:00
Alex Beregszaszi
a9e92cb686 Rename dev::validate to dev::validateUTF8 2016-11-28 22:28:21 +00:00
Alex Beregszaszi
c01426efec Make position optional in dev::validate 2016-11-28 22:27:55 +00:00
Alex Beregszaszi
f1bc979c0f Use solUnimplemented wherever possible 2016-11-28 09:51:02 +00:00
chriseth
d7677826d4 Merge pull request #1395 from ethereum/grammar
Properly define the pragma directive in the grammar
2016-11-25 16:58:30 +01:00
chriseth
3a8a0708ff Merge pull request #1381 from ethereum/overflown_enum_compared
Enum overflow checking before writing to storage
2016-11-25 16:22:12 +01:00
Yoichi Hirai
0be5859503
codegen: cleanup values to fit in storage bytes 2016-11-25 15:50:46 +01:00
Yoichi Hirai
548b7ce42d
codegen: storing of non-value types; add some assertions 2016-11-25 15:45:18 +01:00
Yoichi Hirai
fa486f5b44
codegen: shorten the bit truncation 2016-11-25 15:45:18 +01:00
Yoichi Hirai
9d25b5601e
codegen: merge type conversion and cleaning up 2016-11-25 15:45:18 +01:00
Yoichi Hirai
3fb9625127
codegen: document _chopSignBits parameter of convertType function 2016-11-25 15:45:17 +01:00
Yoichi Hirai
ea628001d5
codegen: add an option to CovertType so that it can truncate sign bits 2016-11-25 15:45:16 +01:00
Yoichi Hirai
56d6641086
codegen: cleanup stored values in a more consistent way 2016-11-25 15:44:36 +01:00
chriseth
da566b956e Indentation. 2016-11-25 14:36:44 +01:00
Yoichi Hirai
e136ec8704
ast: string literals that are not valid UTF are not convertible to strings 2016-11-25 13:36:06 +01:00
Yoichi Hirai
5b8a773986
codegen: cleanup value types before storing them 2016-11-24 11:31:45 +01:00
VoR0220
3f9f725737 Fix licensing headers
Signed-off-by: VoR0220 <rj@erisindustries.com>
2016-11-23 12:22:33 +01:00
Alex Beregszaszi
92f1c9d492 Properly define the pragma directive in the grammar 2016-11-18 03:15:24 +00:00
Alex Beregszaszi
910269a29f Add appendCallValueCheck 2016-11-17 17:23:35 +00:00
Alex Beregszaszi
60e9c901e9 Include payable for the constructor in the ABI 2016-11-17 17:23:35 +00:00
Alex Beregszaszi
ceeb8f4a2b Add payable check for constructor in codegen 2016-11-17 17:23:35 +00:00
chriseth
2c14a96820 Some more assertions and style changes. 2016-11-16 15:09:01 +01:00
chriseth
ec31d08775 Change encoding to address-funid and add "function" as ABI type. 2016-11-16 14:37:19 +01:00
chriseth
7a292c9a05 Fix parser for function type disambiguity. 2016-11-16 14:37:19 +01:00
chriseth
0335ed4cb4 Simple peephole optimizer that is activated even if not requested. 2016-11-16 14:37:19 +01:00
chriseth
22b4d1b29a Check that no internals are used in any external function type. 2016-11-16 14:37:18 +01:00
chriseth
e51f852504 Converted sub assembly to smart pointer. 2016-11-16 14:37:18 +01:00
chriseth
e543bd34c0 Stored combined creation and runtime tags.
Includes a change to Assembly to allow tags from sub-assemblies to be
used.

Sorry, this get a bit bigger than I thought.
2016-11-16 14:37:18 +01:00
chriseth
746266b8fc ABI: Use external function. 2016-11-16 14:37:18 +01:00
chriseth
925d674146 Disallow payable internal functions. 2016-11-16 14:37:18 +01:00
chriseth
f7a62c1e69 Mention "payable" in the documentation. 2016-11-16 14:37:18 +01:00
chriseth
e1df3bd77f Fix tests. 2016-11-16 14:37:18 +01:00
chriseth
f21f794f3c delete for function types 2016-11-16 14:37:18 +01:00
Yoichi Hirai
c9f9b2ab4d codegen: add a compilation mode and a runtime context to CompilerContext 2016-11-16 14:37:18 +01:00
chriseth
5011d6339a Added function types to the grammar. 2016-11-16 14:37:18 +01:00
chriseth
47794c1da4 Implement uninitialized storage functions. 2016-11-16 14:37:18 +01:00
chriseth
cc847df3c2 Bugfix in code generator. 2016-11-16 14:37:18 +01:00
chriseth
ff3553a348 Change alignment. 2016-11-16 14:37:18 +01:00
chriseth
62492b67e7 Changelog entry and small fixes. 2016-11-16 14:37:18 +01:00
chriseth
95d7555e3c External functions in storage. 2016-11-16 14:37:17 +01:00
chriseth
6f19559de0 Fix some type checks and tests for internal / external function parameters. 2016-11-16 14:37:17 +01:00
chriseth
97a3588701 Function type state variables. 2016-11-16 14:37:17 +01:00
chriseth
dd173f83e3 Code generator for function types. 2016-11-16 14:37:17 +01:00
chriseth
cc8583ec7d Function types. 2016-11-16 14:37:17 +01:00
Alex Beregszaszi
9719cf38e6 Move InterfaceHandler from string to JSON 2016-11-15 15:55:25 +00:00
Alex Beregszaszi
ae8403ed08 Rename ErrorTag to invalidJumpLabel in inline assembly 2016-11-15 10:30:33 +00:00
Alex Beregszaszi
91367234d9 Support ErrorTag as a jump label in inline assembly 2016-11-15 10:30:12 +00:00
chriseth
028ab1fbfb Merge pull request #1375 from ethereum/inline-assembly-stack-height
Fix inline assembly stack warnings when using variables
2016-11-15 11:25:12 +01:00
Alex Beregszaszi
dad33f80dd Fix inline assembly stack warnings when using variables 2016-11-15 02:53:19 +00:00
Alex Beregszaszi
ac46834d7d Do not include a trailing new line in the ABI JSON output 2016-11-15 02:20:38 +00:00
Rhett Aultman
58e75c7a48 Unimplemented features moved to their own exception (#1361)
Unimplemented features moved to their own exception

InternalCompilerError is an exception that really should be reserved for
actual internal errors of the compiler.  Unimplemented features can now
use either solUnimplemented( ) or, if it should be conditional, then
solUnimplementedAssert( ).

* Revert some unimplemented exceptions, add handlers

The jsonCompiler and CommandLineInterface needed handlers for the
new UnimplementedFeatureException, and some cases I had moved on to
the new exception were better treated as real internal compiler
errors.

* Standardize on "Unimplemented feature" message
2016-11-14 20:41:58 +00:00
chriseth
7884a69243 Merge pull request #1367 from asinyagin/develop
Print canonical names of structs and enums in AST
2016-11-14 19:55:35 +01:00
chriseth
07e4cd6e32 Merge pull request #1372 from ethereum/invalid_enum_as_external_ret
Invalid enum as external ret
2016-11-14 19:46:25 +01:00
Yoichi Hirai
dbcbfafda8
codegen: overflow checking also during conversion from enums 2016-11-14 17:09:53 +01:00
Yoichi Hirai
1ff67b492a
codegen: add a missing break; 2016-11-14 16:14:59 +01:00
Alex Sinyagin
6db9fd498a Print canonical names of structs and enums in AST 2016-11-14 13:39:46 +00:00
chriseth
68e7763387 Merge pull request #1365 from walter-weinmann/develop
#1362: As it stands currently, the >>> operator will not be implemented.
2016-11-14 14:02:38 +01:00