Commit Graph

908 Commits

Author SHA1 Message Date
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
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
Alex Beregszaszi
48ac970677 Merge pull request #1169 from ethereum/inline-assembly-tags
Fix assignment after tags in inline assembly
2016-10-12 00:00:28 +01:00
chriseth
821fe6e916 Merge pull request #1181 from ethereum/formal_ignore_pragma
formal: ignore pragmas during Why3 code generation
2016-10-11 16:29:32 +02:00
Alex Beregszaszi
d0791fb365 Fix assignment after tags in inline assembly 2016-10-11 12:28:49 +01:00
Yoichi Hirai
ab1f4632aa Chack for non-version pragmas 2016-10-11 00:07:11 +02:00
Yoichi Hirai
092e5829d8 formal: ignore pragmas during Why3 code generation
Fixes #1177
2016-10-11 00:01:29 +02:00
Yoichi Hirai
7ae68e1e47 Fix pragma keyword check
Fixes #1192
2016-10-11 00:00:22 +02:00
chriseth
d3f410d8a8 Merge pull request #1189 from NicolaiSoeborg/develop
Add HexLiteral to grammar, fixes #1186
2016-10-10 23:41:55 +02:00
Nicolai
e923a5e190 Fix: HexLiteral must be even number of nibbles
solc even allow 0 nibbles:
bytes a = hex"";
2016-10-10 23:08:44 +02:00
chriseth
0b1d449057 Merge pull request #1168 from ethereum/rename-dev-sha3
Rename dev::sha3 to dev::keccak256
2016-10-10 21:23:27 +02:00
Nicolai
f6195c0a46 Add HexLiteral to grammar, fixes #1186 2016-10-10 19:42:42 +02:00
Alex Beregszaszi
ae0477744c Support address in inline assembly 2016-10-06 22:05:01 +01:00
Alex Beregszaszi
34df80c502 Add alias keccak256() for sha3() 2016-10-06 16:34:41 +02:00
Alex Beregszaszi
aefb6e5fcf Rename dev::sha3 to dev::keccak256 2016-10-06 14:53:40 +01:00
Alex Beregszaszi
6afdee5958 Support both suicide/selfdestruct in inline assembly 2016-10-06 12:44:33 +01:00
chriseth
212e016091 Merge pull request #1104 from ethereum/fixmemcosts
Fix memory resize costs during call
2016-09-17 12:30:41 +02:00
chriseth
5a45990458 Access output memory area so that we do not pay for resize during call. 2016-09-17 11:29:54 +02:00
chriseth
727c6fac85 Allow value transfer to library functions. 2016-09-17 11:29:27 +02:00
chriseth
031fd568cc Fix crash for TypeName[k]. 2016-09-15 18:16:34 +02:00
Yoichi Hirai
4337e70cca Prepare for leaky exceptions
Now toFormalType() reports errors by exceptions, they will be
sometimes leaked to the wider context.  This commits adds a catch.
2016-09-09 20:15:13 +02:00
Yoichi Hirai
ac7c6ae7d2 toFormalType reports errors by an exception
This allows error reporting without passing `ASTNode` to `toFormalType()`
2016-09-09 20:15:08 +02:00
Yoichi Hirai
c861cf579d Translate mapping types into Why3 arrays when keys are integers
Even when the keys are signed the translation is supposed to work
because Why3 arrays allow negative indices.
2016-09-09 19:11:15 +02:00
chriseth
2c4e9ece07 Merge pull request #1047 from pirapira/address-in-prelude
formal verification: Add Address module in the WhyML prelude
2016-09-09 17:34:52 +02:00
chriseth
6a55405160 Fix problem with release version string. 2016-09-08 17:56:28 +02:00
Yoichi Hirai
a98edb22e5 Add Address module in the WhyML prelude
In the `--formal` output, this commit adds a module called `Address`,
which defines the address type as unsigned integer type bounded at
2^160-1.
2016-09-07 20:39:23 +02:00
chriseth
ce11580988 Merge pull request #1041 from pirapira/typo_and_whitespace
Fix a typo and a whitespace inconsistency
2016-09-07 20:05:30 +02:00
chriseth
f4172d342a Merge pull request #1044 from pirapira/todo_item_to_issue
Append an issue id #1043 to a @todo comment about it
2016-09-07 18:23:22 +02:00
Yoichi Hirai
0a8f0fb051 Append an issue id #1043 to a @todo comment about it 2016-09-07 15:21:02 +02:00
Yoichi Hirai
c9b23d9829 Fix a typo and whitespaces 2016-09-07 14:29:01 +02:00
Alex Beregszaszi
2d9c407456 Include assert for selfType on bound functions to avoid crash 2016-09-06 22:10:51 +01:00
Alex Beregszaszi
7af8ecc27a Constructor must be internal or public 2016-09-06 17:53:13 +02:00
Alex Beregszaszi
319ec34093 Reject constant constructors 2016-09-06 17:31:29 +02:00
chriseth
462fc84e53 Merge pull request #1016 from ethereum/reserved
Report the usage of reserved keywords more nicely
2016-09-06 15:52:44 +02:00
chriseth
3588125692 Merge pull request #1014 from ethereum/strict-fallback
Reject constant modifier on the fallback function
2016-09-06 15:51:45 +02:00
chriseth
fb73da30d8 Merge pull request #1011 from walter-weinmann/wwe_grammar
Changes related to issues #984, #989, #999, #1001 and #1004.
2016-09-06 15:43:06 +02:00
chriseth
5ade1bc20f Merge pull request #1008 from ethereum/stipendwithsend
Provide gas stipend manually for send(0).
2016-09-06 15:37:05 +02:00
Alex Beregszaszi
a13c5b3157 Raise proper error on reserved keywords 2016-09-06 12:03:05 +01:00
Alex Beregszaszi
cfb6dfc35e Introduce isReservedKeyword() 2016-09-06 12:01:02 +01:00
Alex Beregszaszi
6ec40b3cde Reject constant modifier on the fallback function 2016-09-06 11:40:00 +01:00
chriseth
9ca7472089 Provide gas stipend manually for send(0). 2016-09-06 12:37:01 +02:00
Alex Beregszaszi
496b7ea1d2 Reserve view and pure as keywords 2016-09-06 11:37:00 +01:00
chriseth
f687635e47 Merge pull request #665 from axic/feature/accept-ether
BREAKING: Add payable modifier
2016-09-06 12:25:19 +02:00
chriseth
171c74843b Merge pull request #995 from chriseth/fixutf8astjson
Do not emit non-utf8 strings for ast json.
2016-09-06 12:25:04 +02:00
walter-weinmann
70d91462db Considering comment from @chriseth regarding FunctionCall. 2016-09-06 11:53:46 +02:00
chriseth
114502f8ad Merge pull request #1006 from ethereum/nenewaccountgas
Do not pay new account gas.
2016-09-06 11:13:31 +02:00
chriseth
dff9633084 Test and fixes for payable fallback in ABI. 2016-09-06 10:59:13 +02:00
chriseth
384f189a6a Tests for payable / private combination. 2016-09-06 10:58:56 +02:00
walter-weinmann
215fc04857 Considering comments from @chriseth regarding ExpressionStatement and FunctionCall. 2016-09-06 05:26:18 +02:00
chriseth
1eb7ddbb09 Make constant and payable mutually exclusive. 2016-09-05 21:28:28 +02:00
chriseth
9c64edf110 Change function type to include and propagate payable and constant modifier. 2016-09-05 21:28:28 +02:00
Alex Beregszaszi
962531af96 Merged in changes from chriseth/payable 2016-09-05 21:28:28 +02:00
Alex Beregszaszi
75d556a2cf Do not include the payable keyword for constructors 2016-09-05 21:28:18 +02:00
Alex Beregszaszi
a34f2f1a31 Support payable keyword for functions 2016-09-05 21:28:18 +02:00
walter-weinmann
8f233b545f Changes related to issues #984, #989, #999, #1001 and #1004. 2016-09-05 18:58:58 +02:00
Yoichi Hirai
e2b787cdd0 Merge pull request #1005 from ethereum/modifierbody
Require ";" after "_"
2016-09-05 18:28:32 +02:00
chriseth
be6a5f44d7 Merge pull request #993 from chriseth/fixshacrash
Guard encoding crashes with assertions.
2016-09-05 18:09:32 +02:00
chriseth
bf3f45c948 Improve error message. 2016-09-05 17:11:23 +02:00
chriseth
3b2174f7a8 Update grammar.txt to reflect the change. 2016-09-05 16:13:31 +02:00
chriseth
69c175fe22 Do not pay new account gas.
If we checked that the target contract exists, we do not have
to pay the "new account gas".
2016-09-05 15:52:44 +02:00
chriseth
02984b8de1 Require ";" after "_" 2016-09-05 14:54:50 +02:00
chriseth
24ffc38575 Do not use internal types for event parameters. 2016-09-02 00:39:30 +02:00
chriseth
ada31fa9b7 Do not emit non-utf8 strings for ast json. 2016-09-02 00:22:03 +02:00
chriseth
4134834ff3 Guard encoding crashes with assertions. 2016-09-01 20:07:14 +02:00
chriseth
b5d941d3d9 Merge pull request #935 from chriseth/pragma
Version pragma
2016-09-01 11:02:50 +02:00
chriseth
d87450b9b2 Use version string (including prerelease) for pragma matching. 2016-09-01 00:02:51 +02:00
chriseth
3c412ed2f6 Version pragma. 2016-09-01 00:02:51 +02:00
Dimitry
061aee2e97 fix CompilerStack::absolutePath 2016-08-31 22:10:20 +03:00
chriseth
4bfe09897e Make fallback function throw by default. 2016-08-30 15:31:50 +02:00
chriseth
cf974fd103 Merge pull request #664 from axic/feature/interface-fallback
Introduce fallback entry in the ABI
2016-08-30 15:21:19 +02:00
Bob Summerwill
91d4fa477c Merge pull request #941 from chriseth/versionString
Version string
2016-08-26 22:58:32 -07:00
Alex Beregszaszi
36a567cd61 Introduce fallback entry in the ABI 2016-08-26 19:03:46 +01:00
chriseth
fb7836d87b Merge pull request #897 from Denton-L/remove-standard
BREAKING: Remove standard contracts
2016-08-26 19:32:18 +02:00
chriseth
54ab787b83 Make versioning semver compatible and force commit hash availability. 2016-08-26 10:14:44 +02:00
chriseth
21b6aa92ff Disallow fallback function to return values. 2016-08-26 00:07:50 +02:00
chriseth
cab0f5448f Merge pull request #921 from chriseth/astjsoncleanup
JSON AST: Some attribute cleanup. Add linearized base contracts.
2016-08-23 17:14:13 +02:00
chriseth
345c0f36fb Fix crash when using json compiler with exponentiation. 2016-08-20 03:45:39 +02:00
Denton Liu
e00f802f72 Remove standard contracts 2016-08-19 10:34:50 -04:00
chriseth
35276d99e0 JSON AST: Some attribute cleanup. Add linearized base contracts. 2016-08-19 13:05:12 +02:00
Alex Sinyagin
4b9eb299d0 Rename root AST JSON node to SourceUnit 2016-08-18 15:38:20 +00:00
Alex Sinyagin
4387d8bbe3 Do not add children to EnumValue and PlaceholderStatement elements in JSON AST 2016-08-18 13:29:44 +00:00
Alex Sinyagin
9139d763d3 Use the full names for JSON AST nodes 2016-08-18 13:12:15 +00:00
Alex Sinyagin
5061eb2b2b Move creation of the root element of JSON AST to the SourceUnit visitor 2016-08-18 12:51:17 +00:00
Alex Sinyagin
406f3a4b5d Add ast json converter for PlaceholderStatement 2016-08-18 12:30:00 +00:00
Alex Sinyagin
e9c894c9f8 Add ast json converter for ArrayTypeName 2016-08-18 12:30:00 +00:00
Alex Sinyagin
bdc2436ae3 Add ast json converter for ModifierInvocation and EventDefinition 2016-08-18 12:30:00 +00:00
Alex Sinyagin
a5d15e6895 Add ast json converter for ModifierDefinition 2016-08-18 12:29:59 +00:00
Alex Sinyagin
95832da16e Add ast json converter for EnumValue 2016-08-18 12:29:59 +00:00
Alex Sinyagin
a9e04217a4 Add ast json converter for EnumDefinition 2016-08-18 12:29:59 +00:00
Alex Sinyagin
40ca2c9e97 Add ast json converter for UsingForDirective 2016-08-18 12:29:59 +00:00
Alex Sinyagin
9e7fc12463 Add a ast json converter for InheritanceSpecifier 2016-08-18 12:29:59 +00:00
chriseth
c282ab379a Merge pull request #918 from winsvega/solremove4
remove solidity --interface
2016-08-17 17:55:40 +02:00
chriseth
b2507e9f10 Merge pull request #839 from chriseth/checkcode
BREAKING: Make function calls throw if target does not have code.
2016-08-17 16:44:15 +02:00
chriseth
d6579a0a5f Merge pull request #888 from chriseth/throwOnDivZero
Throw on division by zero.
2016-08-17 16:43:13 +02:00
Dimitry
e5e2597702 remove solidity --interface 2016-08-17 12:39:10 +03:00
chriseth
774bb8ab3b Make function calls throw if target does not have code.
Low-level calls still just execute and will actually report "success".
This allows `x.call.value(y)()` for x being a non-contract account.
2016-08-17 11:30:40 +02:00
chriseth
9c83109549 BREAKING: return only exits current function/modifier 2016-08-17 11:29:31 +02:00
chriseth
e7683f4722 Merge pull request #836 from chriseth/unusedunderscore
BREAKING: Require modifiers to contain "_".
2016-08-17 11:28:02 +02:00
chriseth
e7084d9e16 Throw on division by zero. 2016-08-17 11:27:15 +02:00
chriseth
d5505e21eb Merge pull request #838 from chriseth/ecrecover
Make ecrecover return zero for malformed input.
2016-08-17 11:05:20 +02:00
Alex Beregszaszi
ec3298535e Introduce hex literals (#832)
* Introduce hex keyword token

* Support hex literals

* Include tests for hex literals

* Document hex literals
2016-08-16 16:31:23 +02:00
Alex Beregszaszi
970260bf0f Reserved keywords update (#833)
* Reserve abstract, interface and payable keywords

* Keywords as and using aren't reserved anymore - they're used

* Reserve the static keyword
2016-08-16 16:28:45 +02:00
chriseth
77f4424589 Provide inline assembly to the code generator. (#840)
* Directly usable inline assembly.

* Add missing header.
2016-08-16 16:27:20 +02:00
chriseth
d731225d02 Actually better to return zero on error. 2016-08-16 14:53:01 +02:00
chriseth
034d436933 Make ecrecover throw for malformed input. 2016-08-16 14:53:01 +02:00
chriseth
6df6728165 Require modifiers to contain "_". 2016-08-16 14:52:47 +02:00
chriseth
2a560b798b Throw if contract creation fails. 2016-08-16 14:49:44 +02:00
chriseth
0d894a6832 Merge pull request #844 from Denton-L/remove-after
BREAKING: Remove after
2016-08-12 15:09:55 +02:00
Alex Sinyagin
cbedc7b343 Fix Mapping and InlineAssembly in JSON AST 2016-08-11 17:00:19 +00:00
Alex Sinyagin
a7ff352d38 Fix JSON AST structure 2016-08-11 17:00:19 +00:00
Denton Liu
92a711c4fb Remove after from grammar.txt 2016-08-11 10:15:59 -04:00
Denton Liu
faf0b3f669 Remove After from Types.cpp 2016-08-11 10:15:59 -04:00
Denton Liu
cab8e63a0e Revert "Change After to a deprecated token"
This reverts commit 91c97f73b50fc87662b5490b2fe6de1c6ef376c7.
2016-08-11 10:15:59 -04:00
Denton Liu
be98d3db51 Change After to a deprecated token 2016-08-11 10:15:59 -04:00
Denton Liu
5ee846e39f Remove After from ExpressionCompiler 2016-08-11 10:15:59 -04:00
Denton Liu
0988eba4fe Remove after from Token.h 2016-08-11 10:15:59 -04:00
chriseth
b7c26f4628 Merge pull request #722 from NicolaiSoeborg/develop
Fixes to grammar.txt [WIP]
2016-08-10 21:18:56 +02:00
chriseth
55858de1e9 Merge pull request #794 from chriseth/fixastsource
Fix segfault in ast output.
2016-08-10 16:58:17 +02:00
chriseth
fc60839105 Merge pull request #826 from axic/utf8-check
AST printer: do not output invalid UTF8 sequences
2016-08-10 16:31:27 +02:00
chriseth
4c54834908 Rename libevmasm. 2016-08-10 13:52:24 +02:00
Nicolai
399e1fe70c Add syntax for fallback functions 2016-08-09 11:53:38 +02:00
Alex Beregszaszi
5d9347f022 Remove dev::utf8 namespace 2016-08-08 20:05:31 +01:00
Alex Beregszaszi
f1df3dee53 Use size_t in dev::utf8::validate() 2016-08-08 20:05:31 +01:00
Alex Beregszaszi
e8c2e87397 Use utf8::validate in StringLiteral::toString 2016-08-08 19:57:41 +01:00
Alex Beregszaszi
bf76321c9e Move LiteralString::toString from the header 2016-08-08 19:08:31 +01:00
chriseth
539afbeea3 Merge pull request #828 from axic/identity-gas-fix
Fix identity precompile gas calculation
2016-08-08 19:15:03 +02:00
chriseth
ac8e726970 Fix segfault in ast output. 2016-08-08 19:10:17 +02:00
chriseth
c3ed550eb6 Merge pull request #834 from chriseth/devcorecleanup
Some cleanup regarding libdevcore. Also rename to avoid conflicts.
2016-08-08 15:11:36 +02:00
chriseth
ccd78d05d6 Correct library usage. 2016-08-08 12:26:07 +02:00
Alex Beregszaszi
17f760e2a9 Fix identity precompile gas calculation 2016-08-06 00:18:21 +01:00
chriseth
7ea5770598 Do not install headers. 2016-08-05 16:35:24 +02:00
Alex Beregszaszi
6db12c4f88 Rename addUnicodeChar to addUnicodeAsUTF8 2016-08-04 17:28:48 +01:00
Alex Beregszaszi
aa4593cab3 Support Unicode escape characters in string literals ('\uUUUU')
Fixes #638
2016-08-04 17:28:48 +01:00
Nicolai
cc863b0a63 Split ElementaryTypeName into smaller rules 2016-08-02 17:18:59 +02:00
Nicolai
baaad627c4 Remove ambiguity from EventDefinition. Fix SourceUnit 2016-08-01 22:33:05 +02:00
Nicolai
9f772cb9a1 Remove 'reduce/reduce conflicts' with comma operator 2016-07-30 19:27:32 +02:00
Nicolai
b2de2a9d0f Fix reduce/reduce conflicts w/ multiple FunctionCall in Expression 2016-07-30 16:03:10 +02:00
Nicolai
35182c7305 Remove TypeParameterList 2016-07-30 15:34:46 +02:00
chriseth
58cc6cbb37 Bugfix: Allocate empty array. 2016-07-28 17:24:18 +02:00
Nicolai
97d7b8509c Fixes to expression 2016-07-27 16:42:33 +02:00
Nicolai
cde629d48d Added wildcard to UsingForDeclaration 2016-07-27 16:03:40 +02:00
Nicolai
ec0933bf9f Imports => ImportDirective 2016-07-27 16:01:30 +02:00
Nicolai
e584a8396a Remove assignment as expr. Add functionCall as primaryExpression 2016-07-26 15:44:22 +02:00
Nicolai
3009064533 Fix missing seperator from commit 8b450dd8 2016-07-26 15:13:26 +02:00
Nicolai
8b450dd808 Added PlaceholderStatement 2016-07-25 17:48:49 +02:00
Nicolai
3f5bff968f Add StorageLocation 2016-07-25 17:28:30 +02:00
Nicolai
1a661c562a Allow function to call modifiers 2016-07-25 16:53:15 +02:00
Nicolai
bd2562ffd3 Order expression according to PR 732 2016-07-23 16:15:01 +02:00
Nicolai
28c4a0a3ab New regex for StringLiteral 2016-07-23 02:35:20 +02:00
Nicolai
5512b85594 Begin fixing expression syntax 2016-07-23 01:45:10 +02:00
chriseth
6610add63e Merge pull request #731 from Denton-L/move-token
Move `in` as a keyword to reserved word section
2016-07-21 14:34:22 +02:00
Denton Liu
8fbe994075 Fix isCompareOp() 2016-07-20 17:05:24 -04:00
Denton Liu
827208d1d6 Move in as a keyword to reserved word section 2016-07-20 15:42:18 -04:00
chriseth
c55584d3e2 Source location as part of AST. 2016-07-20 19:45:43 +02:00
chriseth
980abfe52a Merge pull request #720 from chriseth/formalState
Formal Verification: Handle external effects.
2016-07-20 19:37:57 +02:00
Nicolai
1c341add59 Added UsingDeclaration 2016-07-20 19:31:05 +02:00
Nicolai
ad2784b333 Extend EventDefinition 2016-07-20 19:17:03 +02:00
Nicolai
e1c69b11f4 Fix missing 'ether' from NumberUnit. Extend StringLiteral syntax 2016-07-20 17:07:26 +02:00
Nicolai
9324393975 Added missing (u)fixed types 2016-07-20 16:49:14 +02:00
Nicolai
da8b768713 Extend NumberLiteral with units 2016-07-20 16:23:30 +02:00
Nicolai
5abb9b6e41 Added imports 2016-07-20 16:14:23 +02:00
Nicolai
f76616889a Add EventDefinition 2016-07-20 15:59:00 +02:00
Nicolai
68b72d8667 NumberLiteral: Allow 0x prefix 2016-07-20 02:42:02 +02:00
Nicolai
6f7d8fb65b Allow function returns to be unnamed 2016-07-20 02:26:33 +02:00
Nicolai
f003bdafa6 Fix StructDef. Add BoolLiteral. Def NumLiteral, StringLiteral and Identifier. 2016-07-20 02:18:09 +02:00
Nicolai
1e2f071a11 Fix missing quotes in ElementaryTypeName 2016-07-20 01:33:08 +02:00
Nicolai
8e6272b020 Added ElementaryTypeName, removed explicit recursion 2016-07-19 18:59:34 +02:00
Nicolai
447797ad9c Add forStmt to Stmt, removes BasicBinaryOperation, throw expr, explicit rec in ArrTypeName 2016-07-19 17:27:53 +02:00
Nicolai
dc3828ee37 Remove "in", extra semicolons, forced function param. Added "throw". Changes FunctionCall & IndexAccess 2016-07-19 01:26:39 +02:00
Nicolai
ce8a003611 grammar.txt: Fixes to EnumDef and ArrayTypeName 2016-07-19 01:03:41 +02:00
Nicolai
c396148fe6 grammer.txt: inheritable => internal 2016-07-19 00:49:00 +02:00
chriseth
9a9a815fc9 Provide formal version in json output. 2016-07-18 18:26:56 +02:00
Nicolai Søborg
80b01f6ebd Grammar: tab => spaces 2016-07-14 23:48:29 +02:00
Nicolai
ff9d6e05f2 Typos + added missing grammar rules 2016-07-14 23:41:32 +02:00
Nicolai
c800f8c97d Remove the remains of "expresison" 2016-07-14 22:56:45 +02:00
chriseth
26e5faa038 Handle external effects. 2016-07-13 11:16:00 +02:00
chriseth
25a64c7f8f Only warn about unused return in low-level functions. 2016-06-26 13:53:32 +02:00
chriseth
cc6314cd01 Warn about unused return values. 2016-06-26 13:53:32 +02:00
chriseth
31aa67f1ca Merge pull request #640 from chriseth/globalPaths
Allow remappings to change depending on the context.
2016-06-10 17:58:25 +02:00
chriseth
d593166d66 Merge pull request #641 from axic/patch/shift-parser
Trivial shift parser fixes
2016-06-09 00:21:51 +02:00
chriseth
3150ab2bcf Allow remappings to change depending on the context. 2016-06-08 18:16:46 +02:00
Alex Beregszaszi
0cb820cf98 Include SHR case in ExpressionCompiler::appendShiftOperatorCode 2016-06-07 19:39:14 +01:00
Alex Beregszaszi
f8ccf3eebf Fix Token::isBitOp to exclude shift operators 2016-06-07 19:39:05 +01:00
chriseth
ab7a22f4a0 Disallow implementation of abstract function by constructor of derived class. 2016-06-06 19:38:22 +02:00
chriseth
754a992500 Inaccessible dynamic types 2016-06-02 12:52:25 +02:00
chriseth
708129abd5 Fixes for invalid cleanups for small types. 2016-05-20 16:52:40 +02:00
chriseth
2f37356c58 Merge pull request #565 from VoR0220/fixedDataType
Fixed data typename fixes and documentation
2016-05-20 16:48:50 +02:00
chriseth
6b859a2bff Refactor compiler to avoid weird swap of contexts 2016-05-20 14:20:45 +02:00
VoR0220
9192357452 updated docs
types

reference
2016-05-18 16:36:05 -05:00
VoR0220
6289410152 explicit conversion and loosening of binary operations on integer and fixed point types...still other problems
fixed some spaces and deleted lines from failing test
2016-05-18 15:52:09 -05:00
VoR0220
3ba308fb2e current debugging info 2016-05-18 15:52:09 -05:00
chriseth
775b757d0e Merge pull request #545 from chriseth/accessFunLabels
Allow access to functions in inline assembly.
2016-05-17 23:59:13 +02:00
moneroexample
9d237fbfdc fix: error: call of overloaded ‘list(int, <brace-enclosed initializer list>)’
Issue: https://github.com/ethereum/solidity/issues/574

Compilation of webthree-umbrella on Arch with gcc 6.1 results in the following
error:

/home/mwo/webthree-umbrella/solidity/libsolidity/analysis/NameAndTypeResolver.cpp:299:51: error: call of overloaded ‘list(int, <brace-enclosed initializer list>)’ is ambiguous
  list<list<ContractDefinition const*>> input(1, {});

This can be overcome by explicitly specifying initial value, for example:

  list<list<ContractDefinition const*>> input(1, list<ContractDefinition const*>{})
2016-05-17 13:27:39 +08:00
chriseth
67ca3bb4b9 Allow access to functions in inline assembly. 2016-05-12 12:30:48 +02:00
chriseth
d4206b7cd0 Remove unused tests and add asserts for not implemented parts in code generation.
quick fix on christian's rational

change so that ubuntu will stop yelling

be more specific with rational declaration for Windows sake

rational in namespace correction for windows
2016-05-10 16:03:33 -05:00
chriseth
656405240e Simplify interface of RationalNumber. 2016-05-10 19:40:37 +02:00
chriseth
cf226f0607 Special case for moving sign bit to fractional part. 2016-05-10 19:40:37 +02:00
chriseth
02e1c9be0d Cleanup. 2016-05-10 19:40:37 +02:00
chriseth
4dfe9a216c Disallow explicit fixed->enum, but allow bytes->fixed. 2016-05-10 19:40:37 +02:00
chriseth
ef7049f9a6 Some cleanup. 2016-05-10 19:40:37 +02:00
chriseth
22318c0c1a Replace "unsigned int" by "unsigned". 2016-05-10 19:40:37 +02:00
chriseth
80c368dac1 Prefer mobileType() to check rational range. 2016-05-10 19:40:35 +02:00
VoR0220
a6fc3c8f30 reorganized tests and fixed mobile types and implicit conversions of rationals and fixed point types
one final tweak

check for null types
2016-05-09 11:41:03 -05:00
VoR0220
bfc238c8d1 updated algorithm for bit finding...now to figure out literal value
tiny fixups

changed location of the check

got rid of extra space and fixed a couple of things

added binary results bits

change back literal value
2016-05-09 11:41:03 -05:00
VoR0220
5bddb2d6ff changed algorithm for finding bits 2016-05-09 11:41:03 -05:00
VoR0220
4b3e1f140c much better way of doing modulus 2016-05-09 11:41:03 -05:00
VoR0220
82039b732e added bytes conversion tests, resolved that, converted to binary scaling, refactored the find algo to prevent large numbers and take into account integer bytes
think we're good on solidity type name resolution now

removed couts

updates to documentation and more removed couts along with literal value implementation

forgot semicolons
2016-05-09 11:41:03 -05:00
VoR0220
f0ea817580 fixing modulus and Solidity Name and Type Resolution
minor fixes

current attempts at binary fixup
2016-05-09 11:41:03 -05:00
VoR0220
f67bfd24a3 rational renaming 2016-05-09 11:41:03 -05:00
VoR0220
4b749fc333 changed names for Rational Constants and categories 2016-05-09 11:41:02 -05:00
VoR0220
4d283b2b30 currently what we have 2016-05-09 11:41:02 -05:00
RJ Catalano
93295ae8f8 got exponents up and working with their inverse, changed a few of the tests....something is working that likely shouldn't be
slight changes to how to flip the rational negative around...still trying to figure it out

tests added

updated tests

odd differences in trying soltest from solc binary, let me know if you can replicate

test not working for odd reason

fixed test problem with fixed literals...still need a way to log this error

broken up the tests, added some, changed some things in types and began compiler work

moar tests and prepping for rebuilding much of the types.cpp file

further fixing

infinite loop still happening but it's somewhere in the fixedPoint methodd

fractional bits needed algo improved! Eliminated 2 errors

Corrected problems with the previous commit. No infinite loops. Actually appear to have corrected an error
2016-05-09 11:41:02 -05:00
RJ Catalano
a1a2eac5fd size capabilities functioning properly for fixed types 2016-05-09 11:41:02 -05:00
RJ Catalano
91fda50922 fixed problem with var...probably a conversion problem for fixed in size capabilities
adding fixed type tests

Removing bitshift and regrouping fixed type tests together
2016-05-09 11:41:02 -05:00
RJ Catalano
dff1a26f55 fix for token bug, also quick fix for the wei and seconds 2016-05-09 11:41:02 -05:00
RJ Catalano
6fa5e0fac9 Rational implemented...trying to figure out exponential 2016-05-09 11:41:02 -05:00
RJ Catalano
9a075458ad initial work for fixed types...potentially needing a constant literal type for this
notation

Rational implemented...trying to figure out exponential

fix for token bug, also quick fix for the wei and seconds

fixed problem with var...probably a conversion problem for fixed in size capabilities

adding fixed type tests

Removing bitshift and regrouping fixed type tests together

size capabilities functioning properly for fixed types

got exponents up and working with their inverse, changed a few of the tests....something is working that likely shouldn't be

slight changes to how to flip the rational negative around...still trying to figure it out

tests added

updated tests

odd differences in trying soltest from solc binary, let me know if you can replicate

test not working for odd reason

fixed test problem with fixed literals...still need a way to log this error

broken up the tests, added some, changed some things in types and began compiler work

moar tests and prepping for rebuilding much of the types.cpp file

further fixing

initial work for fixed types...potentially needing a constant literal type for this
2016-05-09 11:41:02 -05:00
chriseth
7ea3d950d7 Allow calling internal functions of libraries.
Internal functions of libraries can be called as if the library were a
base contract of the calling contract. As the calling convention for
internal functions is to not create a new call context, the code of
these functions will be pulled into the context of the caller,
duplicating their code. This might pull in code of further internal or
even private functions.

The use case for such functions is to allow libraries which can operate
on memory types such that these types can also be modified in place.
2016-05-03 22:41:18 +02:00
chriseth
652bc583c0 Remove non-determinism in missing code queue. 2016-05-03 01:14:26 +02:00
chriseth
8704dd0f7f Windows fix. 2016-04-21 16:13:39 +02:00
chriseth
ed9da5171b Source location for inline assembly. 2016-04-19 18:35:21 +02:00
chriseth
b125090208 Bugfix: static arrays in constructor arguments 2016-04-15 18:42:44 +02:00
chriseth
35ffcac35b Fix for bug about deleting dynamic array of structs. 2016-04-15 16:49:59 +02:00
Bob Summerwill
539b392a6d Merge pull request #496 from chriseth/removelog
Remove log.h from solidity.
2016-04-11 21:50:05 -07:00
chriseth
6f54b13d7a Remove log.h from solidity. 2016-04-12 01:03:46 +02:00
chriseth
f227050c20 Make solidity independent from ethcore. 2016-04-06 20:56:00 +02:00
chriseth
193b1c940c Merge pull request #475 from chriseth/byteasm
Allow "byte" in inline assembly.
2016-04-06 16:40:20 +02:00
chriseth
26a91109a7 Allow "byte" in inline assembly. 2016-04-06 12:31:31 +02:00
Dimitry
d2cee6f9c6 reduce unnecessary solidity:: namespace 2016-04-04 15:41:35 +04:00
Dimitry
d43d4347bf return instructionInfo style 2016-04-04 15:27:09 +04:00
Dimitry
9816510065 enable solidity test 2016-04-04 15:18:24 +04:00
Dimitry
858c41260d rename namespace for instruction.h/cpp in libevmasm 2016-04-02 15:56:43 +03:00
Dimitry
ccbd3ff63f move libevmcore to solidity 2016-04-01 23:11:01 +03:00
Bob Summerwill
c492d9be00 Merge pull request #470 from chriseth/redundancy
Remove code duplication in source references formatter.
2016-03-31 20:31:15 -03:00
chriseth
285fdf3b0a Merge pull request #457 from VoR0220/tokenNameAndStringFix
Fix for Token::name and token::toString
2016-04-01 01:08:59 +02:00
chriseth
ea7325d2d2 Remove code duplication in source references formatter. 2016-04-01 00:54:12 +02:00
VoR0220
3fc67245bf readding conditionals but with slight changes 2016-03-31 12:15:49 -05:00
Bob Summerwill
15a4f4d322 Merge pull request #465 from chriseth/fixindexaccess
Clean higher order bits before array index access.
2016-03-31 13:46:35 -03:00
chriseth
e31ecc8f77 Do not use source reference if it is empty. 2016-03-31 13:05:41 +02:00
chriseth
2c29492227 Correctly clean higher order bits for index access. 2016-03-31 10:33:45 +02:00
VoR0220
1b39d3b5d4 solAsserts added and some changes rolled back. 2016-03-30 13:15:54 -05:00
VoR0220
9404600b3f helper function in scanner and corresponding edits to parserBase 2016-03-30 13:09:38 -05:00
VoR0220
6c61e28dc2 Got it working exactly like you wanted ;) 2016-03-30 11:54:00 -05:00
VoR0220
6395168371 change lexical cast to unsigned int 2016-03-30 11:54:00 -05:00
VoR0220
ddd16d7655 Fix for Token::name and token::toString 2016-03-30 11:54:00 -05:00
chriseth
f049430723 Code generation (missing external access and source locations). 2016-03-30 02:37:00 +02:00
chriseth
949b00ed59 Parsing for inline assembly. 2016-03-30 02:37:00 +02:00
chriseth
79167aa897 Move libevmasm and lll. 2016-03-23 23:10:10 +01:00
Bob Summerwill
a1ce66b304 Fixed Windows warnings 2016-03-18 01:22:15 -07:00
chriseth
9b00290d74 Remove timestamp again and some fixes for ufixed parsing. 2016-03-11 17:50:09 +01:00
chriseth
299fef0c79 Do not allow value for delegatecall functions. 2016-03-11 17:50:09 +01:00
RJ Catalano
d0054a8d29 added keyword type and some tests, changes in lexical cast 2016-03-11 17:50:09 +01:00
RJ Catalano
b8bcb706e9 stylistic change, and got lexical cast to work with an iterator range 2016-03-11 17:49:32 +01:00
LianaHus
58e07151e3 - inline and assembly keywords added
- some style fixes
2016-03-11 17:49:32 +01:00
RJ Catalano
67793f1aed changed documentation and using lexical cast 2016-03-11 17:49:32 +01:00
RJ Catalano
9f5c3977fb changed extractUnsigned to handle iterators rather than a string 2016-03-11 17:49:32 +01:00
RJ Catalano
2738f4066a changed 1 to 0 in invalid argument catch block 2016-03-11 17:49:32 +01:00
RJ Catalano
93114949a3 needed this one string of notation 2016-03-11 17:49:32 +01:00
RJ Catalano
953e92b6f5 added from identifier or keyword handling of fixed types 2016-03-11 17:49:32 +01:00
RJ Catalano
29b74be413 fixed keyword added in for token type 2016-03-11 17:49:32 +01:00
chriseth
e5514becb8 BREAKING: Implement delegatecall and make default for library calls. 2016-03-11 17:49:32 +01:00
chriseth
94cbf15cfc Buildfix. 2016-02-22 18:12:58 +01:00
chriseth
968934c05d Move reusable parser components into base class. 2016-02-22 18:02:29 +01:00
RJ Catalano
9b67969fd6 further optimization, splitting function into pieces
generating strings on the fly, changed name, and added two tests
2016-02-18 11:23:00 -06:00
RJ Catalano
d2c0712f36 added const correctness to extract functions in Token
optimizations added in

more elegant solution created for m declaration

ubuntu wants to get rid of 0 <= first statement...so I will

change returnToken to token
2016-02-18 11:22:58 -06:00
RJ Catalano
84f2eb461b added two functions in Token to handle long identifiers, redid fromIdentifierOrKeyword, and made complementary changes in scanner and parser 2016-02-18 11:22:58 -06:00
RJ Catalano
f4da126018 tests added and changes made
fixed some silly problems in Token.cpp

windows error fix
2016-02-18 11:22:56 -06:00
RJ Catalano
7b918a7bc7 changes to redefine the token list, the scanner, and the parser and how they pass around variable types of different sizes
not ready for change to FixedPoint just yet

made this more const correct and added a switch statement for easier reading
2016-02-18 11:22:52 -06:00
LianaHus
5fb8953003 style fixes 2016-02-18 13:29:20 +01:00
chriseth
4a837169c5 Fix segfault when using wrong number of constructor arguments. 2016-02-11 17:12:30 +01:00
chriseth
29faf1b298 Index access for bytesXX. 2016-02-09 17:07:04 +01:00
chriseth
33b02a0d1b Fix uint178 problem. 2016-01-25 21:05:13 +01:00
Lu Guanqun
d36537e737 cond-expr: use the mobile type instead of the original type 2016-01-22 17:14:01 +00:00
Lu Guanqun
c8b0533933 [cond-expr] change the end to end test 2016-01-22 17:14:01 +00:00
Lu Guanqun
ac3019298a [cond-expr] add a test for different types 2016-01-22 17:14:01 +00:00
Lu Guanqun
1cd3288311 [cond-expr] add a test to assign memory to storage 2016-01-22 17:14:01 +00:00
Lu Guanqun
bf7daf0814 [cond-expr] don't allow conditional as left value for the first stage 2016-01-22 17:14:00 +00:00
Lu Guanqun
b003290638 [cond-expr] fixup according to code review 2016-01-22 17:14:00 +00:00
Lu Guanqun
82ee9503e9 [cond-expr] change endVisit() to visit() 2016-01-22 17:14:00 +00:00
Lu Guanqun
c781b130ef [cond-expr] make the codegen one instruction less 2016-01-22 17:14:00 +00:00
Lu Guanqun
36a758e224 [cond-expr] fix the crash in ExpressionStatement 2016-01-22 17:14:00 +00:00