diff options
author | Aleksey Kladov <[email protected]> | 2020-03-19 16:53:31 +0000 |
---|---|---|
committer | Aleksey Kladov <[email protected]> | 2020-03-19 16:53:31 +0000 |
commit | 516fe293a8146044b6398b8da0b4da43874a2cf9 (patch) | |
tree | 1a3512d79dd2f6cce21ad5f03b487391a25545e6 /crates/ra_project_model/src/lib.rs | |
parent | d013a05fee5bcf1dfff7bc3a273dd064b61bab91 (diff) |
More direct CargoWorkspace
Diffstat (limited to 'crates/ra_project_model/src/lib.rs')
-rw-r--r-- | crates/ra_project_model/src/lib.rs | 40 |
1 files changed, 20 insertions, 20 deletions
diff --git a/crates/ra_project_model/src/lib.rs b/crates/ra_project_model/src/lib.rs index 081b1fec2..3c294e065 100644 --- a/crates/ra_project_model/src/lib.rs +++ b/crates/ra_project_model/src/lib.rs | |||
@@ -138,8 +138,8 @@ impl ProjectWorkspace { | |||
138 | ProjectWorkspace::Cargo { cargo, sysroot } => { | 138 | ProjectWorkspace::Cargo { cargo, sysroot } => { |
139 | let mut roots = Vec::with_capacity(cargo.packages().len() + sysroot.crates().len()); | 139 | let mut roots = Vec::with_capacity(cargo.packages().len() + sysroot.crates().len()); |
140 | for pkg in cargo.packages() { | 140 | for pkg in cargo.packages() { |
141 | let root = pkg.root(&cargo).to_path_buf(); | 141 | let root = cargo[pkg].root().to_path_buf(); |
142 | let member = pkg.is_member(&cargo); | 142 | let member = cargo[pkg].is_member; |
143 | roots.push(PackageRoot::new(root, member)); | 143 | roots.push(PackageRoot::new(root, member)); |
144 | } | 144 | } |
145 | for krate in sysroot.crates() { | 145 | for krate in sysroot.crates() { |
@@ -164,7 +164,7 @@ impl ProjectWorkspace { | |||
164 | ProjectWorkspace::Cargo { cargo, sysroot: _sysroot } => { | 164 | ProjectWorkspace::Cargo { cargo, sysroot: _sysroot } => { |
165 | let mut out_dirs = Vec::with_capacity(cargo.packages().len()); | 165 | let mut out_dirs = Vec::with_capacity(cargo.packages().len()); |
166 | for pkg in cargo.packages() { | 166 | for pkg in cargo.packages() { |
167 | if let Some(out_dir) = pkg.out_dir(&cargo) { | 167 | if let Some(out_dir) = &cargo[pkg].out_dir { |
168 | out_dirs.push(out_dir.to_path_buf()); | 168 | out_dirs.push(out_dir.to_path_buf()); |
169 | } | 169 | } |
170 | } | 170 | } |
@@ -309,18 +309,18 @@ impl ProjectWorkspace { | |||
309 | // Next, create crates for each package, target pair | 309 | // Next, create crates for each package, target pair |
310 | for pkg in cargo.packages() { | 310 | for pkg in cargo.packages() { |
311 | let mut lib_tgt = None; | 311 | let mut lib_tgt = None; |
312 | for tgt in pkg.targets(&cargo) { | 312 | for &tgt in cargo[pkg].targets.iter() { |
313 | let root = tgt.root(&cargo); | 313 | let root = cargo[tgt].root.as_path(); |
314 | if let Some(file_id) = load(root) { | 314 | if let Some(file_id) = load(root) { |
315 | let edition = pkg.edition(&cargo); | 315 | let edition = cargo[pkg].edition; |
316 | let cfg_options = { | 316 | let cfg_options = { |
317 | let mut opts = default_cfg_options.clone(); | 317 | let mut opts = default_cfg_options.clone(); |
318 | opts.insert_features(pkg.features(&cargo).iter().map(Into::into)); | 318 | opts.insert_features(cargo[pkg].features.iter().map(Into::into)); |
319 | opts | 319 | opts |
320 | }; | 320 | }; |
321 | let mut env = Env::default(); | 321 | let mut env = Env::default(); |
322 | let mut extern_source = ExternSource::default(); | 322 | let mut extern_source = ExternSource::default(); |
323 | if let Some(out_dir) = pkg.out_dir(cargo) { | 323 | if let Some(out_dir) = &cargo[pkg].out_dir { |
324 | // FIXME: We probably mangle non UTF-8 paths here, figure out a better solution | 324 | // FIXME: We probably mangle non UTF-8 paths here, figure out a better solution |
325 | env.set("OUT_DIR", out_dir.to_string_lossy().to_string()); | 325 | env.set("OUT_DIR", out_dir.to_string_lossy().to_string()); |
326 | if let Some(&extern_source_id) = extern_source_roots.get(out_dir) { | 326 | if let Some(&extern_source_id) = extern_source_roots.get(out_dir) { |
@@ -330,16 +330,16 @@ impl ProjectWorkspace { | |||
330 | let crate_id = crate_graph.add_crate_root( | 330 | let crate_id = crate_graph.add_crate_root( |
331 | file_id, | 331 | file_id, |
332 | edition, | 332 | edition, |
333 | Some(CrateName::normalize_dashes(pkg.name(&cargo))), | 333 | Some(CrateName::normalize_dashes(&cargo[pkg].name)), |
334 | cfg_options, | 334 | cfg_options, |
335 | env, | 335 | env, |
336 | extern_source, | 336 | extern_source, |
337 | ); | 337 | ); |
338 | if tgt.kind(&cargo) == TargetKind::Lib { | 338 | if cargo[tgt].kind == TargetKind::Lib { |
339 | lib_tgt = Some(crate_id); | 339 | lib_tgt = Some(crate_id); |
340 | pkg_to_lib_crate.insert(pkg, crate_id); | 340 | pkg_to_lib_crate.insert(pkg, crate_id); |
341 | } | 341 | } |
342 | if tgt.is_proc_macro(&cargo) { | 342 | if cargo[tgt].is_proc_macro { |
343 | if let Some(proc_macro) = libproc_macro { | 343 | if let Some(proc_macro) = libproc_macro { |
344 | if crate_graph | 344 | if crate_graph |
345 | .add_dep( | 345 | .add_dep( |
@@ -351,7 +351,7 @@ impl ProjectWorkspace { | |||
351 | { | 351 | { |
352 | log::error!( | 352 | log::error!( |
353 | "cyclic dependency on proc_macro for {}", | 353 | "cyclic dependency on proc_macro for {}", |
354 | pkg.name(&cargo) | 354 | &cargo[pkg].name |
355 | ) | 355 | ) |
356 | } | 356 | } |
357 | } | 357 | } |
@@ -371,7 +371,7 @@ impl ProjectWorkspace { | |||
371 | // For root projects with dashes in their name, | 371 | // For root projects with dashes in their name, |
372 | // cargo metadata does not do any normalization, | 372 | // cargo metadata does not do any normalization, |
373 | // so we do it ourselves currently | 373 | // so we do it ourselves currently |
374 | CrateName::normalize_dashes(pkg.name(&cargo)), | 374 | CrateName::normalize_dashes(&cargo[pkg].name), |
375 | to, | 375 | to, |
376 | ) | 376 | ) |
377 | .is_err() | 377 | .is_err() |
@@ -379,7 +379,7 @@ impl ProjectWorkspace { | |||
379 | { | 379 | { |
380 | log::error!( | 380 | log::error!( |
381 | "cyclic dependency between targets of {}", | 381 | "cyclic dependency between targets of {}", |
382 | pkg.name(&cargo) | 382 | &cargo[pkg].name |
383 | ) | 383 | ) |
384 | } | 384 | } |
385 | } | 385 | } |
@@ -391,7 +391,7 @@ impl ProjectWorkspace { | |||
391 | .add_dep(from, CrateName::new("core").unwrap(), core) | 391 | .add_dep(from, CrateName::new("core").unwrap(), core) |
392 | .is_err() | 392 | .is_err() |
393 | { | 393 | { |
394 | log::error!("cyclic dependency on core for {}", pkg.name(&cargo)) | 394 | log::error!("cyclic dependency on core for {}", &cargo[pkg].name) |
395 | } | 395 | } |
396 | } | 396 | } |
397 | if let Some(alloc) = liballoc { | 397 | if let Some(alloc) = liballoc { |
@@ -399,7 +399,7 @@ impl ProjectWorkspace { | |||
399 | .add_dep(from, CrateName::new("alloc").unwrap(), alloc) | 399 | .add_dep(from, CrateName::new("alloc").unwrap(), alloc) |
400 | .is_err() | 400 | .is_err() |
401 | { | 401 | { |
402 | log::error!("cyclic dependency on alloc for {}", pkg.name(&cargo)) | 402 | log::error!("cyclic dependency on alloc for {}", &cargo[pkg].name) |
403 | } | 403 | } |
404 | } | 404 | } |
405 | if let Some(std) = libstd { | 405 | if let Some(std) = libstd { |
@@ -407,7 +407,7 @@ impl ProjectWorkspace { | |||
407 | .add_dep(from, CrateName::new("std").unwrap(), std) | 407 | .add_dep(from, CrateName::new("std").unwrap(), std) |
408 | .is_err() | 408 | .is_err() |
409 | { | 409 | { |
410 | log::error!("cyclic dependency on std for {}", pkg.name(&cargo)) | 410 | log::error!("cyclic dependency on std for {}", &cargo[pkg].name) |
411 | } | 411 | } |
412 | } | 412 | } |
413 | } | 413 | } |
@@ -416,7 +416,7 @@ impl ProjectWorkspace { | |||
416 | // Now add a dep edge from all targets of upstream to the lib | 416 | // Now add a dep edge from all targets of upstream to the lib |
417 | // target of downstream. | 417 | // target of downstream. |
418 | for pkg in cargo.packages() { | 418 | for pkg in cargo.packages() { |
419 | for dep in pkg.dependencies(&cargo) { | 419 | for dep in cargo[pkg].dependencies.iter() { |
420 | if let Some(&to) = pkg_to_lib_crate.get(&dep.pkg) { | 420 | if let Some(&to) = pkg_to_lib_crate.get(&dep.pkg) { |
421 | for &from in pkg_crates.get(&pkg).into_iter().flatten() { | 421 | for &from in pkg_crates.get(&pkg).into_iter().flatten() { |
422 | if crate_graph | 422 | if crate_graph |
@@ -425,8 +425,8 @@ impl ProjectWorkspace { | |||
425 | { | 425 | { |
426 | log::error!( | 426 | log::error!( |
427 | "cyclic dependency {} -> {}", | 427 | "cyclic dependency {} -> {}", |
428 | pkg.name(&cargo), | 428 | &cargo[pkg].name, |
429 | dep.pkg.name(&cargo) | 429 | &cargo[dep.pkg].name |
430 | ) | 430 | ) |
431 | } | 431 | } |
432 | } | 432 | } |