chriseth
ec82706396
Fix crash related to `using for
` without a library.
2017-08-21 16:57:37 +02:00
Alex Beregszaszi
fe25bcf350
Library cannot have constructors
2017-08-21 11:03:55 +01:00
Alex Beregszaszi
a61c88e9fe
Use state mutability in override error messages
2017-08-16 17:23:09 +01:00
Alex Beregszaszi
a2aaa47ee2
Use state mutability in fallback/constructor check
2017-08-16 17:23:09 +01:00
chriseth
3d595d4b14
Warn about shift of literals.
2017-08-16 13:54:28 +02:00
Alex Beregszaszi
b225bf5d53
Remove useless payable & constant typecheck
2017-08-14 14:21:47 +01:00
Federico Bond
3571db6e3f
Avoid duplicate errors due to function overrides
2017-08-11 22:45:26 +01:00
Federico Bond
d4997dd9a3
Use a secondary location for function override errors
2017-08-11 22:45:25 +01:00
Federico Bond
a6949851f3
Refactor function override check to remove duplicate logic
2017-08-11 22:45:25 +01:00
Federico Bond
ff5bb54e3c
Use fully qualified name of super in message
2017-08-11 22:45:25 +01:00
Federico Bond
a5ceaac8df
Improve override changes signature error message
2017-08-11 22:45:25 +01:00
Alex Beregszaszi
8df89c5d5b
Disable unimplemented library functions instead
2017-08-08 12:42:10 +01:00
Alex Beregszaszi
1ada48f61e
Raise error when using unimplemented internal library functions.
2017-08-08 11:58:00 +01:00
Alex Beregszaszi
bb0eb57c2f
Constructors must be implemented if declared.
2017-08-04 20:38:45 +01:00
Alex Beregszaszi
2186401479
Remove duplicated check for unimplemented functions
2017-08-04 14:03:38 +01:00
Alex Beregszaszi
494dea262e
Show unimplemented function if trying to instantiate an abstract class
2017-08-04 14:03:37 +01:00
Alex Beregszaszi
c835bcec62
Replace isFullyImplemented with unimplementedFunctions in ASTAnnotations
2017-08-04 14:03:37 +01:00
Alex Beregszaszi
6d37f30d76
Rename Bare to Barecall
2017-08-01 10:47:10 +01:00
Alex Beregszaszi
9fc6eccc26
Add isFallback() helper
2017-07-27 21:52:57 +01:00
Alex Beregszaszi
53f747b7de
Merge pull request #2635 from ethereum/fixCrashOnAssignmentToNonLValue
...
Fix crash on assignment to non-LValue
2017-07-27 13:59:22 +01:00
chriseth
7c7c2baa82
Re-allow multiple modifiers per function.
2017-07-27 13:45:39 +02:00
chriseth
cb75e6218b
Fix crash on assignment to non-lvalue.
2017-07-26 14:32:25 +02:00
Alex Beregszaszi
033fc0cb1a
Include types in explicit conversion error message
2017-07-13 23:09:01 +02:00
Alex Beregszaszi
4229caaadc
Disable large arrays for memory location too
2017-07-13 22:47:35 +02:00
Alex Beregszaszi
cb4875a28b
Issue error properly for oversized arrays for calldata
2017-07-13 22:33:46 +02:00
Federico Bond
f20b150f38
Add type error when attempting value transfer to a non-payable contract
2017-07-12 23:57:53 -03:00
Alex Beregszaszi
db7ad508f8
Issue proper warning trying to access calldata variables in inline assembly
2017-07-12 10:48:44 +02:00
chriseth
dd34277ca6
Warn if local storage reference variable does not use "storage" explicitly.
2017-07-05 19:38:00 +02:00
Alex Beregszaszi
06fe61f89b
Rename to isHexNumber()
2017-06-28 17:01:55 +01:00
Alex Beregszaszi
8b0c866f02
Add hasHexPrefix() to AST::Literal
2017-06-28 16:57:32 +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
d0b6de0b34
Warn about copies in storage that might overwrite unexpectedly.
2017-06-26 16:31:36 +02: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
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
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
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
Federico Bond
0f8ad1d68f
Fix segmentation fault with constant function parameters
2017-06-21 22:46:27 -03:00
chriseth
29e7ad3d7b
Silence compiler warning.
2017-06-14 17:39:36 +02:00
chriseth
07cc84fade
Fix a crash about a non-callable expression.
2017-06-14 14:26:20 +02:00
chriseth
97cc968a13
Initial EVM1.5 assembly implementation.
2017-06-08 15:52:44 +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
8fe79fe706
Introduce Julia mode in AsmAnalyzer
2017-05-26 20:39:30 +01:00
chriseth
261731f7ee
Adapt EVM codegen to new namespace.
2017-05-26 15:08:27 +02:00
djudjuu
e82df073d1
minor fixes and changelog update
2017-05-22 12:25:50 +02:00
djudjuu
1d22233a43
refactoring functionCallAnnotation
2017-05-19 15:48:07 +02:00
chriseth
f3ec2ba39e
Refactor to combined scope and stack height info.
2017-04-26 17:12:04 +02:00
chriseth
1d712c7d64
Fix storage access tests.
2017-04-25 16:49:04 +02:00
chriseth
478f2997ea
Storage access from inline assembly.
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
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
9bc9fe6af7
Warn about side-effect free statements.
2017-04-21 11:36:38 +02: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
chriseth
9f328ff749
Turn non-constant constants error into warning.
2017-03-14 19:25:16 +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
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
2fcccb97d3
Merge pull request #1737 from ethereum/localmappings
...
Disallow uninitialized mapping variables.
2017-03-06 15:05:58 +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
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
c0961664f9
Deposit one stack item for non-value types in inline assembly type checking.
2017-02-20 12:33:22 +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
c87bafd2ed
Refactor type system to allow multiple entry points.
2017-02-14 13:23:44 +01:00
chriseth
1316bb7565
Warn about invalid checksums of addresses.
2017-01-24 23:37:48 +01:00
chriseth
0ef460461a
Check if constructor is public or not.
2017-01-20 19:22:39 +01:00
Yoichi Hirai
91d4e8e0ba
analysis: changes necessary to compile std/StandardToken.sol
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
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
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
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
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
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
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
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
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
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
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
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
Lu Guanqun
568da11369
support decayed tuple expression as left value
2016-01-04 16:11:36 +08: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
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
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
f9e52c9db1
Also check the object type for bound functions.
2015-11-29 00:16:07 +01:00
chriseth
d71cd3aa2b
Added the using x for y
directive.
2015-11-26 17:49:39 +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
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
LianaHus
ff421a9d65
passed SourceLocations instead of nodes to the error reporting function
2015-11-06 18:45:06 +01:00
chriseth
e3dffb611f
File reorganisation.
2015-10-21 00:46:01 +02:00