Explain why Arc<dyn TsconfigFinder> is necessary over using Resolver directly#8414
Closed
Copilot wants to merge 1 commit intoperf/unify-tsconfig-discoveryfrom
Closed
Explain why Arc<dyn TsconfigFinder> is necessary over using Resolver directly#8414Copilot wants to merge 1 commit intoperf/unify-tsconfig-discoveryfrom
Arc<dyn TsconfigFinder> is necessary over using Resolver directly#8414Copilot wants to merge 1 commit intoperf/unify-tsconfig-discoveryfrom
Conversation
Copilot
AI
changed the title
[WIP] Fix issues raised on tsconfig discovery PR
Explain why Feb 22, 2026
Arc<dyn TsconfigFinder> is necessary over using Resolver directly
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Addresses the review question on #8413: is
Arc<dyn TsconfigFinder>necessary, or canResolverbe used directly?Why
Resolvercannot be used directly inRawTransformOptions:RawTransformOptionslives inrolldown_common.rolldown_resolver(which ownsResolver<Fs>) already depends onrolldown_common, making the reverse direction a circular dependency.Alternatives evaluated:
Arc<ResolverGeneric<Fs>>fromoxc_resolver— would require makingRawTransformOptions<Fs>generic, propagating throughTransformOptionsInner,TransformOptions, andNormalizedBundlerOptions; or addingrolldown_fsas arolldown_commondependency for theOsFileSystemdefault. Both add more coupling than the current trait.Arc<dyn Fn(&Path) -> ...>— avoids a named type but is less readable; same dynamic dispatch underneath.Resolveras a parameter tooptions_for_file—options_for_fileis defined inrolldown_common, so it still requires an abstraction to reference therolldown_resolvertype there.TsconfigFinderis the standard Rust dependency-inversion pattern for this constraint. No code changes made; reply left on the review thread.✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.