Skip to content

Commit

Permalink
refactor(toml): Gather dependency gathering
Browse files Browse the repository at this point in the history
  • Loading branch information
epage committed Apr 2, 2024
1 parent ecf97cf commit 1e761a1
Showing 1 changed file with 46 additions and 74 deletions.
120 changes: 46 additions & 74 deletions src/cargo/util/toml/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -982,116 +982,76 @@ pub fn to_real_manifest(
}
}

let mut deps = Vec::new();

let mut manifest_ctx = ManifestContext {
deps: &mut deps,
source_id,
gctx,
warnings,
platform: None,
root: package_root,
};

// Collect the dependencies.
validate_dependencies(
original_toml.dependencies.as_ref(),
None,
None,
manifest_ctx.warnings,
)?;
gather_dependencies(&mut manifest_ctx, resolved_toml.dependencies.as_ref(), None)?;
validate_dependencies(original_toml.dependencies.as_ref(), None, None, warnings)?;
if original_toml.dev_dependencies.is_some() && original_toml.dev_dependencies2.is_some() {
warn_on_deprecated(
"dev-dependencies",
package_name,
"package",
manifest_ctx.warnings,
);
warn_on_deprecated("dev-dependencies", package_name, "package", warnings);
}
validate_dependencies(
original_toml.dev_dependencies(),
None,
Some(DepKind::Development),
manifest_ctx.warnings,
)?;
gather_dependencies(
&mut manifest_ctx,
resolved_toml.dev_dependencies(),
Some(DepKind::Development),
warnings,
)?;
if original_toml.build_dependencies.is_some() && original_toml.build_dependencies2.is_some() {
warn_on_deprecated(
"build-dependencies",
package_name,
"package",
manifest_ctx.warnings,
);
warn_on_deprecated("build-dependencies", package_name, "package", warnings);
}
validate_dependencies(
original_toml.build_dependencies(),
None,
Some(DepKind::Build),
manifest_ctx.warnings,
)?;
gather_dependencies(
&mut manifest_ctx,
resolved_toml.build_dependencies(),
Some(DepKind::Build),
)?;

verify_lints(
resolved_toml.resolved_lints().expect("previously resolved"),
gctx,
manifest_ctx.warnings,
warnings,
)?;
let default = manifest::TomlLints::default();
let rustflags = lints_to_rustflags(
resolved_toml
.resolved_lints()
.expect("previously resolved")
.unwrap_or(&default),
);

for (name, platform) in original_toml.target.iter().flatten() {
let platform_kind: Platform = name.parse()?;
platform_kind.check_cfg_attributes(manifest_ctx.warnings);
platform_kind.check_cfg_attributes(warnings);
let platform_kind = Some(platform_kind);
validate_dependencies(
platform.dependencies.as_ref(),
platform_kind.as_ref(),
None,
manifest_ctx.warnings,
warnings,
)?;
if platform.build_dependencies.is_some() && platform.build_dependencies2.is_some() {
warn_on_deprecated(
"build-dependencies",
name,
"platform target",
manifest_ctx.warnings,
);
warn_on_deprecated("build-dependencies", name, "platform target", warnings);
}
validate_dependencies(
platform.build_dependencies(),
platform_kind.as_ref(),
Some(DepKind::Build),
manifest_ctx.warnings,
warnings,
)?;
if platform.dev_dependencies.is_some() && platform.dev_dependencies2.is_some() {
warn_on_deprecated(
"dev-dependencies",
name,
"platform target",
manifest_ctx.warnings,
);
warn_on_deprecated("dev-dependencies", name, "platform target", warnings);
}
validate_dependencies(
platform.dev_dependencies(),
platform_kind.as_ref(),
Some(DepKind::Development),
manifest_ctx.warnings,
warnings,
)?;
}

// Collect the dependencies.
let mut deps = Vec::new();
let mut manifest_ctx = ManifestContext {
deps: &mut deps,
source_id,
gctx,
warnings,
platform: None,
root: package_root,
};
gather_dependencies(&mut manifest_ctx, resolved_toml.dependencies.as_ref(), None)?;
gather_dependencies(
&mut manifest_ctx,
resolved_toml.dev_dependencies(),
Some(DepKind::Development),
)?;
gather_dependencies(
&mut manifest_ctx,
resolved_toml.build_dependencies(),
Some(DepKind::Build),
)?;
for (name, platform) in resolved_toml.target.iter().flatten() {
manifest_ctx.platform = Some(name.parse()?);
gather_dependencies(&mut manifest_ctx, platform.dependencies.as_ref(), None)?;
Expand All @@ -1106,7 +1066,6 @@ pub fn to_real_manifest(
Some(DepKind::Development),
)?;
}

let replace = replace(&resolved_toml, &mut manifest_ctx)?;
let patch = patch(&resolved_toml, &mut manifest_ctx)?;

Expand All @@ -1126,6 +1085,19 @@ pub fn to_real_manifest(
}
}

verify_lints(
resolved_toml.resolved_lints().expect("previously resolved"),
gctx,
warnings,
)?;
let default = manifest::TomlLints::default();
let rustflags = lints_to_rustflags(
resolved_toml
.resolved_lints()
.expect("previously resolved")
.unwrap_or(&default),
);

let metadata = ManifestMetadata {
description: resolved_package
.resolved_description()
Expand Down

0 comments on commit 1e761a1

Please sign in to comment.