@@ -195,21 +195,19 @@ pub fn init_pnp_manifest<P: AsRef<Path>>(manifest: &mut Manifest, p: P) {
195
195
196
196
for ( name, ranges) in manifest. package_registry_data . iter_mut ( ) {
197
197
for ( reference, info) in ranges. iter_mut ( ) {
198
- if info. discard_from_lookup {
199
- continue ;
200
- }
201
-
202
198
let p = manifest. manifest_dir
203
199
. join ( info. package_location . clone ( ) ) ;
204
200
205
201
info. package_location = util:: normalize_path (
206
202
p. to_string_lossy ( ) ,
207
203
) ;
208
204
209
- manifest. location_trie . insert ( info. package_location . clone ( ) , PackageLocator {
210
- name : name. clone ( ) ,
211
- reference : reference. clone ( ) ,
212
- } ) ;
205
+ if !info. discard_from_lookup {
206
+ manifest. location_trie . insert ( info. package_location . clone ( ) , PackageLocator {
207
+ name : name. clone ( ) ,
208
+ reference : reference. clone ( ) ,
209
+ } ) ;
210
+ }
213
211
}
214
212
}
215
213
@@ -263,51 +261,55 @@ pub fn is_excluded_from_fallback(manifest: &Manifest, locator: &PackageLocator)
263
261
}
264
262
}
265
263
266
- pub fn resolve_to_unqualified < P : AsRef < Path > > ( specifier : & str , parent : P , config : & ResolutionConfig ) -> Result < Resolution , Error > {
264
+ fn resolve_to_unqualified_via_manifest < P : AsRef < Path > > ( manifest : & Manifest , specifier : & str , parent : P ) -> Result < Resolution , Error > {
267
265
let ( ident, module_path) = parse_bare_identifier ( specifier) ?;
268
266
269
- if let Some ( manifest) = ( config. host . find_pnp_manifest ) ( parent. as_ref ( ) ) ? {
270
- if let Some ( parent_locator) = find_locator ( & manifest, & parent) {
271
- let parent_pkg = get_package ( & manifest, parent_locator) ?;
272
-
273
- let mut reference_or_alias: Option < PackageDependency > = None ;
274
- let mut is_set = false ;
275
-
276
- if !is_set {
277
- if let Some ( Some ( binding) ) = parent_pkg. package_dependencies . get ( & ident) {
278
- reference_or_alias = Some ( binding. clone ( ) ) ;
279
- is_set = true ;
280
- }
281
- }
267
+ if let Some ( parent_locator) = find_locator ( & manifest, & parent) {
268
+ let parent_pkg = get_package ( & manifest, parent_locator) ?;
282
269
283
- if !is_set && manifest. enable_top_level_fallback && !is_excluded_from_fallback ( & manifest, parent_locator) {
284
- if let Some ( fallback_resolution) = manifest. fallback_pool . get ( & ident) {
285
- reference_or_alias = fallback_resolution. clone ( ) ;
286
- is_set = true ;
287
- }
270
+ let mut reference_or_alias: Option < PackageDependency > = None ;
271
+ let mut is_set = false ;
272
+
273
+ if !is_set {
274
+ if let Some ( Some ( binding) ) = parent_pkg. package_dependencies . get ( & ident) {
275
+ reference_or_alias = Some ( binding. clone ( ) ) ;
276
+ is_set = true ;
288
277
}
278
+ }
289
279
290
- if !is_set {
291
- return Err ( Error :: FailedResolution ) ;
280
+ if !is_set && manifest. enable_top_level_fallback && !is_excluded_from_fallback ( & manifest, parent_locator) {
281
+ if let Some ( fallback_resolution) = manifest. fallback_pool . get ( & ident) {
282
+ reference_or_alias = fallback_resolution. clone ( ) ;
283
+ is_set = true ;
292
284
}
285
+ }
286
+
287
+ if !is_set {
288
+ return Err ( Error :: FailedResolution ) ;
289
+ }
293
290
294
- if let Some ( resolution) = reference_or_alias {
295
- let dependency_pkg = match resolution {
296
- PackageDependency :: Reference ( reference) => get_package ( & manifest, & PackageLocator { name : ident, reference } ) ,
297
- PackageDependency :: Alias ( name, reference) => get_package ( & manifest, & PackageLocator { name, reference } ) ,
298
- } ?;
291
+ if let Some ( resolution) = reference_or_alias {
292
+ let dependency_pkg = match resolution {
293
+ PackageDependency :: Reference ( reference) => get_package ( & manifest, & PackageLocator { name : ident, reference } ) ,
294
+ PackageDependency :: Alias ( name, reference) => get_package ( & manifest, & PackageLocator { name, reference } ) ,
295
+ } ?;
299
296
300
- Ok ( Resolution :: Package ( PathBuf :: from ( dependency_pkg. package_location . clone ( ) ) , module_path. clone ( ) ) )
301
- } else {
302
- return Err ( Error :: FailedResolution ) ;
303
- }
297
+ Ok ( Resolution :: Package ( PathBuf :: from ( dependency_pkg. package_location . clone ( ) ) , module_path. clone ( ) ) )
304
298
} else {
305
- Ok ( Resolution :: Specifier ( specifier . to_string ( ) ) )
299
+ return Err ( Error :: FailedResolution ) ;
306
300
}
307
301
} else {
308
302
Ok ( Resolution :: Specifier ( specifier. to_string ( ) ) )
309
303
}
310
304
}
311
305
306
+ pub fn resolve_to_unqualified < P : AsRef < Path > > ( specifier : & str , parent : P , config : & ResolutionConfig ) -> Result < Resolution , Error > {
307
+ if let Some ( manifest) = ( config. host . find_pnp_manifest ) ( parent. as_ref ( ) ) ? {
308
+ resolve_to_unqualified_via_manifest ( & manifest, & specifier, & parent)
309
+ } else {
310
+ Ok ( Resolution :: Specifier ( specifier. to_string ( ) ) )
311
+ }
312
+ }
313
+
312
314
#[ cfg( test) ]
313
315
mod lib_tests;
0 commit comments