Commit Graph

300 Commits

Author SHA1 Message Date
Matthias Seitz 75835a9280
feat(solc): emit artifacts for standalone source files (#1296)
* feat(solc): emit artifact files for sources with no contracts

* test(solc): add tests for emitting standalone sources

* chore: update CHANGELOG

* style: check ast is some
2022-05-22 15:19:59 -07:00
Matthias Seitz cffcc7bbec
chore(clippy): fix newest nightly lints (#1298) 2022-05-22 15:18:57 -07:00
Roman Krasiuk 592144e308
fix(solc): flatten random statement order (#1292)
* fix random statement order

* linter
2022-05-20 13:00:36 -07:00
Matthias Seitz 809ccbc9ad
feat(solc): include id in artifact (#1284) 2022-05-19 11:02:31 -07:00
Matthias Seitz fb39d36697
fix(solc): support constructor user docs (#1283) 2022-05-19 11:02:10 -07:00
Matthias Seitz d77f92519c
chore: bump latest solc release (#1282) 2022-05-18 07:49:08 -07:00
Matthias Seitz 4047613259
fix(solc): follow symlinks in source files (#1277) 2022-05-17 10:26:51 -07:00
Matthias Seitz 1271308e06
fix(solc): purge obsolete cached artifacts (#1273)
* fix(solc): purge obsolete cached artifacts

* fix add cfg
2022-05-16 16:48:47 -07:00
Meet Mangukiya d7b9c59f00
fix(ethers-solc/ConfigurableArtifacts): output methodIdentifiers by default (#1266)
Related https://github.com/foundry-rs/foundry/issues/1497
2022-05-16 10:28:53 -07:00
Roman Krasiuk f3699d08bf
fix(solc): add `RuntimeOrHandle` & fix solc blocking installation (#1260)
* rt wrapper for solc install

* fix

* uncomment feat flag

* feature deps & comment

* async it tests

* use svm::block_install for wasm

* hide rt or handle for wasm

* hide import for wasm
2022-05-14 16:29:45 -07:00
Leo eb94e53d1f
Add basic solc model checker options (#1258)
* Add basic solc model checker options

* Changelog entry

* review 1

* chore: fmt

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-05-13 13:29:13 -07:00
Roman Krasiuk 135bca4680
update & lock solang (#1256) 2022-05-13 12:59:47 -07:00
Matthias Seitz f5efbbb86a
feat(solc): add strip and join functions to sources and contracts (#1252) 2022-05-12 14:48:16 -07:00
Matthias Seitz 494af08b85
feat(solc): add source map access functions (#1253) 2022-05-12 14:47:45 -07:00
Bjerg 1e2b02920b
fix: make ast node ids optional (#1254) 2022-05-12 14:47:38 -07:00
Bjerg 0a031417d8
feat: remaining AST nodes (#1201)
* feat: remaining AST nodes

* docs: few rustdocs

* feat: add more node fields

* feat: add more ast nodes

* fix: actually deserialize node type

Note: This breaks `NodeType::Other` :/
2022-05-10 10:43:22 -07:00
Matthias Seitz 44cbbc769a
feat(solc): store source files with their solc version (#1231)
* feat(solc): add versioned sources

* feat(solc): support versioned sources
2022-05-06 11:42:01 -07:00
Matthias Seitz ce3ebaefa0
chore(clippy): make clippy happy (#1230) 2022-05-06 08:15:49 -07:00
Matthias Seitz 2768a6b4d7
feat(solc): add missing options for configurable artifact (#1223) 2022-05-05 07:47:52 -07:00
Matthias Seitz 16e17078fd
fix(solc): respect auto detection in additional compile functions (#1226) 2022-05-05 07:31:52 -07:00
Matthias Seitz bc958792af
perf: short circuit remapping detection on recursive symlink (#1225) 2022-05-05 07:21:51 -07:00
Roman Krasiuk a656830790
fix(solc): flatten import aliases (#1192)
* import aliases

* fix solang alias parsing

* fix token replacement

* minor

* remove log

* remove log

* address pr comments

* rollback
2022-05-03 22:33:25 -07:00
Matthias Seitz 2304ed53ad
fix(solc): make scoped reporter work in parallel (#1214)
* fix(solc): make scoped reporter work in parallel

* typo
2022-05-03 16:39:36 -07:00
Matthias Seitz c8c81b4905
feat(solc): support logging multiple files via io logger (#1216) 2022-05-03 16:38:17 -07:00
Matthias Seitz e7e5abcd0d
fix(solc): ensure std json sources are unique (#1210) 2022-05-02 22:51:28 -07:00
Matthias Seitz c81254a8b6
test(solc): add another link with remapping test (#1191) 2022-04-28 07:07:08 -07:00
Matthias Seitz a978bc98af
fix(solc): remapping aware libraries (#1190)
* feat(solc): add Libraries type

* feat: add lib applied remappings

* test: add lib linking tests

* Update ethers-solc/src/artifacts/mod.rs

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

* Update ethers-solc/src/artifacts/mod.rs

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

* Update ethers-solc/src/artifacts/mod.rs

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

* Update ethers-solc/src/artifacts/mod.rs

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

* chore: rustfmt

Co-authored-by: Georgios Konstantopoulos <me@gakonst.com>
2022-04-28 05:18:24 -07:00
Matthias Seitz 5de7086ba7
fix(solc): use correct empty output selection (#1185) 2022-04-27 21:27:54 +03:00
Matthias Seitz 8afd670a65
chore(solc): remove async feature requirement (#1181) 2022-04-27 15:37:40 +03:00
joshieDo a0f41c51af
fix(solc): when compiler-out metadata is empty and there's no `internalType` (#1182)
* add another compiler-out with fixes

* update changelog
2022-04-27 15:37:09 +03:00
Matthias Seitz 86908bc533
fix(solc): only write cache file if build was successful (#1177) 2022-04-27 15:29:09 +03:00
Matthias Seitz 8dd72723d1
feat: add minimal ast bindings (#1167)
* feat: add minimal ast bindings

* feat: add recursive nodes
2022-04-23 02:20:46 -07:00
Bjerg 6fcde371a3
feat: function debug data in extra output (#1165)
* feat: support function debug data in output

* chore: `ConfigurableArtifacts::output_selection`

* chore: lint
2022-04-23 01:48:39 -07:00
Matthias Seitz f4eb4029b4
chore(solc): include error code in diagnostic (#1171) 2022-04-23 01:41:13 -07:00
YYY 1cba287193
solc: adjust flatten format (#1172) 2022-04-23 01:40:34 -07:00
Bjerg 8444b8ebbe
feat: abi as an extra file (#1166) 2022-04-23 01:40:25 -07:00
Matthias Seitz ac3e12fe8a
feat: add standardjson compiler input type (#1169) 2022-04-23 01:39:31 -07:00
Matthias Seitz 92b1ad8fb1
feat: add debug info bindings (#1161) 2022-04-21 19:29:21 +02:00
Roman Krasiuk 8dd553a5eb
fix extra spacing (#1149) 2022-04-16 13:09:00 -07:00
Matthias Seitz 19a2ecd58d
fix(solc): compute content hashes first (#1142)
* chore: add tracing for missing content hash

* fix: compute content hashes first
2022-04-13 12:59:43 -07:00
Matthias Seitz 3d4356f531
fix(solc): strip root path from remappings and sources for standard json (#1136)
* fix(solc): strip root path from remappings and sources for standard json input

* fix: use consistent contract for tests
2022-04-11 13:36:06 -07:00
James Prestwich 9206efa46c
fixes: correct etherscan url address, remove double quotes in solc error (#1130) 2022-04-10 09:04:43 -07:00
Matthias Seitz 876a19d636
chore: make ipfs the default bytecodehash again (#1128) 2022-04-09 15:11:46 -07:00
pyk 247f08f1a9
feat(solc): Add standard-json-input (#1126)
* Add standard-json-input

* remove debugging

* Update the error message

* Remove unnecessary changes

* Refactor

* make clippy happy

* Return CompilerInput instead of String
2022-04-08 17:18:39 -07:00
Matthias Seitz 69bf6ddd0c
fix: only notify about unresolved import once (#1125) 2022-04-08 07:37:43 -07:00
pyk 77931d4c63
feat(solc): Strip experimental pragma from all imported contracts (#1116)
* Parse experimental pragma

* add integration test for experimental pragma

* Fix formatting
2022-04-07 03:12:25 -07:00
Matthias Seitz 23e45e8531
fix: sanitize compilerinput based on version (#1111)
* fix: sanitize compilerinput based on version

* test: add compiler test

* chore: remove unused warnings

* style: make once lazy
2022-04-05 12:00:04 -07:00
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
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
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
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
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