Commit Graph

690 Commits

Author SHA1 Message Date
chriseth
587c87b15b Commandline interface additions for webassembly binary. 2019-11-05 20:05:57 +01:00
chriseth
e79a32e9d5 Wasm to binary assembly stack. 2019-11-05 20:02:42 +01:00
chriseth
cb2096c82a Add modifier depth to source mappings. 2019-11-05 16:50:38 +01:00
Daniel Kirchner
3321fc56ea Split fallback function and introduce "fallback()" and "receive()" syntax. 2019-11-04 17:17:58 +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
Leonardo Alt
d685554980 Create option for metadata hash 2019-09-13 18:59:12 +02:00
Daniel Kirchner
f4d990e5be Drop constant and payable fields from ABI. 2019-09-06 14:42:09 +02:00
chriseth
fd687f50ff
Merge pull request #7353 from ethereum/develop
Update 0.6.0 from develop
2019-09-04 20:21:37 +02:00
chriseth
8485a1abec Change ABI sorting order. 2019-09-04 13:06:09 +02:00
Daniel Kirchner
872d21f527 Allow global struct definitions. 2019-09-02 11:17:42 +02:00
Mathias Baumann
444395960f Fix link to Contract ABI in source code 2019-08-13 12:43:04 +02:00
Leonardo Alt
4214cd1354 [SMTChecker] Fix ICE when reporting cex concerning state vars from different source files 2019-08-10 20:56:52 +02:00
rocky
7fd7cc1e76 Produce AST even when there are parser errors 2019-08-07 15:25:53 +02:00
chriseth
a30be56c27 Additional type info for ABI. 2019-07-18 16:54:11 +02:00
chriseth
d3e542d32c Provide secondary source location for error messages in standard json. 2019-07-04 10:54:01 +02:00
Leonardo Alt
6f8fd309a2 Compile only requested sources and contracts 2019-07-01 18:52:21 +02:00
Leonardo Alt
3cb4ed83c1 [SMTChecker] Split SMTChecker into SMTEncoder and BMC 2019-07-01 15:05:03 +02:00
chriseth
89f0e1e6da Use updated swarm hash. 2019-06-27 12:49:06 +02:00
chriseth
aa11ad7d0a Update swarm hash. 2019-06-27 12:48:51 +02:00
chriseth
c6f7f5b2b0 Enable EWasm output. 2019-06-25 19:07:38 +02:00
chriseth
56db792ad9
Merge pull request #6876 from rocky/recoveringParser1-StandardCompiler
Add parser errorRecovery (including StandardCompiler)
2019-06-18 22:40:35 +02:00
rocky
1a7e09ab7a Add errorRecovery boolean to StandardCompiler 2019-06-18 15:54:05 -04:00
chriseth
05a67c486e Use "what" in exception reports. 2019-06-18 17:34:10 +02: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
chriseth
f9dca1f282
Merge pull request #6681 from rocky/recoveringParser1
Add Steve Johnson-style parser recovery rules:
2019-05-28 15:36:45 +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
a3f721bbcc
Merge pull request #6583 from ethereum/reset_yulstringrepo
Reset YulStringRepository regularly
2019-05-28 14:20:53 +02:00
Bhargava Shastry
dbae0fa939 Reset Yul string repository before each compilation. 2019-05-28 13:12:39 +02:00
chriseth
df96648b1c Do not allow msize in inline assembly if the Yul optimizer is active. 2019-05-28 12:54:33 +02:00
chriseth
9a00729ce7 Provide dialect to Parser and InlineAssembly AST nodes. 2019-05-23 00:24:58 +02:00
chriseth
ce19e2e4bc
Merge pull request #6599 from ethereum/ipfsHash
Add IPFS hash of source files to metadata.
2019-05-15 14:21:58 +02:00
chriseth
b01a8c544c Use IPFS url in metadata for source links. 2019-05-15 12:40:03 +02:00
Daniel Kirchner
a10501bb7d
Merge pull request #6725 from AndreyBronin/develop
GCC 9.1 build fix. error: redundant move in return statement
2019-05-15 11:37:20 +02:00
Andrey Bronin
4eb37fe631 fix warning in GCC 9.1: redundant move in return statement 2019-05-14 17:44:28 +03:00
chriseth
d753fcdb36 Tools to compute UnixFS IPFS hash. 2019-05-14 11:52:11 +02:00
Erik Kundt
2b021eaa30 Allows wildcard as output selector in standard JSON. 2019-05-10 18:58:51 +02:00
Daniel Kirchner
a6a28ac475 Allow overwriting the release flag for tests and adjust test suite to CBOR metadata. 2019-05-08 22:21:50 +02:00
Alex Beregszaszi
e121c8f3c7 Store compiler version in CBOR metadata 2019-05-08 22:21:50 +02:00
Mathias Baumann
cf35e5ba02 Issue warning for variables called super or this 2019-05-02 11:30:24 +02:00
chriseth
eef3f95724 Move metadata settings into its own object. 2019-04-29 14:19:27 +02:00
chriseth
0bfd587363
Merge pull request #6527 from rocky/move-SemVerHandler
Move SemVerHandler to analysis to parsing to increase modularity...
2019-04-18 13:00:45 +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
chriseth
922ab0d72d
Merge pull request #6534 from ethereum/reuseLiteralContent-6472
Re-produce the original 'useLiteralContent' setting
2019-04-17 15:41:55 +02:00
Mathias Baumann
b24dd42e47 Re-produce the original 'useLiteralContent' setting 2019-04-17 14:54:51 +02:00
Grant Wuerker
69b4ce36de Some move semantics improvements. 2019-04-17 14:19:48 +02:00
Christian Parpart
bf43eebea9 libsolidity: Introducing TypeProvider API, for clear type system ownership. 2019-04-16 18:26:45 +02:00
chriseth
420a7dc3d6 Initial IR generator. 2019-04-04 15:02:42 +02:00
chriseth
3264e9abf0 Make optimiser settings available to assembly stack. 2019-03-28 18:24:13 +01:00
chriseth
2308904f68 Remove "using namespace" from header and move Instruction to dev::eth. 2019-03-28 13:48:11 +01:00
Alex Beregszaszi
d6dda7279c Change CompilerStack.reset to have keepSettings flag instead of keepSources 2019-03-26 14:46:13 +00:00
Alex Beregszaszi
cca73f9354 Remove deprecated CompilerStack.addSources 2019-03-26 14:46:02 +00:00
chriseth
72c0e44907
Merge pull request #6338 from ethereum/compilerstack-setsource
Introduce setSources in CompilerStack
2019-03-26 15:31:57 +01:00
Alex Beregszaszi
e211b5b1e1 Add warning that Yul is still experimental 2019-03-25 20:17:11 +00:00
Alex Beregszaszi
0432401e20 Emit warning when using the Yul optimiser 2019-03-25 18:38:06 +01:00
Alex Beregszaszi
0d6d0f476c Use setSources 2019-03-25 15:11:00 +00:00
Alex Beregszaszi
66a977d999 Introduce setSources in CompilerStack 2019-03-25 15:11:00 +00:00
Alex Beregszaszi
642d4b9217 Abort if parseAndAnalyze failed but no errors are reported in compileYul 2019-03-25 13:19:33 +00:00
Alex Beregszaszi
3bc2c35cc4 Support compiling Yul within StandardCompiler 2019-03-22 01:35:16 +00:00
chriseth
d381e26fc8 Rename "enabled" optimizer setting stage to "standard". 2019-03-21 11:04:40 +01:00
Mathias Baumann
0fbea8a1a0 Change return type for interfaceType() to ResultType 2019-03-21 07:25:28 +01:00
Alex Beregszaszi
ea1944bb2d Removed unused isLibrary from flag addSource in CompilerStack 2019-03-20 17:41:51 +00:00
Alex Beregszaszi
7babe3dbba Introduce simplfied CBOR encoding for Metadata 2019-03-19 16:06:19 +00:00
chriseth
6d1ed93247 Use stack optimizations. 2019-03-14 15:34:23 +01:00
Mathias Baumann
fbbd03dbd7 Exclude internal functions in library ABIs 2019-03-11 16:33:44 +01:00
chriseth
8b20ecb558 Refactor StandardCompiler to split into input parsing/validating and compilation steps. 2019-03-07 17:49:55 +01:00
Alex Beregszaszi
fcbb8ec51c Allow returning metadata in StandardCompiler without compilation 2019-03-04 16:19:55 +01:00
Alex Beregszaszi
26ca144647 Cache metadata and allow after analysis in CompilerStack 2019-03-04 16:19:54 +01:00
chriseth
4d10f4b4cf Process and validate standard-json optimizer settings. 2019-03-04 11:40:28 +01:00
Alex Beregszaszi
cf5c13f9c7 Introduce global optimiser settings. 2019-03-04 11:40:28 +01:00
Alex Beregszaszi
679ff78714 Restrict parse/analyse in CompilerStack 2019-02-28 13:59:33 +00:00
Alex Beregszaszi
b04b86a938 Restrict the state when settings can be altered in CompilerStack 2019-02-28 12:55:36 +00:00
Leonardo Alt
2405b2151a EVMVersion in langutil namespace instead of solidity 2019-02-25 15:29:57 +01:00
Daniel Kirchner
8ca6715e18 More style checks. 2019-02-14 11:41:20 +01:00
chriseth
1a823f0bf8 Fix tabs/spaces. 2019-02-13 17:05:48 +01:00
chriseth
d073eb1544 Move AssemblyStack to libyul. 2019-02-13 12:23:07 +01:00
chriseth
02373c2225 Adjust uses of AsmCodeGen. 2019-02-13 11:35:49 +01:00
Bhargava Shastry
7751fa740f Ensure we fail gracefully when user tries to optimize Yul code 2019-02-12 11:21:02 +01:00
chriseth
b34e104173 Make dialect a shared pointer. 2019-02-11 15:48:29 +01:00
Alex Beregszaszi
ee09d54525 Change FIXMEs into TODOs where appropriate 2019-01-29 00:35:23 +00:00
Alex Beregszaszi
9aafa32825 Disallow empty import statements 2019-01-28 13:52:15 +00:00
Mudit Gupta
2f91781a80
useLiteralContent data validation
Squashed commit of the following:

commit bbceee6997c1b951eb6054f7d5b7560fe1773690
Author: Mudit Gupta <guptamudit@ymail.com>
Date:   Tue Jan 22 23:27:49 2019 +0530

    Removed extra check

commit 4f7c3cc58e94836b1dddcc5f2938da14adad6252
Author: Mudit Gupta <guptamudit@ymail.com>
Date:   Tue Jan 22 17:51:05 2019 +0530

    Updated test error message

commit 5da45f2a23840e7bb1978853e1c184faec65b3e0
Author: Mudit Gupta <guptamudit@ymail.com>
Date:   Tue Jan 22 17:46:09 2019 +0530

    Renamed test

commit e661418deac25f31c49091be3c80244f566fc14c
Author: Leonardo <leo@ethereum.org>
Date:   Tue Jan 22 17:41:56 2019 +0530

    Update libsolidity/interface/StandardCompiler.cpp

    Co-Authored-By: maxsam4 <guptamudit@ymail.com>

commit d289b4dc1956ab736aada613e810cf2e2d124d4d
Author: Mudit Gupta <guptamudit@ymail.com>
Date:   Tue Jan 22 17:29:40 2019 +0530

    changed style

commit 5a7cf08db3027d75081d2e698dd51b807bef5abb
Author: Mudit Gupta <guptamudit@ymail.com>
Date:   Tue Jan 22 17:20:37 2019 +0530

    Added test case for missing useLiteralContent

commit 6e866c46aa92d6a89f2b341bd717c3886946f3ff
Author: Mudit Gupta <guptamudit@ymail.com>
Date:   Tue Jan 22 17:09:30 2019 +0530

    input check for useLiteralContent
2019-01-23 10:22:27 +05:30
chriseth
a9fa2658d8 Add helper to show if contract can be deployed. 2019-01-17 20:36:48 +01:00
chriseth
e6fee257e6 Code generation for access to contract code. 2019-01-17 20:36:48 +01:00
chriseth
9222eff08f Make the dialect available everywhere. 2019-01-07 16:41:03 +01:00
chriseth
4c7151e57f Do not include empty JSON objects in output. 2018-12-19 14:59:29 +01:00
chriseth
beae2a608b Only fully compile if binaries requested. 2018-12-19 12:58:17 +01:00
chriseth
4e89945d82 Some more compiler state tests. 2018-12-19 12:58:17 +01:00
chriseth
20189c3f3b
Merge pull request #5637 from ethereum/better-json-error-reporting
Json: Provide better error message when 'settings' is not an object
2018-12-18 19:39:46 +01:00
Mathias Baumann
c43d96f2bf Json: Provide better error messages for wrong types 2018-12-18 18:36:50 +01:00
chriseth
bd52beedff Cache hash computations. 2018-12-18 16:38:25 +01:00
Leonardo Alt
340ee4156d Sort includes in libsolidity/interface 2018-12-17 19:24:42 +01:00
Leonardo Alt
8cd2ac8462 Disallow unknown JSON keys in standard-json 2018-12-12 17:32:42 +01:00
chriseth
fb3a0ac1c7 Codegen for object access. 2018-12-11 19:24:44 +01:00
chriseth
8d49e53995 Provide Dialect to EVMCodeTransform. 2018-12-11 19:24:31 +01:00
liangdzou
362648a450 Reuse stack slots in Yul to EVM code generation. 2018-12-10 14:28:56 +01:00
chriseth
4b2a64306a
Merge pull request #5587 from ethereum/yulCodeBuiltins
Builtin functions to access Yul objects.
2018-12-06 16:49:52 +01:00
chriseth
3fc118ba21 Analyze and compile sub-objects. 2018-12-06 14:32:04 +01:00
chriseth
0e8841005c
Merge pull request #5554 from ethereum/cp-SourceReferenceFormatter-refactor
[2/3] Refactor SourceReferenceFormatter (split-out data extraction & make use of new SourceLocation knowledge)
2018-12-06 14:01:39 +01:00
Christian Parpart
073b03d90c liblangutil: refactor SourceReferenceFormatter, splitting out retrieval and making use of new SourceLocation's CharStream knowledge 2018-12-06 14:01:01 +01:00
chriseth
3a378eae1a Restrict toHex to bytes. 2018-12-05 22:37:05 +01:00
chriseth
c8e201e520 Provide Yul Object builtins. 2018-12-04 15:40:50 +01:00
chriseth
7ee1ddc172 Switch namespaces. 2018-12-04 15:36:03 +01:00
chriseth
3ebb78a886 Adjust include paths. 2018-12-04 15:20:29 +01:00
chriseth
99db4e3ff4 Introduce the concept of builtin functions. 2018-12-04 12:06:33 +01:00
chriseth
4b98946e5a
Merge pull request #5341 from ethereum/optimizeAssemblyCommandline
Apply the optimize commandline parameter to assembly mode.
2018-12-03 11:52:48 +01:00
chriseth
aaeb74f592
Merge pull request #5537 from ethereum/cp-SourceLocation-related-refactoring
[1/3] SourceLocation related refactoring.
2018-11-30 23:45:31 +01:00
chriseth
6c44c5f0c9 Apply the optimize commandline parameter to assembly mode. 2018-11-30 23:39:05 +01:00
Christian Parpart
435f7b3b72 liblangutil: Scanner: remove superfluous sourceName field (it's in CharStream already)
Also, ParserBase::sourceName() was dead code. Eliminating it should
increase test coverage (how sneaky) :-)
2018-11-30 17:07:17 +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
chriseth
0bd9db480f Add skeleton for contract level checker. 2018-11-30 16:30:19 +01:00
Christian Parpart
22eff22492 liblangutil: extends CharStream to know about the respective (file-)name (and adapt codebase to it) 2018-11-29 12:45:27 +01:00
chriseth
728119bb11 Use yul parser in assembly stack. 2018-11-27 15:59:57 +01:00
chriseth
e016cb99e6 Yul objects. 2018-11-27 15:59:57 +01:00
Christian Parpart
aeb66905de
Moving SourceReferenceFormatter into langutil namespace. 2018-11-24 12:33:36 +01:00
chriseth
9a94e503da
Merge pull request #5491 from ethereum/libyul-as-library
Libyul as static library (version 3 ;( )
2018-11-23 17:01:18 +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
Leonardo Alt
f44be616c9 Renaming json fields smtlib2queries and smtlib2responses 2018-11-23 09:43:49 +01:00
chriseth
54bed454f6 Rename function and warn if responses are supplied for Z3. 2018-11-23 09:43:49 +01:00
chriseth
bb10be789c Inject SMTLIB2 queries and responses via standard-json-io. 2018-11-23 09:43:49 +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
Alex Beregszaszi
d60cab1983 Add CompilerStack state assertions in internal methods 2018-11-14 10:47:26 +00:00
Alex Beregszaszi
be70703f82 Move lastContractName closer to contractNames 2018-11-14 10:29:16 +00:00
Alex Beregszaszi
5778af07a3 Do not crash on filesystemFriendlyName if no contracts were compiled 2018-11-14 10:29:16 +00:00
Leonardo Alt
9a4fd946c3 Add Scanner function that prints source based on SourceLocation 2018-11-13 13:49:29 +01:00
Daniel Kirchner
74557ceb0e Deterministic YulStringRepository using string hashes. 2018-11-12 23:43:16 +01:00
chriseth
0f2ba3522f Reset yul string repository. 2018-11-09 15:40:36 +01:00
chriseth
6bbedab383
Merge pull request #5265 from ethereum/cleanupsha3
Simplify sha3.
2018-11-09 15:39:57 +01:00
Christian Parpart
ab0de38f16
Eliminate byte-typedef and use uint8_t in all their places instead.
This change is made to (easily) be forward compatible with future C++
standards, in order to allow compiling the code with newer standards at
some point in the future.

* Removed the `using byte = uint8_t;` line from Common.h
* Mechanically change all uses of `byte` to `uint8_t`.

Tested with GCC 7.3 in C++11/14/17 modes :-)
2018-11-07 12:17:57 +01:00
chriseth
e78b95d9d4 Renamed SHA3.{h,cpp} files. 2018-10-18 14:31:36 +02:00
Christian Parpart
1304361b9c
Renaming namespace dev::julia to dev::yul. 2018-10-15 11:58:51 +02:00
Christian Parpart
9a4bec7e47
Renaming libjulia to libyul 2018-10-15 11:52:35 +02:00
Alex Beregszaszi
e732c49c2f Change find to use a single character 2018-10-09 18:06:25 +01:00
Alex Beregszaszi
fa0ce6a7e7 Use empty() instead of size() == 0 2018-10-09 04:29:37 +01:00
chriseth
db4f780283
Merge pull request #4962 from anurag-git/anurag_issue_3667-1
Removed default case from "ExpressionCompiler::visit(FunctionCall...)".
2018-10-01 13:24:26 +02:00
Anurag Dashputre
3321000f67 Removing extra default cases to force compile time error, instead of runtime. 2018-09-30 12:40:38 +05:30
Alex Beregszaszi
d71cc66dde Use GasEstimator::dataGas in CompilerStack 2018-09-28 00:03:35 +01:00
chriseth
f81c6e6d16
Merge pull request #5099 from ethereum/standard-json-optimiser
Be more strict about values in the optimizer block in StandardJSON
2018-09-26 22:31:27 +02:00
Alex Beregszaszi
384a65f660 Be more strict about values in the optimizer block in StandardJSON 2018-09-26 16:51:08 +01:00
Alex Beregszaszi
d64be90497 Add PathGasMeter.estimateMax helper 2018-09-26 14:25:40 +01:00
Alex Beregszaszi
8cfc6c98d6 CREATE2 is part of Constantinople now
Also add hasCreate2 to EVMVersion
2018-09-26 01:58:10 +01:00
chriseth
64a6888aba
Merge pull request #5063 from ethereum/standard-json-bug
Fix typo in parsing/writing JSON error in StandardCompiler
2018-09-24 15:01:38 +02:00
Alex Beregszaszi
abfd283af7 Fix typo in parsing/writing JSON error in StandardCompiler 2018-09-21 22:43:57 +01:00
Alex Beregszaszi
a515173900 Add proper error reporting when invalid settings are provided in StandardJSON 2018-09-21 14:53:24 +01:00
liangdzou
24e5dcc352 fix code format problems 2018-09-19 00:18:49 +08:00
liangdzou
808c3f3df5 fix some format typos 2018-09-17 22:13:21 +08:00
liangdzou
558a4ac49c give more information (at most 35 chars before and after) for too long lines
add tests for giving more informations for too long lines

add edge tests for giving more informations for too long lines

avoid printing out tailing white space

update test case after avoiding printing out trailing whitespace

update test case for removing the pre-release warning from reference

refactor the code to if-else flavor

rename folder to cmdlineErrorReports under test

rename folder to cmdlineErrorReports under test

ignore whitespace for reference files

avoiding to modify the file stderr_path by call sed without -i option

print ' ...' instead of ' ... ' at the end of a line
2018-09-13 09:55:54 +08:00
chriseth
8f27fb1f4a
Merge pull request #4542 from aarlt/constructor_natspec
Fix: natspec annotations on constructors
2018-08-14 19:13:25 +02:00
Daniel Kirchner
954d7433bd Disallow remappings with empty prefix. 2018-08-10 19:26:48 +02:00
Alexander Arlt
f76d4d5919 Fix: natspec annotations on constructors
- natspec annotations on constructore where ignored.
2018-08-08 21:53:35 +02:00
Alex Beregszaszi
9062704054
Merge pull request #4753 from mattaereal/boost-to-string-patch
Replace boost:lexical_cast<std::string> for std::to_string.
2018-08-08 16:07:25 +01:00
Matías Aereal Aeón
e902ce1aa0 Removing std:: from std::to_string and include for boost/lexical_cast 2018-08-08 11:26:30 -03:00
Alex Beregszaszi
5b4ad10b3c Mark StandardCompiler::compile as noexcept
It has a generic catch statement and shouldn't leak out exceptions.
2018-08-08 13:22:40 +01:00
Matías Aereal Aeón
7dae58cbcc Replace boost:lexical_cast<std::string> for std::to_string. 2018-08-08 03:55:43 -03:00
chriseth
901550e473
Merge pull request #4692 from ethereum/devcore-path
Move absolutePath/sanitizePath helpers from CompilerStack to libdevcore
2018-08-07 16:15:49 +02:00
chriseth
71e26f6adb Remove clone feature. 2018-08-07 11:10:50 +01:00
Alex Beregszaszi
3de0b8b7f0 Move absolutePath/sanitizePath helpers from CompilerStack to libdevcore 2018-08-06 12:54:22 +01:00
Alex Beregszaszi
f74cff622d Properly explain all the analsys steps in CompilerStack 2018-07-31 00:39:18 +01:00
Alex Beregszaszi
a5a61a0b77 More consistent catch statements
Also take const& in all cases.
2018-07-25 01:18:09 +01:00
Matt Little
4efe3544f7 Fix NatSpec json output for "@notice" and "@dev" tags on contract definitions. 2018-07-12 14:39:13 +02:00
chriseth
238dbe1b99
Merge pull request #4388 from ethereum/noPackedLiterals
Disallow packed encoding of literals.
2018-07-11 14:28:20 +02:00
Cryptomental
140dbfdbd8 Code, Changelog, ReleaseChecklist: Fix typos.
Refs: #4442
2018-07-11 00:26:23 +02:00
chriseth
f7a9c4203e Disallow packed encoding of literals. 2018-07-03 01:02:00 +02:00
Alex Beregszaszi
5aa8c7ed1a Document the internal API of CompilerStack 2018-06-25 23:51:40 +02:00
Alex Beregszaszi
3fc7da11db Pull out createCBORMetadata helper 2018-06-25 22:17:33 +02:00
Alex Beregszaszi
a392e0f046 Properly catch optimizer/assembly exception in CompilerStack 2018-06-20 23:19:06 +02:00
Alex Beregszaszi
0a632011be CompilerStack absolutePath/sanitizePath can be made static 2018-06-20 17:04:22 +02:00
Alex Beregszaszi
dcee8e11ad Reorder some of the flow in CompilerStack::compileContract for readability 2018-06-20 17:01:17 +02:00
Alex Beregszaszi
782bc41dbd Rename JULIA/IULIA to Yul in assembly interface 2018-06-14 09:31:28 +01:00
Julius Huelsmann
9e26f5fa0a Do not catch exceptions by value in StandardCompiler 2018-05-17 14:44:01 +02:00
Daniel Kirchner
16e966dea0 Add control flow analyzer and test for uninitialized storage returns. 2018-05-14 20:23:40 +02:00
Daniel Kirchner
995623f0fa Add control flow graph. 2018-05-14 20:23:40 +02:00
Alex Beregszaszi
059e232e69 Support shifts in gas estimator 2018-04-30 21:22:59 +01:00
chriseth
928ce08845 Correctly ignore costs of fallback for other functions. 2018-04-11 19:42:34 +01:00
Alex Beregszaszi
43d2954de8 Do not abort excessive warnings, just ignore them. 2018-04-06 14:44:03 +02:00
Alex Beregszaszi
0812d1189a Ignore warnings when limited errors to 256 2018-04-06 13:52:19 +02:00
Alex Beregszaszi
3730f68d4b reindent 2018-04-06 13:52:19 +02:00
Alex Beregszaszi
e8be0e61b3 Catch FatalError in CompilerStack::analysis to cover all the analysis tests 2018-04-06 13:52:19 +02:00
Alex Beregszaszi
d5f40c141b Limit the number of errors output in a single run to 256 2018-04-06 13:52:19 +02:00
Alex Beregszaszi
a59d6d2e53 Support constantinople in evm-version 2018-03-12 18:13:19 +01:00
chriseth
fd1662d1c4 Warn about using loose inline assembly features as experimental 0.5.0 feature. 2018-03-06 17:45:34 +01:00
chriseth
9d67e9b4fc
Merge pull request #3640 from AnthonyBroadCrawford/spanning-multiline-message-fix
moved spanning multi lines message to appear on some lane vs new line…
2018-03-05 22:51:53 +01:00
Anthony Broad-Crawford
174c46d5af Improved messaging when an error spans multiple lines and updated change log file. 2018-03-05 14:14:14 -06:00
chriseth
6ec4517929 Use EVM version in gas meter and optimizer. 2018-03-05 11:36:33 +01:00
Alex Beregszaszi
5a54cd5c70 Only warn for shift instructions if not using constantinople 2018-03-01 17:19:35 +01:00
chriseth
4ce0e7775d Add constantinople. 2018-03-01 17:19:35 +01:00
chriseth
982476f99d Add TangerineWhistle. 2018-03-01 17:19:35 +01:00
chriseth
dc317a44e0 Provide EVM version to assembly analysis. 2018-03-01 17:19:35 +01:00
chriseth
a53d6b499d Use EVM version in type checker. 2018-03-01 17:19:35 +01:00
chriseth
f75a411325 Provide target EVM version in CompilerContext. 2018-03-01 17:19:35 +01:00
chriseth
85785710e6 Store EVM version in settings. 2018-03-01 17:19:34 +01:00
chriseth
5ab4a1ae78 Add ability to set the target EVM version. 2018-03-01 17:19:34 +01:00
Alex Beregszaszi
b6dfd9ef54 Ensure that library addresses supplied are of correct length and hex prefixed in JSONIO 2018-03-01 12:03:56 +01:00
Alex Beregszaszi
7897301b71 Properly validate invalid hex characters in JSONIO libraries 2018-02-28 10:44:48 +01:00
Alex Beregszaszi
83fec0232d Add more comprehensive tests and checks for libraries in JSONIO 2018-02-28 10:36:07 +01:00
chriseth
3076a434ba
Merge pull request #3554 from ethereum/reuseScannerOrNot
Expect end of string at end of top-level block for assembly parser.
2018-02-21 00:41:57 +01:00
chriseth
e2bf5de8a2 Expect end of string at end of top-level block for assembly parser. 2018-02-21 00:41:39 +01:00
Alexander Arlt
0f29ac4e56 Add new JSON API for better abstraction and for supporting strict JSON parsing 2018-02-20 21:58:26 +01:00
chriseth
abc23ac608
Merge pull request #3135 from federicobond/formatter-instance
Convert static SourceReferenceFormatter functions to member ones
2018-02-19 17:34:07 +01:00
chriseth
305d5f70c2 Fix scannerFromSourceName use-after-free. 2018-02-19 15:13:49 +01:00
Federico Bond
d7532f7b9c Convert static SourceReferenceFormatter functions to member ones 2018-02-19 15:04:22 +01:00
Alexander Arlt
1d4547ab03 Minor improvement: check sources
- returns error, if "sources" is an array, an empty object or not defined
- Added new test-cases in test/libsolidity/StandardCompiler.cpp
2018-02-16 18:44:46 +01:00
chriseth
6807010dc7 Prevent libraries from being called. 2018-01-19 16:27:44 +01:00
Alex Beregszaszi
c269a12c5e Support strict assembly mode in AssemblyStack 2018-01-06 01:23:38 +00:00
chriseth
124190336b Split inline assembly into loose and strict flavours. 2018-01-06 01:23:38 +00:00
Alex Beregszaszi
9e7e312fdf Properly support library file names containing a colon (such as URLs). 2018-01-05 13:24:07 +00:00
Alex Beregszaszi
ff9fdfac57 Properly handle colons in file names within jsonio 2018-01-03 15:44:03 +00:00
Alex Beregszaszi
add4cde68c Populate the sourceLocation field properly in standard JSON on errors 2017-12-18 12:17:51 +00:00
chriseth
2d171c25e5 Limit number of secondary source locations. 2017-12-12 10:27:28 +01:00
Alex Beregszaszi
3576ccf5b3 Simplify target selection code 2017-11-29 20:10:18 +00:00
Alex Beregszaszi
b2023196a2 Rename target selection to use the word artifact 2017-11-29 20:10:18 +00:00
Alex Beregszaszi
bbcec95bac Add workaround for bytecode/deployedBytecode selection 2017-11-29 20:10:18 +00:00
Alex Beregszaszi
8da245cca3 Limit output according to the selected targets in StandardCompiler 2017-11-29 20:10:18 +00:00
Alex Beregszaszi
d37e6ba1c7 Add target selection helpers to StandardCompiler 2017-11-29 20:10:04 +00:00
chriseth
dc6b1f02bc Merge pull request #3092 from rivenhk/b_2885
added formatting when source snippets is too long
2017-10-23 10:54:52 +02:00
rivenhk
950f5ae7d7 updated formatting when source snippets is too long 2017-10-19 20:20:07 +08:00
Alex Beregszaszi
8d3cfa8cff Simplify contract lookup in CompileStack 2017-10-18 23:54:32 +01:00
Alex Beregszaszi
2ce35b77be Implement CompilerStack.lastContractName() 2017-10-18 23:54:32 +01:00
Alex Beregszaszi
039cc25b1f Always require a contract/sourceName in CompilerStack 2017-10-18 23:32:33 +01:00
rivenhk
d53c44a066 updating formatting when source snippets is too long 2017-10-18 22:03:33 +08:00
rivenhk
b93a5980ed added formatting when source snippets is too long 2017-10-18 01:59:15 +08:00
Alex Beregszaszi
a0394a1bfa Restrict contracts compiled via outputSelection (but not the individual output details) 2017-10-04 20:30:14 +01:00
Alex Beregszaszi
f96e932243 Provide optional list of contract names to CompilerStack.compile 2017-10-04 20:30:14 +01:00
Alex Beregszaszi
a9847c9551 Use solAssert and not assert 2017-10-04 13:05:55 +01:00
Alex Beregszaszi
aad829948a Ensure parameter names match between headers and implementation 2017-09-20 01:23:21 +01:00
chriseth
c5063d3155 Use "tuple" for struct types in ABI JSON.
Only use tuple as a type in the ABI (and remove all "anonymous struct" references too)
2017-09-16 12:31:12 +01:00
chriseth
6385641f6e Fix tests. 2017-09-16 12:31:12 +01:00
chriseth
7e1b9c1652 Structure type json using "components". 2017-09-16 12:12:44 +01:00
chriseth
36a90289e6 Fix interface type conversion internal to structs. 2017-09-16 12:12:43 +01:00
chriseth
080be885f8 Function signatures containing structs. 2017-09-16 12:12:43 +01:00
chriseth
2e72bd163a Allow structs as part of function interfaces. 2017-09-16 12:12:43 +01:00
chriseth
3f3bcc4f8a Merge pull request #2848 from ethereum/checkViewPure
Enforce view and pure.
2017-09-13 18:29:13 +02:00
Alex Beregszaszi
bbfb16cf5c Introduce assemblyString 2017-09-11 15:53:20 +01:00
Alex Beregszaszi
50570c6c79 Do not return the stream in asssemblyStream 2017-09-11 15:48:58 +01:00
Alex Beregszaszi
a535a8b06e Split out the JSON functionality from assembly.stream() 2017-09-11 15:48:52 +01:00
chriseth
5470da4d9a View-pure checker. 2017-09-06 13:50:49 +02:00
Alex Beregszaszi
ceba40c410 Reorder some methods in CompilerStack for readability 2017-08-28 15:14:19 +01:00
chriseth
5bd6254449 Merge pull request #2825 from ethereum/contract-unused-natspec
Removed unused natspec members of ContractDefinition
2017-08-28 13:06:30 +02:00
Alex Beregszaszi
2b3a49f702 Merge pull request #2821 from ethereum/errorreporter-copy
Add copy constructor to ErrorReporter (since it has assignment operator)
2017-08-25 20:40:27 +01:00
Alex Beregszaszi
8e5f9c5981 Removed unused natspec members of ContractDefinition 2017-08-25 20:29:43 +01:00
Alex Beregszaszi
774363eb74 Add copy constructor to ErrorReporter (since it has assignment operator) 2017-08-25 16:03:24 +01:00
Alex Beregszaszi
e6f55fb95e Do not create a new TypeChecker instance for every contract 2017-08-25 15:43:26 +01:00
Alex Beregszaszi
670df8e874 Attach natspec before type checking 2017-08-25 15:39:20 +01:00
Alex Beregszaszi
d60d4b3031 Remove duplicate work from CompilerStack.analyze() 2017-08-25 15:37:10 +01:00
Alex Beregszaszi
e03dfd8476 Remove unused statements from the Natspec headers 2017-08-25 13:15:08 +01:00
Alex Beregszaszi
20e3b98d1f Reorder ABI for readability 2017-08-25 10:39:53 +01:00