]> git.lizzy.rs Git - rust.git/blobdiff - crates/rust-analyzer/src/cargo_target_spec.rs
Open Cargo.toml opens more specific manifest
[rust.git] / crates / rust-analyzer / src / cargo_target_spec.rs
index 1ab72bd9158a4c3dd50eb458c7e25bf3871003ac..8a8b4a32cb4f416a41f44cd5e4566292703f3a28 100644 (file)
@@ -14,6 +14,7 @@
 #[derive(Clone)]
 pub(crate) struct CargoTargetSpec {
     pub(crate) workspace_root: AbsPathBuf,
+    pub(crate) cargo_toml: AbsPathBuf,
     pub(crate) package: String,
     pub(crate) target: String,
     pub(crate) target_kind: TargetKind,
@@ -115,12 +116,17 @@ pub(crate) fn for_file(
             Some(it) => it,
             None => return Ok(None),
         };
+
+        let target_data = &cargo_ws[target];
+        let package_data = &cargo_ws[target_data.package];
         let res = CargoTargetSpec {
             workspace_root: cargo_ws.workspace_root().to_path_buf(),
-            package: cargo_ws.package_flag(&cargo_ws[cargo_ws[target].package]),
-            target: cargo_ws[target].name.clone(),
-            target_kind: cargo_ws[target].kind,
+            cargo_toml: package_data.manifest.clone(),
+            package: cargo_ws.package_flag(&package_data),
+            target: target_data.name.clone(),
+            target_kind: target_data.kind,
         };
+
         Ok(Some(res))
     }