Commit Graph

124 Commits

Author SHA1 Message Date
Lefteris Karapetsas
3701543ae8 FunctionType now returns const ref for Declaration 2015-01-29 19:18:50 +01:00
Lefteris Karapetsas
04190798eb Minor fixes plus a rebase merge fix 2015-01-29 18:21:51 +01:00
Lefteris Karapetsas
005100c486 Contract Interface Functions now return FunctionType
- Enchanced Function Type by declaration so that it can provide all the
  required information at each place interface functions are consumed

- Changed all places where interface functions was used.

- Simplified Mix's FunctionDefinition code
2015-01-29 17:11:13 +01:00
Christian
ae5a6a235c Super keyword. 2015-01-29 00:29:43 +01:00
Lefteris Karapetsas
b5a786dda1 Various fixes pertaining to State Variable accessors 2015-01-28 21:46:17 +01:00
Lefteris Karapetsas
2947e038d2 EVM Code for simple accessor function is properly generated 2015-01-28 21:46:16 +01:00
Lefteris Karapetsas
3ec6c0b1cb All interface functions are external. 2015-01-28 21:46:16 +01:00
Lefteris Karapetsas
b95048768d Solidity EntryLabel now uses a generic declaration
- Instead of a FunctionDefinition
2015-01-28 21:46:16 +01:00
Lefteris Karapetsas
5c7359aa09 State variable accessors code is now more organized
- FunctionDescription is the abstraction of what should describe a
  function. It can either be a VariableDeclaration of a
  FunctionDefinition.

- ParamDescription is what FunctionDescription uses to describe its
  parameters for outside use purposes with a pair of (name, type)
  strings

- Modified code around Solidity and especially interface handler to
  adapt to this change
2015-01-28 21:46:16 +01:00
Lefteris Karapetsas
3cc0492301 Work in progress for state variable accessors
- Changed the code so that a generic declaration with the combination of
  a function type can be used wherer a function definition was used
  before

- Since using an std::pair everywhere is really tiring with this commit
  I am in the process of abstracting it into a function
2015-01-28 21:46:16 +01:00
Christian
f59cda76de Call modifiers on constructor. 2015-01-26 10:23:39 +01:00
Christian
fd5899d038 Modifier overrides and callgraph analysis. 2015-01-26 10:23:39 +01:00
Christian
7ded95c776 Compilation of function modifiers. 2015-01-26 10:23:39 +01:00
Christian
d854e56789 Include virtual function overrides in constructor context. 2015-01-20 15:58:04 +01:00
Christian
ddf5e20d10 Call constructors of base classes. 2015-01-19 23:35:04 +01:00
Christian
4d833bc86b Inheritance in compiler. 2015-01-19 23:35:04 +01:00
Christian
e6c0a9b922 Magic variables are only needed durinng name and type resolution, not during compilation. 2015-01-19 23:35:04 +01:00
Lefteris Karapetsas
12e000e0d3 A first version of Natspec warning popup
- Runtime Contract code hash can now be retrieved from the Compiler

- Using the hash the Natspec handler stores and later retrieves Natspec
  JSON for a given contract.
2015-01-13 15:59:42 +01:00
Christian
26f9cd7f68 Coding style: Prefix for const variables. 2015-01-09 21:36:25 +01:00
Christian
fe16922087 Padding for ABI types. 2015-01-09 18:20:51 +01:00
Lefteris Karapetsas
9cf1c066fc Adjustments to Solidity compiler code for Function Hash 2015-01-09 00:27:26 +01:00
Lefteris Karapetsas
184ddca5a1 Compiler EVM generation now takes into account for the new function hash
identifier

- Changed tests to comply with the new function hash identifier
- Changed the function index offset to 4, and made it a constant for
  easy adjustment in the future
2015-01-08 17:18:31 +01:00
Lefteris Karapetsas
68b9427535 work in progress in testing the new function selector in the end to end tests 2015-01-08 00:19:19 +01:00
Lefteris Karapetsas
c55608f94b Solidity getInterfaceFunctions is now a map of hash to Function
- Also introduced dependency between libsolidity and libdevcrypto

- Compler's appendFunctionSelector now has a first version of using
  function signature hash instead of index
2015-01-07 16:39:21 +01:00
chriseth
3d98ec1323 Merge pull request #623 from chriseth/sol_constructorChecks
Checks for the constructor and ability to call functions
2014-12-17 15:18:49 +01:00
Lefteris Karapetsas
5c05b8d725 Solidity ForStatement Compiler part
- Work in progress
2014-12-17 00:03:30 +01:00
Lefteris Karapetsas
f7029726be Adding a ForStatement solidity AST Node.
- Adding ForStatement node
- Implemented Parsing for ForStatement
- A simple parsing test for the ForStatement
- Work in progress
2014-12-17 00:03:30 +01:00
Christian
b2e3771598 Add functions needed by constructor. 2014-12-16 23:49:45 +01:00
Christian
40f7c32e57 Packing and unpacking of constructor arguments. 2014-12-15 13:05:18 +01:00
Christian
2f64c56ef3 Create contracts. 2014-12-15 13:05:18 +01:00
Christian
6893d4d455 Merge remote-tracking branch 'ethereum/develop' into sol_swapConstants
Conflicts:
	test/solidityOptimizerTest.cpp
2014-12-12 17:22:45 +01:00
Christian
e2547526ab Do not add at the end of the function selector "loop". 2014-12-11 17:48:44 +01:00
Christian
66d95abfd9 Swap literals to the end if optimizing. 2014-12-11 17:48:44 +01:00
Christian
a735228079 Support empty strings. 2014-12-11 14:19:11 +01:00
Christian
8b54d1afb2 Merge remote-tracking branch 'ethereum/develop' into sol_strings
Conflicts:
	libsolidity/Types.cpp
2014-12-10 17:24:23 +01:00
chriseth
3c377f77bb Merge pull request #577 from chriseth/sol_constCleanup
Solidity const cleanup
2014-12-10 17:19:01 +01:00
Christian
373f0da267 Helper functions to access memory. 2014-12-10 17:15:17 +01:00
Christian
130ff85e85 String types. 2014-12-10 16:30:20 +01:00
Christian
5edffeba19 Take variable stack size correctly into account for return value packer. 2014-12-10 12:51:26 +01:00
Christian
35d5b28fae Variable-size stack elements for expression compiler. 2014-12-08 22:26:22 +01:00
Christian
b7d856ed5f Changes in compiler to support variably sized stack elements. 2014-12-08 19:02:40 +01:00
Christian
9b68033efc Cleanup before return. 2014-12-08 18:19:25 +01:00
Christian
cd5f495861 Register variably-sized variables on stack. 2014-12-08 16:56:41 +01:00
Christian
13640d7db8 Clear separation between ASTVisitor and ASTConstVisitor and more const specifiers. 2014-12-08 12:53:56 +01:00
Christian
c78c330634 Const AST visitor for the compiler. 2014-12-08 12:49:03 +01:00
Gav Wood
71ae1f8f00 Warnings fixes (well.. the UPnP was actually a crash fix.) 2014-12-02 20:18:01 +01:00
Christian
f30dc68cdd Sending ether. 2014-11-26 15:35:25 +01:00
Christian
583a315d3d Magic variables. 2014-11-23 21:28:45 +01:00
Christian
3ba9649dde Special handling for constructor. 2014-11-19 13:19:43 +01:00
Christian
46dd629820 Mapping types. 2014-11-14 14:08:14 +01:00
Christian
d1789250b6 Merge remote-tracking branch 'ethereum/develop' into sol_jumptable
Conflicts:
	libsolidity/Compiler.cpp
2014-11-11 10:39:59 +01:00
Christian
a0c72065fe Merge remote-tracking branch 'ethereum/develop' into sol_optimizer
Conflicts:
	libevmcore/Instruction.cpp
2014-11-10 13:30:59 +01:00
Christian
41b26e491b Replace function selector jump table by more resilient linear time check. 2014-11-10 13:13:53 +01:00
Christian
64a4d77c8b State variables. 2014-11-07 20:02:57 +01:00
Christian
dc8fb45e1f Merge remote-tracking branch 'ethereum/develop' into sol_optimizer 2014-11-07 02:13:31 +01:00
Christian
b66e58d6c9 Prevent optimizer from changing certain parts of the code. 2014-11-06 22:55:42 +01:00
Christian
225fc8e1b3 Option to activate the optimizer for solidity. 2014-11-06 22:55:42 +01:00
Christian
6c2e3ffd76 Merge remote-tracking branch 'ethereum/develop' into sol_typePromotion 2014-11-06 22:07:02 +01:00
Christian
d1df8b810f Ignore break and continue outside of loops. 2014-11-06 02:46:48 +01:00
Christian
13baaf98b8 Proper type promotion and conversion. 2014-11-06 02:36:39 +01:00
Christian
c1f7a1665f Converted all asserts to exceptions. 2014-11-05 15:01:24 +01:00
Christian
4dfd6dfa13 Some tests and bugfixes for the compiler. 2014-11-03 16:11:40 +01:00
Christian
25c0e08bdf Merge remote-tracking branch 'ethereum/develop' into sol_contractCompiler
Conflicts:
	libsolidity/AST.cpp
	libsolidity/AST.h
	libsolidity/Compiler.cpp
	libsolidity/Compiler.h
	libsolidity/NameAndTypeResolver.h
	libsolidity/Types.cpp
	solc/main.cpp
	test/solidityCompiler.cpp
2014-10-31 17:20:27 +01:00
Christian
a36db1f241 Actual contract creator and add solidity to AlethZero interface. 2014-10-31 14:37:23 +01:00
Gav Wood
c45495afb9 Big fixes. 2014-10-31 14:35:13 +01:00
Christian
cb9cb48dc7 Function selector and variable (un)packing. 2014-10-30 21:21:25 +01:00
Christian
7f19f3d133 Contract compiler and also add ExpressionStatement to AST.
ExpressionStatement functions as glue between Statements and Expressions.

This way it is possible to detect when the border between statements and
expressions is crossed while walking the AST. Note that ExpressionStatement is
not the only border, almost every statement can contains expressions.
2014-10-30 01:25:42 +01:00
Christian
62822ffd92 Fixed placements of const. 2014-10-29 19:28:30 +01:00
Christian
b5a4d12fa3 Compiler for assignments. 2014-10-29 14:33:25 +01:00
Christian
01224287f5 NEG->BNOT change 2014-10-29 14:26:37 +01:00
Christian
f91ddc2788 Adjustments for the NEG->BNOT change. 2014-10-28 17:09:06 +01:00
Christian
fae8ca001e Stylistic corrections. 2014-10-28 09:25:01 +01:00
Christian
a29eb889a2 Removed some more boost asserts. 2014-10-24 20:01:20 +02:00
Christian
59b5e950f4 Expression compiler. 2014-10-24 19:38:13 +02:00