Commit Graph
637 Commits
Author SHA1 Message Date
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
Walter Weinmann 176c06f386 #1362: As it stands currently, the >>> operator will not be implemented. 2016-11-14 13:22:29 +01:00
Yoichi Hirai 81f5734cbe codegen: move the enum overflow checking closer to the conversion into enums 2016-11-14 11:11:39 +01:00
Yoichi Hirai 20c2ca3992 ast, codegen: disallow conversion between different enum types 2016-11-11 17:48:03 +01:00
Yoichi Hirai 0a6c937dcb codegen: shorten the overflow checking when converting into enums 2016-11-11 17:48:03 +01:00
Yoichi Hirai eee629652e parsing: ban empty enum definition. 2016-11-11 17:48:03 +01:00
Yoichi Hirai 98dcd883e4 codegen: check the value range after converting something to an enum element 2016-11-11 17:48:03 +01:00
Yoichi Hirai e6098f0039 ast: add EnumType::numberOfMembers() 2016-11-11 17:47:48 +01:00
chriseth 7820f80192 Merge pull request #1355 from ethereum/chriseth-patch-2
Fix semicolons
2016-11-11 17:39:56 +01:00
Yoichi Hirai 6c15757618 Type checker: move the burden of computing mobile type to commonType
This solves #621
2016-11-11 15:51:54 +01:00
chriseth 1e845c279b Fix semicolons 2016-11-11 09:33:19 +01:00
Rhett Aultman 4524ad0870 Add support for do/while loops
This commit adds support for a standard do <statement> while <expr>;
form of statement.  While loops were already being supported; supporting
a do/while loop mostly involves reusing code from while loops but putting
the conditional checking last.
2016-11-10 07:07:25 -08:00
yann300 02416d4460 add payable to AST 2016-11-03 16:36:38 +01:00
chriseth 9920e88eea Clear all value types prior to storing. 2016-10-31 16:40:30 +01:00
Yoichi Hirai 3ca5900b8c ast: ban signed EXP, fixing #1246 2016-10-25 16:49:10 +02:00
chriseth 762f7ac250 Suggest correct version for pragma and complain about pre-release version. 2016-10-25 13:45:50 +02:00
chriseth 2f7c847ce4 Merge pull request #1279 from ethereum/semver-helper
Export major/minor/patch helpers on SemVerVersion
2016-10-25 13:20:08 +02:00
Alex Beregszaszi 7a988555c3 Export major/minor/patch helpers on SemVerVersion 2016-10-25 12:13:41 +01:00
chriseth e00a4b47c0 Merge pull request #1264 from ethereum/988
State variable under contract's name
2016-10-25 12:50:24 +02:00
Yoichi Hirai 59f6c18c2b analysis: determine if a member access on a contract is an l-value 2016-10-24 19:31:57 +02:00
chriseth f25aa0c68b More checks for missing mobile type. 2016-10-24 16:45:25 +02:00
Yoichi Hirai 5245a3cf74 codegen: refactor common code 2016-10-24 16:34:23 +02:00
Yoichi Hirai acba7b92e5 codegen: if a member access has been resolved as a variable, follow that
This fixes at least the first example in #988
2016-10-24 16:34:23 +02:00
Yoichi Hirai 7cee39fc17 codegen: skip contract L for L.Foo where Foo is a type
Fixes #1116
2016-10-24 15:30:26 +02:00
chriseth 2b00804d1d Fix crash in throw. 2016-10-24 14:32:49 +02:00
chriseth cb1fcaf6f6 Merge pull request #1240 from ethereum/1151
ast: super contract type does not contain native members
2016-10-24 11:45:54 +02:00
Yoichi Hirai 9d9380d30e ast: add a null check 2016-10-21 13:01:45 +02:00
Yoichi Hirai 83e8fdecc5 ast: ContractDefinition::inheritableMembers contains enums as well as structs
This fixes #1131
2016-10-21 13:01:45 +02:00
Alex Beregszaszi 7b0fb5d06b Support variable references within modifiers for inline assembly 2016-10-20 23:45:13 +01:00
Yoichi Hirai 7887045a48 ast: simplifications suggested by @chriseth 2016-10-20 16:09:52 +02:00
Yoichi Hirai ff9039b2a8 When a contract type is super, its members do not contain the functions of itself
Fixes #1151
2016-10-20 16:09:52 +02:00
Alex Beregszaszi 0e33b63468 Allow warnings for inline assembly block 2016-10-20 13:25:28 +01:00
Alex Beregszaszi c3330faf21 Issue warnings if stack is not balanced after inline assembly block 2016-10-20 13:25:28 +01:00
Alex Beregszaszi 0dd75ac100 Use warning function in TypeChecker 2016-10-20 13:25:28 +01:00
Alex Beregszaszi 7ac27c957e Use >> (SAR) to denote constant shifts 2016-10-20 00:03:09 +01:00
Alex Beregszaszi 33250eef9e Reject negative shifts within constants 2016-10-20 00:03:09 +01:00
RJ 48f2028911 Support shifting constants 2016-10-20 00:03:09 +01:00
Alex Beregszaszi d18e56661d Disallow unsupported RValues in inline assembly 2016-10-19 20:44:15 +01:00
Alex Beregszaszi 9616470f67 Disallow magic variables in inline assembly 2016-10-19 20:44:15 +01:00
Alex Beregszaszi fdd1108c1c Omit non-convertible bound functions 2016-10-19 10:41:04 +01:00
Alex Beregszaszi 003359a0b6 Ensure that bound functions cannot be defined without self type 2016-10-19 10:41:04 +01:00
Yoichi Hirai d2470a3e39 super's size on stack is zero, because the expression compiler does not push an address.
This is different from `this`, which is translated to `ADDRESS` instruction.
2016-10-18 14:17:49 +02:00
Yoichi Hirai 8e11bac8de Check if a fixedBytes fits an integer type
before looking up the size of the integer type.

Fixes #1150.
2016-10-13 20:17:13 +02:00