chriseth
83bf34c571
Review comments and cleanup.
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
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
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
4693aed177
Reject invalid definitions for interface contracts
2017-03-17 16:27:04 +00:00
Alex Beregszaszi
3ae88377d6
Change references to FunctionType::Location
2017-03-16 12:49:52 +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
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
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
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
f300bdb020
Move public constructor property into AST itself.
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
455e8a4ef8
Move lambda.
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
cc01d870ff
Disallow variable declaration with inferred empty tuple type.
2017-03-02 14:33:58 +01: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
c3c3cccbec
Fix early exist for fatal errors.
2017-02-16 14:57:00 +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
f3158f92d6
Support revert()
2017-02-10 22:40:42 +00:00
Alex Beregszaszi
f8461e9e31
Implement assert as a global function
2017-02-10 13:29:17 +00:00
Alex Beregszaszi
697db80b48
Disallow arrays with negative length
2017-02-02 00:24:45 +00:00
chriseth
1316bb7565
Warn about invalid checksums of addresses.
2017-01-24 23:37:48 +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
chriseth
0ef460461a
Check if constructor is public or not.
2017-01-20 19:22:39 +01:00
chriseth
23a654ade8
Fix default function type name visibility.
2017-01-19 11:11:40 +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
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
Federico Bond
de720e643d
Improve error message when trying to modify constant variables
2016-12-13 00:32:37 -03:00
Federico Bond
05139500fb
Warn about using msg.value in non-payable function
2016-12-08 16:22:13 -03:00
VoR0220
3f9f725737
Fix licensing headers
...
Signed-off-by: VoR0220 <rj@erisindustries.com>
2016-11-23 12:22:33 +01:00
chriseth
22b4d1b29a
Check that no internals are used in any external function type.
2016-11-16 14:37:18 +01:00
chriseth
925d674146
Disallow payable internal functions.
2016-11-16 14:37:18 +01:00
chriseth
cc8583ec7d
Function types.
2016-11-16 14:37:17 +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
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
Alex Beregszaszi
0dd75ac100
Use warning function in TypeChecker
2016-10-20 13:25:28 +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
Yoichi Hirai
7ae68e1e47
Fix pragma keyword check
...
Fixes #1192
2016-10-11 00:00:22 +02:00
Alex Beregszaszi
34df80c502
Add alias keccak256() for sha3()
2016-10-06 16:34:41 +02:00
chriseth
031fd568cc
Fix crash for TypeName[k].
2016-09-15 18:16:34 +02: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
Alex Beregszaszi
6ec40b3cde
Reject constant modifier on the fallback function
2016-09-06 11:40:00 +01:00
chriseth
384f189a6a
Tests for payable / private combination.
2016-09-06 10:58:56 +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
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
chriseth
4bfe09897e
Make fallback function throw by default.
2016-08-30 15:31:50 +02:00
chriseth
21b6aa92ff
Disallow fallback function to return values.
2016-08-26 00:07:50 +02:00
chriseth
6df6728165
Require modifiers to contain "_".
2016-08-16 14:52:47 +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
ab7a22f4a0
Disallow implementation of abstract function by constructor of derived class.
2016-06-06 19:38:22 +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
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
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
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
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
Dimitry
d2cee6f9c6
reduce unnecessary solidity:: namespace
2016-04-04 15:41:35 +04:00
Dimitry
858c41260d
rename namespace for instruction.h/cpp in libevmasm
2016-04-02 15:56:43 +03:00
chriseth
f049430723
Code generation (missing external access and source locations).
2016-03-30 02:37:00 +02: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
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
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
36a758e224
[cond-expr] fix the crash in ExpressionStatement
2016-01-22 17:14:00 +00:00
Lu Guanqun
9cd96222da
[cond-expr] support conditional expression as lvalue
2016-01-22 17:14:00 +00:00
Lu Guanqun
047172eb9a
[cond-expr] add type checker
2016-01-22 17:14:00 +00:00
chriseth
67c855c583
Merge pull request #356 from guanqun/break-not-in-loop
...
check whether break/continue is in the loop
2016-01-20 19:23:23 +01:00
Lu Guanqun
df728581ce
add another test case for continue not in loop
2016-01-19 03:24:58 +00:00
Lu Guanqun
c8886ed5cf
code changes according to Chris's comments
2016-01-19 02:16:13 +00:00
Liana Husikyan
9613a94153
Update TypeChecker.cpp
2016-01-15 18:11:05 +01:00
LianaHus
b2daa5a9d8
fixed assert on EI creation for structs containing only mapping or arrays
2016-01-15 17:36:06 +01:00
Lu Guanqun
e130bc7e7c
check whether break/continue is in the loop
2016-01-15 15:12:23 +08:00
chriseth
d2f18c73f7
Merge pull request #346 from chriseth/importAliases
...
Allow aliases during import.
2016-01-13 17:29:34 +01:00
RJ Catalano
c45593a444
clarification on dynamic arrays, switcheroo on typepointer, and a documentation test added
2016-01-11 23:41:20 -06:00
RJ Catalano
4a6815c9bd
Merge branch 'develop' of https://github.com/ethereum/solidity into develop
2016-01-11 15:39:35 -06:00
RJ Catalano
ac664e7f86
final changes to typechecker, the expression compiler, and a couple more tests for good measure
2016-01-11 14:25:59 -06:00
chriseth
f20a604c5a
Allow aliases during import.
2016-01-11 13:56:02 +01:00
RJ
df9dfa8fef
find common type
2016-01-10 01:09:58 -06:00
chriseth
d3c8847726
Fixed a crash during type checking.
2016-01-08 15:20:54 +01:00
chriseth
b158e48c1a
Merge pull request #338 from guanqun/add_paren
...
support syntax "(x) = 3"
2016-01-05 13:15:29 +01:00
Lu Guanqun
568da11369
support decayed tuple expression as left value
2016-01-04 16:11:36 +08:00
chriseth
0e2fa39fad
Use paths instead of simple identifiers wherever possible.
2015-12-21 18:44:21 +01:00
chriseth
603dc58040
Simple aliasing during import.
2015-12-18 12:46:56 +01:00
chriseth
d3c459b5a9
Parse complex import directives.
2015-12-18 12:46:54 +01:00
RJ Catalano
0ba24a5289
changed a couple of small nuances, made an attempt at fixing the parsing in the inline arrays case (fails), and added test for inline arrays per Chriseth request
2015-12-16 12:55:52 -06:00
RJ Catalano
caa6202f62
temporary assert added
2015-12-16 10:34:16 -06:00
RJ Catalano
c8e4e9c05c
still not able to get types resolved, however it is compiling
2015-12-15 16:44:11 -06:00
chriseth
591a4f1ff4
Merge pull request #288 from chriseth/import_contexts
...
Do not clutter importee when importing.
2015-12-15 11:43:59 +01:00
chriseth
53da78e609
Style.
2015-12-15 09:57:05 +01:00
chriseth
251e7aa462
Merge pull request #289 from chriseth/fix_base_constructor_params
...
Fix: Type checker crash for wrong number of base constructor arguments.
2015-12-10 15:48:48 +01:00
chriseth
f8228e8ab1
Relative paths in import directives.
2015-12-09 19:21:02 +01:00
chriseth
7cb7818cea
Source units are independent scopes.
2015-12-09 19:09:24 +01:00
chriseth
39f57a9c71
Fix: Segfaults connected to paramater types.
...
parameterTypes does not return by const reference anymore.
2015-12-09 17:57:34 +01:00
chriseth
f5b184323d
Fix: Type checker crash for wrong number of base constructor arguments.
2015-12-09 17:37:19 +01:00
chriseth
e510e7e792
Bugfix concerning pointers to moved data.
2015-12-08 12:41:24 +01:00
chriseth
7e3bf833ae
Bugfix for explicit memory types in libraries.
2015-11-30 19:46:26 +01:00
chriseth
e9c7837c15
Merge pull request #251 from chriseth/bind2
...
Bind library functions to types.
2015-11-30 16:06:44 +01:00
chriseth
f9e52c9db1
Also check the object type for bound functions.
2015-11-29 00:16:07 +01:00
chriseth
b97bb086de
Introduce selfdestruct alias for suicide.
2015-11-29 00:10:07 +01:00
chriseth
d71cd3aa2b
Added the using x for y
directive.
2015-11-26 17:49:39 +01:00
chriseth
09b2f9acb7
Resolve type names using regular AST visit.
2015-11-26 17:49:02 +01:00
chriseth
b47d593252
Do not store elements of a contract by AST node type.
2015-11-26 15:37:55 +01:00
chriseth
86495dfc57
Make members context-sensitive.
2015-11-26 15:37:55 +01:00
chriseth
e06768e8b5
Fix MSVC errors and warnings.
2015-11-26 14:47:28 +01:00
chriseth
6a2a946200
Make some functions const.
2015-11-26 13:44:09 +01:00
chriseth
bf55aa6ae2
Type checking for creating new arrays.
2015-11-26 13:10:12 +01:00
chriseth
30b325fdc1
Allow "new expressions" also for general type names.
...
Breaking change: If you want to send value with a contract creation, you
have to use parentheses now:
`(new ContractName).value(2 ether)(arg1, arg2)`
2015-11-26 13:10:12 +01:00
chriseth
0cf8d022ae
Addmod and mulmod.
2015-11-18 17:12:39 +01:00
LianaHus
a15d2bbb52
style fix
2015-11-06 21:07:42 +01:00
LianaHus
da47f9df7b
style fixes
2015-11-06 20:56:14 +01:00
LianaHus
63060fc1f0
fixed test framework
2015-11-06 18:45:06 +01:00
LianaHus
7eb162c0df
fix
2015-11-06 18:45:06 +01:00
LianaHus
79177de80b
fixed return valu for resolver
2015-11-06 18:45:06 +01:00
LianaHus
3f726825fb
added SourceLocations to error reporting for ReferenceResolver
2015-11-06 18:45:06 +01:00
LianaHus
ff421a9d65
passed SourceLocations instead of nodes to the error reporting function
2015-11-06 18:45:06 +01:00
LianaHus
02d060ea5c
fixed build
2015-11-06 18:45:06 +01:00
LianaHus
1a27bf8a39
added errors tu ReferencesResolver
2015-11-06 18:45:06 +01:00
chriseth
8fb49d85f9
Allow docstrings for statements.
2015-10-26 19:47:25 +01:00
chriseth
af4d687062
Fix indent.
2015-10-26 17:21:32 +01:00
chriseth
b4f561680a
Store docstrings in AST annotations.
2015-10-26 15:24:36 +01:00
chriseth
e3dffb611f
File reorganisation.
2015-10-21 00:46:01 +02:00