Commit Graph

287 Commits

Author SHA1 Message Date
Matthias Seitz 38b984c353
fix(solc): extend sparse mode to linked references (#1107)
* refactor: move sol parsing to separate mod

* refactor: make parse a struct function

* feat: add inline function

* chore: rename sparse filter

* feat: move data to edges type

* refactor: supply graph in compile function

* feat: resolve link references

* test: add sparse mode test
2022-04-04 15:50:10 -07:00
dependabot[bot] 78c87b1126
chore(deps): bump pretty_assertions from 1.2.0 to 1.2.1 (#1105)
Bumps [pretty_assertions](https://github.com/colin-kiegel/rust-pretty-assertions) from 1.2.0 to 1.2.1.
- [Release notes](https://github.com/colin-kiegel/rust-pretty-assertions/releases)
- [Changelog](https://github.com/colin-kiegel/rust-pretty-assertions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/colin-kiegel/rust-pretty-assertions/compare/v1.2.0...v1.2.1)

---
updated-dependencies:
- dependency-name: pretty_assertions
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-04 06:57:36 -07:00
Matthias Seitz 06df7f41cc
feat(solc): add bytecode hash variants (#1104)
* feat(solc): add bytecode hash variants

* make None the Bytecodehash default
2022-04-04 06:57:20 -07:00
Matthias Seitz 5eb5baea68
test: add multiline flatten test (#1101) 2022-04-03 08:05:31 -07:00
Matthias Seitz 5bbc6c34ab
chore(deps): bump solang-parser 0.1.11 (#1103) 2022-04-03 08:05:24 -07:00
Connor Mendenhall 18dda9aa83
feat(solc): pass compile time to reporter (#1098)
* Pass compile time to solc_success/on_solc_success

* Update changelog
2022-04-02 14:37:38 -07:00
Matthias Seitz 26b6472f9b
feat(solc): include project paths in cache (#1097)
* feat: add project paths struct

* feat: add project paths to cache file

* chore: bump format version

* update cache creation api

* feat: add cache condition
2022-03-30 12:14:29 -07:00
Matthias Seitz 110d1beeed
chore: add some solc checksum traces (#1088)
* chore: add some solc checksum traces

* chore: use qualified path
2022-03-28 16:08:45 -07:00
Bjerg 7842a70803
feat: add `ArtifactId::identifier()` (#1087)
* feat: add `ArtifactId::identifier()`

* docs: note that `slug` is not unique

* chore: remove --all from clippy

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-03-28 09:42:48 -07:00
dependabot[bot] 967a142563
chore(deps): bump semver from 1.0.6 to 1.0.7 (#1085)
Bumps [semver](https://github.com/dtolnay/semver) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/dtolnay/semver/releases)
- [Commits](https://github.com/dtolnay/semver/compare/1.0.6...1.0.7)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-28 09:39:23 -07:00
Matthias Seitz 2689981782
feat(solc): include source file ast in artifact (#1081)
* refactor: extend artifactsoutput interface

* add source file to trait

* fix: make it compile again
2022-03-27 09:56:33 -07:00
Bjerg 919a570237
feat: ability to get artifacts + sources (#1080) 2022-03-27 07:44:23 -07:00
Matthias Seitz 95a384b121
fix(solc): bundle new svm-solc feature (#1071)
* fix(solc): bundle new svm-solc feature

* chore: update CHANGELOG

* fix: enabled new feature in full
2022-03-21 01:58:56 -07:00
Matthias Seitz 916e9a7334
chore(clippy): add some deny lints (#1064)
* feat: add deny lints

* trim ethers core

* trim ethers eip712

* deny ethers contract derive

* deny ethers contract abigen

* deny ethers contract

* deny ethers providers

* chore: add denies and fix unused deps

* doc: fix links

* fix: wasm build

* doc: fix links

* doc: fix links

* doc: fix inline doc links

* docs: fix intra doc links
2022-03-19 10:05:39 -07:00
Matthias Seitz 1788f05ab0
feat(solc): use svm-builds instead of fetching http releases list (#1063)
* feat(solc): use svm-builds instead of fetching http releases list

* use correct features
2022-03-19 07:52:09 -07:00
Matthias Seitz b6b5b09f4a
feat(abigen): add abi object deserializer and generate deploy function (#1030)
* feat(abigen): add abi object deserializer

* chore: rustfmt

* refactor: use enum type for deser abi

* refactor: use enum types for deser

* chore: rustfmt

* feat: add bytecode field

* feat: generate bytecode static

* feat: generate deployment function

* refactor: deploy function

* feat: add contract deployer type

* feat: make 0x prefix optional

* feat: add deploy function

* feat: add deploy example

* chore: update CHANGELOG

* chore(clippy): make clippy happy
2022-03-18 21:23:33 -07:00
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
dependabot[bot] 97c37f187f
chore(deps): bump pretty_assertions from 1.1.0 to 1.2.0 (#1022)
Bumps [pretty_assertions](https://github.com/colin-kiegel/rust-pretty-assertions) from 1.1.0 to 1.2.0.
- [Release notes](https://github.com/colin-kiegel/rust-pretty-assertions/releases)
- [Changelog](https://github.com/colin-kiegel/rust-pretty-assertions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/colin-kiegel/rust-pretty-assertions/commits)

---
updated-dependencies:
- dependency-name: pretty_assertions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-14 13:27:15 +02:00
Matthias Seitz 6b0a1f7911
fix(solc): skip artifacts check for files without artifacts (#1018) 2022-03-14 00:36:26 +02:00
Georgios Konstantopoulos 77c3b39016 chore: go back to upstream svm 2022-03-12 05:16:20 -08:00
Georgios Konstantopoulos 341e98b4b0 fix: use svm-rs with fixed solc checksums 2022-03-11 13:42:46 -08: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
dependabot[bot] 37c25df5a5
chore(deps): bump tracing from 0.1.31 to 0.1.32 (#1001)
Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.31 to 0.1.32.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.31...tracing-0.1.32)

---
updated-dependencies:
- dependency-name: tracing
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-10 06:41:10 -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
dependabot[bot] cc96245b1d
chore(deps): bump regex from 1.5.4 to 1.5.5 (#997)
Bumps [regex](https://github.com/rust-lang/regex) from 1.5.4 to 1.5.5.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.5.4...1.5.5)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-09 09:50:09 -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
Matthias Seitz 4f1a2352f7
chore(deps): bump solang (#992) 2022-03-06 07:21:33 -08:00
dependabot[bot] 010217c407
chore(deps): bump once_cell from 1.9.0 to 1.10.0 (#987)
Bumps [once_cell](https://github.com/matklad/once_cell) from 1.9.0 to 1.10.0.
- [Release notes](https://github.com/matklad/once_cell/releases)
- [Changelog](https://github.com/matklad/once_cell/blob/master/CHANGELOG.md)
- [Commits](https://github.com/matklad/once_cell/compare/v1.9.0...v1.10.0)

---
updated-dependencies:
- dependency-name: once_cell
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-03-04 05:29:34 -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
dependabot[bot] ffb8582dd5
chore(deps): bump semver from 1.0.5 to 1.0.6 (#944)
Bumps [semver](https://github.com/dtolnay/semver) from 1.0.5 to 1.0.6.
- [Release notes](https://github.com/dtolnay/semver/releases)
- [Commits](https://github.com/dtolnay/semver/compare/1.0.5...1.0.6)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-22 09:04:57 +01: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
dependabot[bot] 781b9c170d
chore(deps): bump md-5 from 0.10.0 to 0.10.1 (#922)
Bumps [md-5](https://github.com/RustCrypto/hashes) from 0.10.0 to 0.10.1.
- [Release notes](https://github.com/RustCrypto/hashes/releases)
- [Commits](https://github.com/RustCrypto/hashes/compare/md2-v0.10.0...md2-v0.10.1)

---
updated-dependencies:
- dependency-name: md-5
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-18 15:37:59 +02:00
dependabot[bot] a7fabb114d
chore(deps): bump tracing from 0.1.30 to 0.1.31 (#923)
Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.30 to 0.1.31.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.30...tracing-0.1.31)

---
updated-dependencies:
- dependency-name: tracing
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-18 15:37:52 +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
dependabot[bot] cd24022515
chore(deps): bump rand from 0.8.4 to 0.8.5 (#914)
Bumps [rand](https://github.com/rust-random/rand) from 0.8.4 to 0.8.5.
- [Release notes](https://github.com/rust-random/rand/releases)
- [Changelog](https://github.com/rust-random/rand/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-random/rand/compare/0.8.4...0.8.5)

---
updated-dependencies:
- dependency-name: rand
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-15 22:32:38 +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
Georgios Konstantopoulos c82597c908 fix: bump svm-rs to fix race condition on same version installs of solc 2022-02-09 17:58:05 +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
dependabot[bot] d5f93a6ab1
chore(deps): bump semver from 1.0.4 to 1.0.5 (#874)
Bumps [semver](https://github.com/dtolnay/semver) from 1.0.4 to 1.0.5.
- [Release notes](https://github.com/dtolnay/semver/releases)
- [Commits](https://github.com/dtolnay/semver/compare/1.0.4...1.0.5)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-07 10:27:16 +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
dependabot[bot] 8d0d5a2d9a
chore(deps): bump tracing from 0.1.29 to 0.1.30 (#862)
Bumps [tracing](https://github.com/tokio-rs/tracing) from 0.1.29 to 0.1.30.
- [Release notes](https://github.com/tokio-rs/tracing/releases)
- [Commits](https://github.com/tokio-rs/tracing/compare/tracing-0.1.29...tracing-0.1.30)

---
updated-dependencies:
- dependency-name: tracing
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-04 10:09:02 +02:00
Matthias Seitz d08f3ed2d4
fix(solc): bump solang (#861) 2022-02-03 22:35:46 +02:00
dependabot[bot] 66c9fadea3
chore(deps): bump pretty_assertions from 1.0.0 to 1.1.0 (#854)
Bumps [pretty_assertions](https://github.com/colin-kiegel/rust-pretty-assertions) from 1.0.0 to 1.1.0.
- [Release notes](https://github.com/colin-kiegel/rust-pretty-assertions/releases)
- [Changelog](https://github.com/colin-kiegel/rust-pretty-assertions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/colin-kiegel/rust-pretty-assertions/compare/v1.0.0...v1.1.0)

---
updated-dependencies:
- dependency-name: pretty_assertions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-02 15:58:14 +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
Georgios Konstantopoulos 19671e51de chore: fix lints / solc test 2022-01-11 12:13:09 +02:00
dependabot[bot] c95c12e0d1
chore(deps): bump tempfile from 3.2.0 to 3.3.0 (#780)
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/Stebalien/tempfile/releases)
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/NEWS)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.2.0...v3.3.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-01-11 12:03:09 +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
dependabot[bot] c22afee26a
chore(deps): bump num_cpus from 1.13.0 to 1.13.1 (#722)
Bumps [num_cpus](https://github.com/seanmonstar/num_cpus) from 1.13.0 to 1.13.1.
- [Release notes](https://github.com/seanmonstar/num_cpus/releases)
- [Changelog](https://github.com/seanmonstar/num_cpus/blob/master/CHANGELOG.md)
- [Commits](https://github.com/seanmonstar/num_cpus/compare/v1.13.0...v1.13.1)

---
updated-dependencies:
- dependency-name: num_cpus
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-21 19:37:31 +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
Georgios Konstantopoulos 9c11f6cb7b
fix(ethers): auto-enable asm when supported (x86/x64 and not msvc) (#710) 2021-12-19 18:02:22 +02:00
Georgios Konstantopoulos d7c29cc615
fix: configure rustls & openssl via feature flag (#703)
* chore(etherscan): allow specifying openssl or rustls

* chore(contract): allow specifying openssl or rustls

* chore(solc): allow specifying openssl or rustls

* chore: expose new rustls/openssl features at top level crate

* chore: bump tokio-tungstenite / remove dup rustls version

* chore: bump svm-rs

* fix: feature gate sha2-asm

* ci: remove --all-features from windows tests

* chore: do not enable sha2-asm by default

* fix: do not pull in svm-rs in wasm builds

* chore: use upstream svm again
2021-12-19 16:56:54 +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
Matthias Seitz 9096f4e170
feat(solc): revamped remapping auto detect (#706) 2021-12-19 06:32:14 +02:00
Matthias Seitz e24117a1e1
chore(clippy): make clippy happy (#705) 2021-12-19 06:28:38 +02:00
Alex Xiong 6cbdc89187
fix: avoid futures-util yanked err (#693) 2021-12-15 03:32:36 +01:00
Matthias Seitz 4bb2636b77
fix: remove assert to check cache format (#689)
* fix: remove assert

* rustmft
2021-12-13 16:37:35 -07:00
Georgios Konstantopoulos 8a7252fe58
fix: bump svm-rs for windows support (#685) 2021-12-13 18:20:38 +02:00
Matthias Seitz 4c677933ce
feat(solc): add workspace utils (#678)
* feat(solc): add workspace mocking

* test: add more tests

* test: update tests

* rename to project-utils

* add fs extra error

* clean up functions

* simplify path construction
2021-12-13 01:39:28 +02:00
Matthias Seitz 5dec757493
refactor(solc): add new io error with path info (#680)
* refactor(solc): add new io error with path info

* chore: rustfmt
2021-12-12 10:10:40 -07:00
Matthias Seitz ab8b5233d2
fix: exclude asm for msvc (#679) 2021-12-12 15:09:15 +02:00
Matthias Seitz 275f7179bf
feat(solc): add hardhat artifact support (#677)
* feat: add hardhat artifact support

* test: add hh test

* feat: add hh fallback artifact handler

* add format detection

* chore: update changelog

* chore: typos
2021-12-11 19:39:39 +02:00
Matthias Seitz 38e18463dc
feat(solc): extend Artifact trait (#673)
* feat(solc): extend Artifact trait

* chore: update changelog

* chore: rustfmt
2021-12-10 12:38:44 -07:00
Matthias Seitz f48fd88a97
fix(solc): skip 0x prefix for deserialize bytes decoding (#671) 2021-12-10 11:20:30 -07:00
Rohit Narurkar 991cda3f33
fix: naming and default impl (#665) 2021-12-10 10:22:25 -07:00
Matthias Seitz ab949f7858
fix: add allow paths (#667) 2021-12-10 08:50:15 -07:00
Matthias Seitz 59cf991828
feat(abigen): use structs for outputs (#664)
* feat(abigen): use structs for outputs

* update CHANGELOG

* make clippy happy

* fix lints
2021-12-09 16:00:59 -07:00