@@ -222,12 +222,14 @@ async fn apply_toolchain_dependencies(
222222 let mut lock_files = vec ! [ ] ;
223223 let mut workspace_manifests = vec ! [ ] ;
224224 let mut project_manifests = vec ! [ ] ;
225+ let has_parse_manifest = toolchain. has_func ( "parse_manifest" ) . await ;
226+ let has_parse_lock = toolchain. has_func ( "parse_lock" ) . await ;
225227
226228 // Load the project manifest
227229 for manifest_file_name in & toolchain. metadata . manifest_file_names {
228230 let manifest_path = project_root. join ( manifest_file_name) ;
229231
230- if toolchain . has_func ( "parse_manifest" ) . await {
232+ if manifest_path . exists ( ) && has_parse_manifest {
231233 project_manifests. push (
232234 toolchain
233235 . parse_manifest ( ParseManifestInput {
@@ -264,7 +266,7 @@ async fn apply_toolchain_dependencies(
264266
265267 if lock_path. exists ( )
266268 && app_context. workspace_config . hasher . optimization == HasherOptimization :: Accuracy
267- && toolchain . has_func ( "parse_lock" ) . await
269+ && has_parse_lock
268270 {
269271 lock_files. push (
270272 toolchain
@@ -281,10 +283,7 @@ async fn apply_toolchain_dependencies(
281283 for manifest_file_name in & toolchain. metadata . manifest_file_names {
282284 let manifest_path = deps_root. join ( manifest_file_name) ;
283285
284- if manifest_path. exists ( )
285- && deps_root != project_root
286- && toolchain. has_func ( "parse_manifest" ) . await
287- {
286+ if manifest_path. exists ( ) && deps_root != project_root && has_parse_manifest {
288287 workspace_manifests. push (
289288 toolchain
290289 . parse_manifest ( ParseManifestInput {
@@ -345,6 +344,7 @@ fn apply_toolchain_dependencies_by_manifest(
345344 ) ;
346345
347346 let mut inject = false ;
347+ let empty_deps = BTreeMap :: new ( ) ;
348348
349349 for manifest in project_manifests {
350350 for ( scope, project_deps) in [
@@ -355,7 +355,7 @@ fn apply_toolchain_dependencies_by_manifest(
355355 ] {
356356 if apply_toolchain_dependencies_by_scope (
357357 project_deps,
358- workspace_deps. get ( & scope) . unwrap ( ) ,
358+ workspace_deps. get ( & scope) . unwrap_or ( & empty_deps ) ,
359359 & locked_deps,
360360 hash_content,
361361 ) {
0 commit comments