mirror of
				https://github.com/rust-lang/rust-analyzer.git
				synced 2025-10-31 12:04:43 +00:00 
			
		
		
		
	fix: Honor rust-analyzer.cargo.noDeps option when fetching sysroot metadata
				
					
				
			This commit is contained in:
		
							parent
							
								
									11d45c8813
								
							
						
					
					
						commit
						224b84f843
					
				
					 4 changed files with 15 additions and 4 deletions
				
			
		|  | @ -209,6 +209,7 @@ impl Sysroot { | ||||||
|     pub fn load_workspace( |     pub fn load_workspace( | ||||||
|         &self, |         &self, | ||||||
|         sysroot_source_config: &RustSourceWorkspaceConfig, |         sysroot_source_config: &RustSourceWorkspaceConfig, | ||||||
|  |         no_deps: bool, | ||||||
|         current_dir: &AbsPath, |         current_dir: &AbsPath, | ||||||
|         progress: &dyn Fn(String), |         progress: &dyn Fn(String), | ||||||
|     ) -> Option<RustLibSrcWorkspace> { |     ) -> Option<RustLibSrcWorkspace> { | ||||||
|  | @ -224,6 +225,7 @@ impl Sysroot { | ||||||
|                     &library_manifest, |                     &library_manifest, | ||||||
|                     current_dir, |                     current_dir, | ||||||
|                     cargo_config, |                     cargo_config, | ||||||
|  |                     no_deps, | ||||||
|                     progress, |                     progress, | ||||||
|                 ) { |                 ) { | ||||||
|                     Ok(loaded) => return Some(loaded), |                     Ok(loaded) => return Some(loaded), | ||||||
|  | @ -318,6 +320,7 @@ impl Sysroot { | ||||||
|         library_manifest: &ManifestPath, |         library_manifest: &ManifestPath, | ||||||
|         current_dir: &AbsPath, |         current_dir: &AbsPath, | ||||||
|         cargo_config: &CargoMetadataConfig, |         cargo_config: &CargoMetadataConfig, | ||||||
|  |         no_deps: bool, | ||||||
|         progress: &dyn Fn(String), |         progress: &dyn Fn(String), | ||||||
|     ) -> Result<RustLibSrcWorkspace> { |     ) -> Result<RustLibSrcWorkspace> { | ||||||
|         tracing::debug!("Loading library metadata: {library_manifest}"); |         tracing::debug!("Loading library metadata: {library_manifest}"); | ||||||
|  | @ -333,7 +336,7 @@ impl Sysroot { | ||||||
|             current_dir, |             current_dir, | ||||||
|             &cargo_config, |             &cargo_config, | ||||||
|             self, |             self, | ||||||
|             false, |             no_deps, | ||||||
|             // Make sure we never attempt to write to the sysroot
 |             // Make sure we never attempt to write to the sysroot
 | ||||||
|             true, |             true, | ||||||
|             progress, |             progress, | ||||||
|  |  | ||||||
|  | @ -240,7 +240,7 @@ fn smoke_test_real_sysroot_cargo() { | ||||||
|     let cwd = AbsPathBuf::assert_utf8(temp_dir().join("smoke_test_real_sysroot_cargo")); |     let cwd = AbsPathBuf::assert_utf8(temp_dir().join("smoke_test_real_sysroot_cargo")); | ||||||
|     std::fs::create_dir_all(&cwd).unwrap(); |     std::fs::create_dir_all(&cwd).unwrap(); | ||||||
|     let loaded_sysroot = |     let loaded_sysroot = | ||||||
|         sysroot.load_workspace(&RustSourceWorkspaceConfig::default_cargo(), &cwd, &|_| ()); |         sysroot.load_workspace(&RustSourceWorkspaceConfig::default_cargo(), false, &cwd, &|_| ()); | ||||||
|     if let Some(loaded_sysroot) = loaded_sysroot { |     if let Some(loaded_sysroot) = loaded_sysroot { | ||||||
|         sysroot.set_workspace(loaded_sysroot); |         sysroot.set_workspace(loaded_sysroot); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  | @ -391,6 +391,7 @@ impl ProjectWorkspace { | ||||||
|                         toolchain.clone(), |                         toolchain.clone(), | ||||||
|                         target_dir.clone(), |                         target_dir.clone(), | ||||||
|                     )), |                     )), | ||||||
|  |                     config.no_deps, | ||||||
|                     workspace_dir, |                     workspace_dir, | ||||||
|                     progress, |                     progress, | ||||||
|                 ) |                 ) | ||||||
|  | @ -499,6 +500,7 @@ impl ProjectWorkspace { | ||||||
|                 if let Some(sysroot_project) = sysroot_project { |                 if let Some(sysroot_project) = sysroot_project { | ||||||
|                     sysroot.load_workspace( |                     sysroot.load_workspace( | ||||||
|                         &RustSourceWorkspaceConfig::Json(*sysroot_project), |                         &RustSourceWorkspaceConfig::Json(*sysroot_project), | ||||||
|  |                         config.no_deps, | ||||||
|                         project_root, |                         project_root, | ||||||
|                         progress, |                         progress, | ||||||
|                     ) |                     ) | ||||||
|  | @ -510,6 +512,7 @@ impl ProjectWorkspace { | ||||||
|                             toolchain.clone(), |                             toolchain.clone(), | ||||||
|                             target_dir, |                             target_dir, | ||||||
|                         )), |                         )), | ||||||
|  |                         config.no_deps, | ||||||
|                         project_root, |                         project_root, | ||||||
|                         progress, |                         progress, | ||||||
|                     ) |                     ) | ||||||
|  | @ -570,6 +573,7 @@ impl ProjectWorkspace { | ||||||
|                 toolchain.clone(), |                 toolchain.clone(), | ||||||
|                 target_dir.clone(), |                 target_dir.clone(), | ||||||
|             )), |             )), | ||||||
|  |             config.no_deps, | ||||||
|             dir, |             dir, | ||||||
|             &|_| (), |             &|_| (), | ||||||
|         ); |         ); | ||||||
|  |  | ||||||
|  | @ -75,8 +75,12 @@ impl Tester { | ||||||
|         }; |         }; | ||||||
| 
 | 
 | ||||||
|         let mut sysroot = Sysroot::discover(tmp_file.parent().unwrap(), &cargo_config.extra_env); |         let mut sysroot = Sysroot::discover(tmp_file.parent().unwrap(), &cargo_config.extra_env); | ||||||
|         let loaded_sysroot = |         let loaded_sysroot = sysroot.load_workspace( | ||||||
|             sysroot.load_workspace(&RustSourceWorkspaceConfig::default_cargo(), &path, &|_| ()); |             &RustSourceWorkspaceConfig::default_cargo(), | ||||||
|  |             false, | ||||||
|  |             &path, | ||||||
|  |             &|_| (), | ||||||
|  |         ); | ||||||
|         if let Some(loaded_sysroot) = loaded_sysroot { |         if let Some(loaded_sysroot) = loaded_sysroot { | ||||||
|             sysroot.set_workspace(loaded_sysroot); |             sysroot.set_workspace(loaded_sysroot); | ||||||
|         } |         } | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Shoyu Vanilla
						Shoyu Vanilla