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
Alex Beregszaszi
deeac7e2e0
Rename statemutability to stateMutability in ABI/AST
2017-08-24 15:23:00 +01:00
Alex Beregszaszi
5668377c72
Introduce pure specifier on functions
2017-08-24 13:46:18 +01:00
chriseth
9ac2ac14c1
Rename read file callback.
2017-08-23 17:37:35 +02:00