Commit Graph

191 Commits

Author SHA1 Message Date
Matthias Seitz d1f46f4c2c
feat(solc): more artifact trait functions (#1057)
* style: split artifacts mod and create contract and bytecode mods

* chore: rustfmt

* feat(solc): more artifact trait functions

* feat: add missing impl
2022-03-17 12:48:55 -07:00
Matthias Seitz 65b1751cf8
style: split artifacts mod and create contract and bytecode mods (#1052)
* style: split artifacts mod and create contract and bytecode mods

* chore: rustfmt
2022-03-17 07:51:43 -07:00
Matthias Seitz 01d4fceaee
feat(solc): support for solc io json output (#1043)
* feat(solc): support for solc io json output

* chore: wording
2022-03-17 04:37:00 -07:00
Matthias Seitz b579dc183a
feat(solc): add viaIR option (#1049) 2022-03-17 04:24:50 -07:00
Matthias Seitz 1e1aba19b1
fix(solc): only modify files that are required to compile the project (#1050) 2022-03-17 03:48:01 -07:00
Matthias Seitz 5314c4e618
fix(solc): use lowercase when comparing paths (#1041)
* fix(solc): use lowercase when comparing paths

* trace keys

* test: add lowercase contract test
2022-03-17 01:27:03 -07:00
Matthias Seitz a2960a847d
chore(solc): new 0.8.13 release (#1045) 2022-03-17 01:26:44 -07:00
Matthias Seitz 2d75f9f1e7
feat(solc): support customized output selection pruning (#1039)
* feat(solc): support customized output selection pruning

* chore(clippy): make clippy happy
2022-03-16 07:36:35 -07:00
Matthias Seitz ff29e96380
feat(solc): optimize output selection in cache mode (#1029)
* feat(solc): add mock project generator

* feat: mock project

* refactor: rename to mock

* feat(solc): mock project support

* refactor: move output selection to new type

* refactor: revert filter implementation

* feat: filter sources

* feat: support filtering

* refactor: update function signatures

* feat: optimize output

* chore: export helper macros

* fix(deps): add required features

* style: allow unused

* feat: also generate artifactless files

* feat: add create function

* chore(clippy): make clippy happy

* feat: add helper function

* test: add state machine test

* test: add more mock tests
2022-03-15 08:58:33 -07:00
Matthias Seitz 49ed78d685
feat(solc): add mock project generator (#1011)
* feat(solc): add mock project generator

* feat: mock project

* refactor: rename to mock

* feat(solc): mock project support

* chore: export helper macros

* fix(deps): add required features

* style: allow unused
2022-03-15 05:27:49 -07:00
Matthias Seitz fac944be00
fix: don't evict cache entries with no artifacts (#1035) 2022-03-15 03:32:03 -07:00
Matthias Seitz 24236997a9
refactor(solc): bump svm-rs and use returned install path (#1034)
* chore(deps): bump svm-rs

* refactor: use solc install path directly

* style: use if elese over option
2022-03-15 02:16:22 -07:00
Matthias Seitz f6d123241e
feat: add solc install error report (#1027) 2022-03-14 04:47:11 -07:00
Matthias Seitz 26de793698
chore(solc): provide remappings on unresolved import message (#1026) 2022-03-14 13:29:00 +02:00
Matthias Seitz 6b0a1f7911
fix(solc): skip artifacts check for files without artifacts (#1018) 2022-03-14 00:36:26 +02:00
Matthias Seitz e5dbeb6b28
revert: use simple change filter again (#1008)
* chore: rollback dirty detection

* docs: caching docs
2022-03-11 08:43:48 -08:00
Matthias Seitz 1b1cde0ee3
fix(solc): use correct types (#1004) 2022-03-10 10:46:47 -08:00
AlexK e1d66b8cd3
feat(solc): yul compilation (#994)
* added yul compilation

* fix doctest

* fixes

* changelog

* cleanup

* fmt

* test update

* lint

* ci fix

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-03-10 10:42:02 -08:00
Matthias Seitz b7f278faf4
feat(solc): remapping helper functions (#1003) 2022-03-10 06:40:58 -08:00
Matthias Seitz f55f02476c
fix(solc): respect offline mode (#1002) 2022-03-10 06:40:35 -08:00
Matthias Seitz 1ac0b49ac3
feat(solc): add scoped reporter (#1000)
* feat(solc): add scoped reporter

* fix: race in tests
2022-03-09 12:00:16 -08:00
Matthias Seitz 0c42c23746
fix(solc): fix cache and allowed paths bug (#998)
* fix: don't emit on error

* fix: allowed-paths condition

* fix(solc): cache and allowed paths bug
2022-03-09 10:52:40 -08:00
Matthias Seitz e1ec4b5ecd
fix(solc): remove unnecessary indent (#999)
* fix(solc): remove unnecessary indent

* Update ethers-solc/src/resolver/tree.rs

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-03-09 09:44:02 -08:00
Matthias Seitz fab30887a2
test: add unique flatten test (#995) 2022-03-08 06:46:04 -08:00
Georgios Konstantopoulos de275db56a fix: bump solang and adjust breaking change
fixes https://github.com/gakonst/ethers-rs/issues/985
2022-03-03 16:47:09 -08:00
Georgios Konstantopoulos 556367ecbd chore(solc): make on_solc_success a no-op to avoid duplicate logs 2022-03-01 14:24:08 +02:00
Matthias Seitz 601cb1b75e
test(solc): add capture test for curly bracket imports (#956)
* test(solc): add capture test for curly bracket imports

* chore: rustfmt
2022-02-24 18:43:35 +02:00
Matthias Seitz 184cffaca3
fix(abigen/solc): make abigen work with ethers-solc and abiencoderv2 (#952)
* feat(solc): add lossless abi

* fix(abigen): make abigen work with ethers-solc and abiencoderv2

* chore: update CHANGELOG
2022-02-23 12:46:52 +02:00
Matthias Seitz 60515d9404
fix(solc): consistent serde for linked and unlinked bytecode (#948) 2022-02-22 16:23:23 +02:00
Roman Krasiuk 1f822e47e6
fix(solc): flatten import loc (#946)
* protograva test-data

* revert import parsing change

* compare flatten results against full strings
2022-02-22 16:22:24 +02:00
Matthias Seitz 3effda2804
feat(solc): add helper functions to compile standalone files (#931) 2022-02-19 15:56:34 +02:00
Matthias Seitz 7d2d96d761
feat(solc): add tree printer implementation (#933)
* feat(solc): add tree printer implementation

* test: feature gate windows

* typos
2022-02-19 15:55:21 +02:00
Matthias Seitz 5b2c1fa6f8
fix(solc): mimic hardhat import resolver when in node_modules (#928)
* fix: treat node_modules differently

* test: update hardhat test

* chore(clippy): make clippy happy
2022-02-18 19:54:23 +02:00
Matthias Seitz f2796cc001
test: add curly bracket import test (#929) 2022-02-18 19:24:41 +02:00
Matthias Seitz 28df48b530
fix(solc): off by one error finding version intersection (#930)
* fix: off by one error while finding intersection

* test: enable test
2022-02-18 19:24:02 +02:00
Matthew Wiriyathananon-Smith d8e5e536cc
Artifact ids (#882)
* Added ArtifactId

* Added ArtifactId impl and updated into_artifacts to return id

* Formatting

* Fixed warning

* Added versioned slug method to ArtifactId

* Added Ord/Eq derives to ArtifactId

* Fixed broken tests and doc tests

* Added failing test for versioned link references

* chore: ignore linkrefs test - to be fixed in followup

* test(solc): remove artifact json

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-02-18 17:48:56 +02:00
Matthias Seitz 19d2fd1155
feat(solc): add configurable Artifact type (#907)
* refactor: make artifacts a sub mod

* feat: more options for output selection

* feat(solc): make ArtifactOutput struct functions

* fix: migrate all features

* feat: add configurable artifacts type

* refactor: move configurable to separate file

* feat: impl ArtifactOutput

* refactor: write extras

* simplify write extra

* feat: more helper functions

* feat: implement delegate

* fix: failing doc test

* fix: rustfmt

* chore: update CHANGELOG

* feat: add helper functions

* refactor: remove flatten

* feat: add link function

* feat: replace default type

* fix: doc tests

* feat: more utility functions

* fix: failing tests

* chore: rename types

* chore: bump ethers-solc 0.3.0

* fix: set metadata file extension properly
2022-02-17 17:31:35 +02:00
Georgios Konstantopoulos f97a8ca541
fix(abigen): do not panic when run on non-cargo projects (#918)
* fix(abigen): do not panic when run on non-cargo projects

* chore: bump solidity test to 0.8.12
2022-02-16 17:46:25 +02:00
Mark Tyneway faba6e014d
feat: add getter to `ProjectCompileOutput` (#908)
* feat: add getter to `ProjectCompileOutput`

Add a function `compiled_contracts_by_compiler_version`
to the `ProjectCompileOutput` that returns a `BTreeMap`
that maps the compiler version to a vector of the contract
names and contract structs.

* changelog: update

* chore(solc): remove &mut

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-02-13 21:47:00 +02:00
Matthias Seitz 27a4454ac0
feat(solc): report on unresolved imports (#905)
* chore: fix unused import warning

* feat: add additional report message
2022-02-13 01:05:43 +02:00
Matthias Seitz c8d8b66d0a
feat(solc): use svm blocking feature (#904)
* feat(solc): use svm blocking feature

* chore: bump ethers

* fix: enable svm blocking feature

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-02-12 18:40:09 +02:00
Matthias Seitz cdaac16f0a
feat(solc): more options for output selection (#898)
* refactor: make artifacts a sub mod

* feat: more options for output selection

* chore: use tostring instead
2022-02-11 17:46:44 +02:00
Matthias Seitz 331caf9418
fix(solc): resolver and remapping auto detection bugs (#893)
* fix(solc): support single quote imports

* feat: better error message

* fix: nfmt

* feat: handle additional remappings edge case

* fix(solc): treat nested remappings differently depending on src and contracts

* fix test

* chore(clippy): make clippy happy
2022-02-10 19:56:25 +02:00
Matthias Seitz 8aeeaa83b0
feat(solc): better metadata support (#894) 2022-02-10 19:53:26 +02:00
Matthias Seitz cc5c67ed0a
chore: fix all warnings (#890) 2022-02-10 08:54:39 +02:00
Matthias Seitz 3fa6653471
fix(solc): support remapping autodetection edge case (#888)
* fix(solc): support remapping autodetection edge case

* Update ethers-solc/src/remappings.rs

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-02-09 16:39:38 +02:00
Matthias Seitz 36c3adeec9
feat(solc): add Reporter type (#883)
* feat(solc): add Reporter type

* chore(clippy): make clippy happy
2022-02-09 01:14:57 +02:00
Matthias Seitz 67271eba68
feat: implement Artifact for serde_json (#885) 2022-02-09 00:48:53 +02:00
Matthias Seitz a0568fe44e
fix(solc): use nodesiter when printing tree (#878) 2022-02-07 18:27:23 +02:00
Matthias Seitz ede6570567
chore: rm no longer valid todo (#870) 2022-02-05 16:30:18 +02:00
Matthias Seitz b26b505651
feat(solc): add optimizer details (#868) 2022-02-05 16:13:03 +02:00
Matthias Seitz 7463e2da11
feat(solc): compiler pipeline improvements (#866)
* feat(solc): try to unify solc versions

* chore: some tracing

* feat: add compile exact
2022-02-05 16:07:37 +02:00
Matthias Seitz b295d73c4a
refactor(solc): rewrite compiler passes and cache change detection (#802)
* chore: clippy

* refactor: rewrite compiler passes and cache

* feat: more work on compile pipeline

* feat: add cache constructor

* add artifact filtering

* fine tune api

* feat: prepare version integration

* docs: more docs

* feat: add cacheentry2

* replace cacheentry types

* integrate new api

* docs: more docs

* feat: implement new output handler

* feat: integrate cached files in new compile pipeline

* refactor: more cache refactor

* docs: more docs

* feat: add source name mapping

* feat: implement new parallel solc

* refactor: do a little cleanup

* refactor: even more cleanup

* even more cleanup

* chore: make it compile

* chore: make it compile with all features

* chore: clippy fix

* feat: integrate new compiler pipeline

* docs: more docs

* refactor: move stuff around

* refactor: start deprecating output type

* chore: make it compile again

* chore(deps): bump solc version 0.2.0

* feat: unify output types

* cargo fix

* refactor: add contracts wrapper

* chore: replace ProjectCompileOutput

* docs: add more docs

* feat: add offline mode

* feat: more artifact helpers

* chore: cleanup cache

* chore: streamline types

* fix: better artifacts mapping

* chore: some cleanup

* chore: change artifact

* chore: add configure solc fn

* feat: add artifact reading

* feat: implement retain and extend

* feat: add cache extending

* feat: write to disk

* chore: make clippy happy

* feat: implement path mapping

* chore: nits

* feat: introduce states

* feat: add compiler state machine

* chore: move cache types to cache mod

* chore: make clippy happy

* feat: add debug derives

* fix: use resolved import source unit names

* fix: failing tests

* test: test multiple libs properly

* chore: make clippy happy

* chore: update CHANGELOG

* fix: doc tests

* fix: set offline mode correctly

* chore: make it compile again

* Update ethers-solc/src/artifacts.rs

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>

* feat: find remappings by default

* typos

* add eth_syncing RPC (#848)

* add eth_syncing RPC

* Changelo updated

* small comments

* Intermediate SyncingStatus

* fix(core): adjust Ganache for new cli output (#851)

* fix: review comments

* fix: cache relative path bug

* chore: add cache example

* chore: use absolute paths

* fix: remove overwritten files from cache

* fix: rustfmt

* chore: more helper functions

* chore: export AggregatedOutput

* feat: implement helper functions

* feat: even more helpers

* fix: failing doc tests

* refactor: remove source name map tracking

* fix: determine artifacts in ephemeral mode

* refactor: allowed paths should not fail

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
Co-authored-by: rakita <rakita@users.noreply.github.com>
Co-authored-by: wolflo <33909953+wolflo@users.noreply.github.com>
2022-02-04 18:20:24 +02:00
joshieDo 0526e920eb
add dese default_for_null (#860) 2022-02-04 10:09:53 +02:00
Matthias Seitz d08f3ed2d4
fix(solc): bump solang (#861) 2022-02-03 22:35:46 +02:00
Matthias Seitz 5fefb2b721
fix(solc): can parse secondary source locations (#849) 2022-01-31 23:54:49 +02:00
joshieDo dd915c99f6
write outputs to file, if selected (#847) 2022-01-31 18:19:57 +02:00
Roman Krasiuk a48496000a
fix(solc): flatten replacement target location (#846)
* adjust the end location

* upd changelog
2022-01-31 10:08:04 +02:00
Georgios Konstantopoulos 0c949f65bb chore: lints 2022-01-29 21:19:49 +02:00
odyslam.eth 8b9a18ce01
chore: add info messages to solc install/compile (#838)
* chore: add info messages to solc install/compile

* chore: update changelog

* fix: remove added ';'

* Update ethers-solc/src/compile.rs

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-01-29 10:32:38 +02:00
brockelmore 24c39bd32a
write `CompactContractBytecode` instead of `CompactContract` (#833)
* write `CompactContractBytecode` instead of `CompactContract`

* chore: fix doctest

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-01-28 09:23:28 +02:00
ChainsightAnalytics ec2b51539d
fix(solc): use already instantiated tokio runtime if exists (#811)
Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-01-28 09:17:54 +02:00
Matthias Seitz 5da2eb1eb9
fix(solc): duplicate contracts segments (#832)
* chore: simplify touch

* forge install: ds-test

* fix: fix duplicate contracts segments

* fix: typos
2022-01-27 12:04:14 +02:00
Matthias Seitz f9fadf06c4
chore(solc): also rm cache dir if empty (#822) 2022-01-21 03:51:41 +02:00
Matthias Seitz 6d7875a44c
chore(solc): add more convenience functions (#810)
* chore(solc): simplify solcconfig

* chore: more helper functions

* chore: copy all

* fix: add trailing slash

* chore: make clippy happy
2022-01-20 21:41:19 +02:00
Georgios Konstantopoulos 141e2f1807 Revert "Remove entire cache folder, not just contents (#820)"
This reverts commit 2945104d39.
2022-01-20 15:49:59 +02:00
Bjerg 2945104d39
Remove entire cache folder, not just contents (#820) 2022-01-20 11:01:35 +02:00
Roman Krasiuk f9b0360d90
fix(solc): flatten duplicates (#813)
* fix solc flatten duplicates

* upd changelog

* sample eof newlines

* fix test name

* linter
2022-01-19 18:11:37 +02:00
Matthias Seitz eb555c28cc
chore(solc): add ord derive (#807) 2022-01-18 14:23:10 +02:00
Matthias Seitz e0ee033283
fix(solc): take installer lock before installing (#801) 2022-01-17 15:51:15 +02:00
Roman Krasiuk afcba9567f
feat(solc): flatten (#774)
* solc flatten implementation

* upd changelog

* upd docs

* revamp flattening

* clippy

* use resolve_import method

* extract recursive flatenning into a separate func

* change content iteration for flatten

* remove redundant result

* clean up solimport

* add comment to project.flatten

* add support for ver pragma loc

* address pr comments

* uncomment the test

* improve test cov

* add handling of sdpx license identifiers

* change arg name

* match license only at the beginning of the file

* add comments

* lint

* morrre comments
2022-01-17 14:27:40 +02:00
Matthias Seitz 579311bfdd
fix(solc): traverse nodes iteratively (#800) 2022-01-17 14:05:52 +02:00
Matthias Seitz d2318d285d
chore(deps): bump solang (#796)
* chore(deps): bump solang

* fix: breaking test
2022-01-15 17:53:46 +02:00
Matthias Seitz b619a5522f
feat(solc): relative remappings (#786) 2022-01-13 02:59:53 +02:00
Matthias Seitz 4d2cd83698
fix(solc): invalid cached artifacts (#783)
* add some docs

* ignore malformed cache file

* more artifacts fixes

* fix(solc): remove quotation marks from tests

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-01-11 12:02:57 +02:00
Matthias Seitz e0b6f65359
refactor(solc): more temp project features (#778)
* chore: replace tempdir with tempfile crate

* update tempproject constructors

* make clippy happy

* add default impl
2022-01-10 21:43:34 +02:00
brockelmore 1287614e53
Implement `is_empty` for `AllowedLibPaths` (#777)
* pub svm_compile

* empty allowed paths
2022-01-09 00:20:28 +02:00
Georgios Konstantopoulos 270fe46d37 feat(solc): expose svm_compile 2022-01-08 22:51:18 +02:00
Bjerg 48bd3f13e2
Ignore SPDX and contract size for tests (#775)
* Filter for unignored warnings

* Pass compiler output to diagnostics

* Ignore SPDX and contract size warnings for tests

* Fix lint

* Skip lookups if error is not a warning
2022-01-08 22:26:23 +02:00
Eugene ba99bc1bca
make it work with latest solang (#776)
* make it work with latest solang

* rustfmt

* rm uneeded import
2022-01-08 22:16:54 +02:00
Bjerg 86044bc0c3
Add `ProjectCompileOutput::has_compiler_warnings` (#773)
* Add `ProjectCompileOutput::has_compiler_warnings`

* Nits
2022-01-07 17:29:19 +02:00
Bjerg 21a4adea3e
Check for warnings after compilation (#772)
* Check for warnings after compilation

* Always catch errors first
2022-01-07 16:53:36 +02:00
Matthias Seitz d54d381b74
feat(solc): add more contract utility types and functions (#765)
* feat(solc): add more contract utility functions

* Update ethers-solc/src/artifacts.rs

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>

* docs: deindent docs

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-01-07 14:10:33 +02:00
Matthias Seitz eeb2a84df4
fix(solc): allow cyclic imports (#766) 2022-01-07 02:12:33 +02:00
Matthias Seitz 88b342287a
feat(solc): add source map parser (#658)
* feat(solc): add source map parser

* merge branch master

* make some types private

* chore: make id an option

* fix: support negative field values

* check parsed element
2022-01-06 13:54:46 +02:00
Matthias Seitz fc9f66c916
feat(solc): add dependency graph implementation (#750)
* docs: document public functions

* add mod

* feat(solc): add dependency graph

* detect version

* add into sources

* fix: canonicalize temp paths

* test: add graph tests

* chore(clippy): make clippy happy

* more wasm compat

* chore: update changelog

* wasm compat

* unused

* fix get source fill function

* Update ethers-solc/src/resolver.rs

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>

* perf: use solang_parser to trim down deps

* resolve graph in compile

* refactor add node function

* docs: clear up comment

* docs: typos

* fix: make all versions unique based on their major minor path version

* prepare test

* docs: add more resolve docs

* test: add lib change detection test

* test: update tests

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-01-05 23:46:57 +02:00
Matthias Seitz 3da5a419fe
fix(solc): add timeout and error detection for releases lookup (#759)
* fix(solc): add timeout and error detection for releases lookup

* bump tokio cargo update

* fix: move timeout in async block
2022-01-05 20:42:07 +02:00
Matthias Seitz 2ca8f99e87
feat(solc): add path auto detection (#761) 2022-01-05 19:33:56 +02:00
Matthias Seitz bd03bda878
fix(solc): methods is object (#734) 2021-12-25 18:20:24 +02:00
Matthias Seitz 47e188793b
chore(solc): more verbose traces (#738) 2021-12-25 18:18:57 +02:00
Matthias Seitz 918063db9e
refactor(solc): remappings detection rewrite (#732)
* refactor(solc): remappings detection rewrite

* chore: follow symlinks
2021-12-25 06:52:26 +02:00
Matthias Seitz 4b4ebd74ba
fix: make evm bytecode optional (#735) 2021-12-25 06:45:53 +02:00
joshieDo ade8cd9553
add fn settings on CompilerInput (#729) 2021-12-23 17:03:37 +02:00
Matthias Seitz 8db70cead9
fix(solc): handle more remapping edge cases (#719)
* feat: ancestor finding

* feat: better remapping scanning

* fix(solc): handle more remapping edge cases

* fix: handle deeply nested libs

* chore: cleanup
2021-12-20 22:16:59 +02:00
Matthias Seitz debd1dd153
chore(solc): bump latest solc version (#720) 2021-12-20 22:15:56 +02:00
Matthias Seitz 0d2fc53541
fix(solc): prefere dapptools style remappings (#713) 2021-12-19 22:34:06 +02:00
Georgios Konstantopoulos 8d95f3bf33
fix: use lib for parsing paths correctly in windows (#712) 2021-12-19 22:03:16 +02:00
Matthias Seitz 12334443eb
chore(solc): use svm global_version if it exists and no SOLC_PATH is set (#709)
* chore(solc): use svm global_version if it exists and no SOLC_PATH is set

* rustfmt

* fix: resolve global svm version
2021-12-19 16:30:54 +02:00
Matthias Seitz e0ac32a68f
chore(solc): add display impl for PathsConfig (#708) 2021-12-19 14:35:11 +02:00
Matthias Seitz 8f8a813181
chore: use new remapping detection (#707)
* chore: use newe remapping detection

* chore: update changelog

* Update ethers-solc/src/remappings.rs

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2021-12-19 14:30:31 +02:00