foundry-rs / compilers

Utilities for working with native solc and compiling projects.
Apache License 2.0
59 stars 36 forks source link

chore: add `set_compiled_artifacts` to ProjectCompileOutput impl #33

Closed dutterbutter closed 7 months ago

dutterbutter commented 7 months ago

Motivation

This pull request proposes a change to the ProjectCompileOutput impl by creating a method set_compiled_artifacts. The modification is required for the usage of extending foundry to work with non-solc compilers like zksolc for zkSync.

Context:

Currently, the compiled_artifacts field is marked as pub(crate), making it accessible only within the same crate. This encapsulation poses a limitation when the struct is used as part of a larger build process where access to compiled_artifacts is needed to be modified. Providing a set method to update compiled_artifacts it the proposed solution.

Rationale:

In effort to extend foundry support to zkSync ecosystem, the ability to set the modified Artifact is needed. You can see where we make use of set_compiled_artifacts here.

Functionality Impact:

The proposed change will have no impact on existing functionality. It merely extends the accessibility of the compiled_artifacts field, enabling external crates to utilize the compiled bytecode. This change is backward-compatible and does not alter the behavior of any existing code that depends on the ProjectCompileOutput struct.

Solution

Solution:

pub fn set_compiled_artifacts(&mut self, new_compiled_artifacts: Artifacts<T::Artifact>) {
        self.compiled_artifacts = new_compiled_artifacts;
}

PR Checklist