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.
Fixes
Summary
In the event that a source package contains type errors, refrain from fast-failing immediately upon package load.
Defer the failure to the point at which the target interface's methods are analyzed and found to contain invalid
types.
Motivation
packages.Load
tends to be a performance bottleneck for larger projects (hence #181). However, it seems that removingit require a large architectural change to counterfeiter internals, namely analysis of file ASTs to create a more limited,
lazy version of
packages.Load
.Certain build systems, namely Bazel, can limit the cost of package loading by sandboxing a GOPATH much smaller than
the entire dependency tree of a package and running Counterfeiter in the sandbox. However, Counterfeiter crashes if any
import in the target package is unresolved, which limits the extent of this optimization.
Downsides
script/ci.sh
) and might needto be thought out more carefully
erroneous signature as
MethodName(param1 Type1, invalid type, invalid type)(invalid type, error)
. This might bethe best option short of custom AST analysis.