Mathias Baumann
e35a23bbcc
Add `switch (..)
to style checker
2019-11-11 17:44:21 +01:00
Daniel Kirchner
3321fc56ea
Split fallback function and introduce "fallback()" and "receive()" syntax.
2019-11-04 17:17:58 +01:00
Alexander Arlt
62950a9234
Support for abstract contracts.
2019-11-01 14:54:47 -05:00
Mathias Baumann
b76106fc4a
Parse override keyword for modifier definitions
2019-10-30 17:31:33 +01:00
chriseth
edf1e83fda
Merge remote-tracking branch 'origin/develop' into develop_060
2019-10-28 15:21:49 +01:00
Christian Parpart
df729b3084
Make use of C++17 std::optional<> instead of boost::optional<>.
2019-10-28 11:39:30 +01:00
Christian Parpart
5a52fa547e
Assembly: Changed parser to use strict assembly mode.
2019-10-25 15:01:25 +02:00
chriseth
f884373142
Merge branch 'origin/develop' into develop_060
2019-10-02 16:29:36 +02:00
Christian Parpart
00d7dac15f
Fixes source location in warning for shadowing import delcarations.
2019-09-30 11:45:46 +02:00
chriseth
6d6914f98f
Parser for try/catch.
2019-09-23 17:22:42 +02:00
Daniel Kirchner
4782c800ec
Initial introduction of array slices with partial implementation for dynamic calldata arrays.
2019-09-13 10:57:53 +02:00
Leonardo Alt
5cfe0b7670
Allow explicit conversion from address to address payable
2019-09-09 23:46:00 +02:00
Daniel Kirchner
2b938d703c
Allow global enum definitions.
2019-09-02 11:52:51 +02:00
Daniel Kirchner
872d21f527
Allow global struct definitions.
2019-09-02 11:17:42 +02:00
Mathias Baumann
24716404f8
Parse override keyword
2019-08-26 17:34:21 +02:00
Daniel Kirchner
9f6fff2120
Replace casting of external functions to address by a member named "address".
2019-08-19 14:56:04 +02:00
rocky
f9b631f410
A pragma version mismatch is not fatal if ...
...
error recovery is desired.
Fixes #7085
2019-07-17 19:01:01 -04:00
rocky
ca3afea1d7
Add Steve Johnson-style parser recovery rules:
...
SourceUnit = Error $
Block = '{' Error '}'
ContractDefinition = '{' Error '}'
Statement = Error ';'
Co-Authored-By: chriseth <chris@ethereum.org>
2019-06-17 14:47:07 +02:00
chriseth
4ee703e6e5
Revert "Add Steve Johnson-style parser recovery rules:"
...
This reverts commit 97f8ee0d1b
.
2019-05-28 18:09:24 +02:00
rocky
97f8ee0d1b
Add Steve Johnson-style parser recovery rules:
...
SourceUnit = Error $
Block = '{' Error '}'
ContractDefinition = '{' Error '}'
Statement = Error ';'
Co-Authored-By: chriseth <chris@ethereum.org>
2019-05-28 15:06:34 +02:00
chriseth
9a00729ce7
Provide dialect to Parser and InlineAssembly AST nodes.
2019-05-23 00:24:58 +02:00
Erik Kundt
656364d967
Fixes Natspec parser error when whitespace is missing.
2019-05-10 10:53:32 +02:00
rocky
b424446c5f
Move SemVerHandler to analysis to parsing to increase modularity...
...
If ever you want to separate building analysis from scanning/parsing/ast, this will help.
2019-04-17 10:13:42 -04:00
Mathias Baumann
efc8d79d53
Fix wrong location for inline asm blocks
2019-04-15 16:40:07 +02:00
Christian Parpart
bb28c8a877
Fixes wrong source location when reporting pragma solidity version conflicts.
2019-03-20 11:42:25 +01:00
chriseth
9a949c1bda
Set default EVM version to Petersburg.
2019-03-04 14:53:00 +01:00
Alex Beregszaszi
ecd246aeb6
Support petersburg in evmVersion
2019-03-04 14:10:41 +01:00
chriseth
7f5b335b47
Make EVM version part of EVM dialect.
2019-02-21 21:59:46 +01:00
Alex Beregszaszi
fcf884f201
Do not ignore fatal error in AsmParser for inline assembly
2019-02-21 16:18:53 +00:00
chriseth
1a823f0bf8
Fix tabs/spaces.
2019-02-13 17:05:48 +01:00
Alex Beregszaszi
021d30f036
Use specific boost include in DocStringParser
...
This is needed for C++17 support (at least on certain Boost and OS combinations)
2019-01-31 13:14:29 +00:00
Alex Beregszaszi
9aafa32825
Disallow empty import statements
2019-01-28 13:52:15 +00:00
chriseth
2fcfb216b5
Syntax for meta type information.
2019-01-17 20:36:48 +01:00
Christian Parpart
62fe57479e
make use of C++ = default
constructor declarations as well as more non-static member initialization syntax.
2018-12-19 11:26:42 +01:00
Christian Parpart
d10bae245e
liblangutil: SourceLocation to default initialize data members (w/o the use of ctor)
...
See: http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#c45-dont-define-a-default-constructor-that-only-initializes-data-members-use-in-class-member-initializers-instead
2018-12-19 11:21:45 +01:00
Alex Beregszaszi
c2ec6d71b4
Add version pragma parsing to Parser
2018-12-18 15:02:35 +00:00
Leonardo Alt
7f41487ff6
Sort includes in libsolidity/parsing
2018-12-17 19:28:10 +01:00
chriseth
fb3a0ac1c7
Codegen for object access.
2018-12-11 19:24:44 +01:00
Mathias Baumann
2f6dc2e773
Replace push_back with emplace_back where it makes sense
2018-12-10 19:02:39 +01:00
Christian Parpart
c48a5264be
liblangutil: SourceLocation: adds (shared) pointer to underlying CharStream source, eliminating sourceName
...
Also, adapted affecting code to those changes.
2018-11-30 17:07:12 +01:00
Christian Parpart
e4106bd06e
Change scanner error diagnostics to be non-intrusive to the token API.
...
This also implicitly eliminates the magic-token Token::IllegalHex, and
streamlines error diagnostics over a custom enum class.
2018-11-24 12:40:51 +01:00
Lazaridis
e454737a3c
adapt to latest code changes
2018-11-23 17:27:52 +01:00
Christian Parpart
ec47c8946b
Isolating libyul library API into its own namespace yul
.
2018-11-23 14:29:00 +01:00
Christian Parpart
713d94476e
Reorder some include files and group <libyul/>'s together (as much as possible)
2018-11-23 12:37:19 +01:00
Christian Parpart
0f4ed52a71
Rewrite header paths to adapt to recent git mv
of libsolidity/inlineasm to libyul
2018-11-23 11:18:57 +01:00
Christian Parpart
d67322a186
Introduce namespace langutil
in liblangutil directory.
...
Also:
- Use {}-style list initialisation for SourceLocation construction
- Introduce new system includes
- Changes the API of the Scanner to take source as value (with move) as opposed to as a reference
2018-11-21 19:13:44 +00:00
Christian Parpart
87821c53c3
Isolating files shared between Yul- and Solidity language frontend.
2018-11-21 18:58:12 +00:00
Leonardo Alt
9a4fd946c3
Add Scanner function that prints source based on SourceLocation
2018-11-13 13:49:29 +01:00
chriseth
af65bac737
Remove trailing whitespace.
2018-11-12 09:15:22 +01:00
Christian Parpart
f112377dd4
Refactor solidity::Token
into an enum class
with TokenTraits
helper namespace
2018-10-22 17:00:51 +02:00
chriseth
06200b4b64
Merge pull request #5180 from ethereum/cpp-cleanup
...
Some C++ cleanup
2018-10-10 11:43:42 +02:00
Alex Beregszaszi
6c3d12d85b
Do not require ctype/stdio if not needed
2018-10-09 19:06:22 +01:00
Lazaridis
4bcd89105c
provide general hex-literal error message, fixes #1802
...
dummy
2018-10-09 06:51:19 +03:00
Alex Beregszaszi
fa0ce6a7e7
Use empty() instead of size() == 0
2018-10-09 04:29:37 +01:00
chriseth
d76bfcd935
Fix typos.
2018-10-04 13:28:16 +02:00
hydai
b409faa675
Disallow uppercase X in hex number literals
2018-09-19 22:01:15 +08:00
Daniel Kirchner
1ce3581a52
Accept `address payable
` during parsing.
2018-09-11 14:52:23 +02:00
chriseth
0b7b8162ca
This fixes several bugs with regards to line breaks and comments:
...
- any unicode line break (line feed, vertical tab, form feed, carriage
return, NEL, LS and PS) is considered to terminate a single-line
comment. The line break itself is considered to be the next token
after the comment, leading to a parser error if it is not an
ascii character (i.e. for NEL, LS and PS).
- unterminated multiline comments are considered illegal tokens
- '/** /' is considered an unterminated multiline comment
(previously, whitespace was allowed before the last '/'
2018-09-06 16:42:59 +02:00
chriseth
977ac9c390
Refactor handling of whitespace.
2018-09-06 16:42:59 +02:00
Daniel Kirchner
f020f96b6c
More consistently use parse*() functions without argument in the parser.
2018-09-06 14:55:07 +02:00
chriseth
85debe77d9
Merge pull request #4866 from bakaoh/issue4743
...
Fix#4743: Incorrect source location for nameless parameters
2018-09-04 20:21:03 +02:00
Daniel Kirchner
a102f3b783
Remove trailing whitespace for all files in the repository.
2018-09-04 11:30:30 +02:00
bakaoh
c458f5988b
Fix#4743: Incorrect source location for nameless parameters
2018-08-28 11:11:40 +07:00
Chase McDermott
551e0bf47c
Rename Location::Default to Location::Unspecified.
2018-08-17 18:15:22 -05:00
Christian Parpart
b9222808f6
Cleanup & polish numbers-with-underscores parsing, also improving tests.
2018-08-08 13:38:46 +02:00
Balajiganapathi S
09a36cba02
Add stricter hex underscore rules
2018-08-08 12:05:51 +02:00
Balajiganapathi S
0000bfc604
Allow underscores in numbers.
2018-08-08 12:05:51 +02:00
Erik Kundt
182a0a9551
Disallows old constructor syntax.
2018-07-18 14:29:01 +02:00
Cryptomental
140dbfdbd8
Code, Changelog, ReleaseChecklist: Fix typos.
...
Refs: #4442
2018-07-11 00:26:23 +02:00
Daniel Kirchner
3984beef7d
Remove constant keyword from parser.
2018-07-03 15:31:34 +02:00
Daniel Kirchner
e4b7b2160e
Add new reserved keywords.
2018-06-12 16:02:53 +02:00
Erik Kundt
2e9f5d1c98
Introduces emit token and removes identifier workaround.
2018-06-11 21:21:22 +01:00
Leonardo Alt
ac68710789
Disallow trailing dots that are not followed by a number
2018-05-30 15:14:53 +01:00
mingchuan
b7cafcbdf9
Allow using calldata
keyword to specify data location
2018-05-30 18:05:55 +08:00
chriseth
3ca6738114
Add assert about source location.
2018-05-16 03:52:24 +02:00
chriseth
67d208d144
Parse multi variable declaration statement.
2018-05-16 03:22:45 +02:00
Alex Beregszaszi
868d449c38
Merge pull request #4047 from ethereum/refactorToMulti
...
Refactor to allow implementing multi variable declarations.
2018-05-09 15:37:19 +01:00
chriseth
fe8f38a7a4
Assert integrity of empty IndexAccessPath structure.
2018-05-09 14:55:36 +02:00
Daniel Kirchner
02380113d4
Use the entire token as source location for parser errors.
2018-05-09 14:08:22 +02:00
chriseth
be54f48197
Further refactor.
2018-05-09 11:48:21 +02:00
chriseth
86b7adc18f
Refactor expression parser.
2018-05-09 11:48:21 +02:00
Alex Beregszaszi
cc10839073
Have more uniform parser errors
2018-05-04 13:27:05 +01:00
Alex Beregszaszi
c7ee649d80
More user friendly output in case of Identifier and Token keywords
2018-05-04 13:27:05 +01:00
Alex Beregszaszi
882248ce75
Remove code duplication in expectToken
2018-05-04 13:27:05 +01:00
Alex Beregszaszi
252bde8542
Introduce Token::friendlyName() helper
2018-05-04 13:11:23 +01:00
Alex Beregszaszi
e3279d8af8
Display nicer error messages in the parser (display tokens and not internal names)
2018-05-04 12:39:37 +01:00
Alex Beregszaszi
ed9f80690b
Simplify expectIdentifierToken by using expectToken
2018-05-03 22:10:51 +01:00
Alex Beregszaszi
73c99d15cd
Remove useless helper expectAssignmentOperator in parser
2018-05-03 21:35:38 +01:00
chriseth
d44fb03322
Refactor parser.
2018-04-26 10:59:02 +02:00
Leo Arias
b74566e4ea
docstring: add missing space
2018-04-23 21:47:53 +00:00
Daniel Kirchner
6862f22943
Fix internal compiler error when parsing `var
` declaration without identifier.
2018-04-12 14:57:14 +02:00
chriseth
b5a696ad48
Properly cope with constructor headers.
2018-04-11 22:00:21 +02:00
chriseth
2ad1acaf72
Warn if modifiers are applied to functions without implementation.
2018-04-11 22:00:21 +02:00
chriseth
6d289783b4
Fix state variable parsing.
2018-04-11 22:00:04 +02:00
Daniel Kirchner
3eedbc6a9c
Error when using no parentheses in modifier-style constructor calls.
2018-04-10 12:09:34 +02:00
chriseth
5b1c0506fa
Allow `memory
` suffix for internal elementary type parsing.
2018-04-05 16:06:04 +02:00
Daniel Kirchner
96eff0ff6a
Error when using empty parenthesis for base class constructors that require arguments.
2018-04-05 11:52:22 +02:00
Daniel Kirchner
8f66390f56
Set isConstructor to false unconditionally and update to true later for constructors.
2018-04-03 18:21:55 +02:00
Daniel Kirchner
e2dac9ed39
Set header.isConstructor for old style constructors in parseFunctionHeader as well.
2018-04-03 18:21:55 +02:00
Daniel Kirchner
d664a599e6
Constructors are defined using the `constructor
` keyword.
2018-04-03 18:21:55 +02:00