refactor: allow types
to be imported by precompile/contract
#1271
+48
−19
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Why this should be merged
Importing
core/types
fromprecompile/{modules,contract}
results in a circular dependency becausetypes
->params
->precompile/modules
->precompile/contract
->types
.How this works
precompile/modules
only depended onprecompile/contract
for interfaces; by moving the interfaces into the newprecompile/interfaces
package, there is no longer a transitive dependencyparams -> precompile/modules -> precompile/contract
.Note that this only allows importing
core/types
fromprecompile/contract
but not fromprecompile/modules
. This is OK as the latter is merely a registry that has implementations injected into it.Visualising the dependency graph (raw Graphviz below) with:
Before
After (as at
12febd1
PoC)How this was tested
How is this documented
Raw Graphviz input
Dependency graph at
caf34ea
master:Dependency graph at
12febd1
proof-of-concept: