Skip to content

Commit b81f94a

Browse files
committed
refactor(toml): Move underscore validation to resolving
1 parent e91b58d commit b81f94a

File tree

2 files changed

+49
-50
lines changed

2 files changed

+49
-50
lines changed

src/cargo/util/toml/mod.rs

Lines changed: 42 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -306,6 +306,8 @@ fn resolve_toml(
306306
};
307307

308308
if let Some(original_package) = original_toml.package() {
309+
let package_name = &original_package.name;
310+
309311
let resolved_package =
310312
resolve_package_toml(original_package, features, package_root, &inherit)?;
311313
let edition = resolved_package
@@ -341,6 +343,14 @@ fn resolve_toml(
341343
package_root,
342344
warnings,
343345
)?;
346+
deprecated_underscore(
347+
&original_toml.dev_dependencies2,
348+
&original_toml.dev_dependencies,
349+
"dev-dependencies",
350+
package_name,
351+
"package",
352+
warnings,
353+
);
344354
resolved_toml.dev_dependencies = resolve_dependencies(
345355
gctx,
346356
edition,
@@ -352,6 +362,14 @@ fn resolve_toml(
352362
package_root,
353363
warnings,
354364
)?;
365+
deprecated_underscore(
366+
&original_toml.build_dependencies2,
367+
&original_toml.build_dependencies,
368+
"build-dependencies",
369+
package_name,
370+
"package",
371+
warnings,
372+
);
355373
resolved_toml.build_dependencies = resolve_dependencies(
356374
gctx,
357375
edition,
@@ -376,6 +394,14 @@ fn resolve_toml(
376394
package_root,
377395
warnings,
378396
)?;
397+
deprecated_underscore(
398+
&platform.dev_dependencies2,
399+
&platform.dev_dependencies,
400+
"dev-dependencies",
401+
name,
402+
"platform target",
403+
warnings,
404+
);
379405
let resolved_dev_dependencies = resolve_dependencies(
380406
gctx,
381407
edition,
@@ -387,6 +413,14 @@ fn resolve_toml(
387413
package_root,
388414
warnings,
389415
)?;
416+
deprecated_underscore(
417+
&platform.build_dependencies2,
418+
&platform.build_dependencies,
419+
"build-dependencies",
420+
name,
421+
"platform target",
422+
warnings,
423+
);
390424
let resolved_build_dependencies = resolve_dependencies(
391425
gctx,
392426
edition,
@@ -617,6 +651,14 @@ fn resolve_dependencies<'a>(
617651
let mut resolved =
618652
dependency_inherit_with(v.clone(), name_in_toml, inherit, package_root, warnings)?;
619653
if let manifest::TomlDependency::Detailed(ref mut d) = resolved {
654+
deprecated_underscore(
655+
&d.default_features2,
656+
&d.default_features,
657+
"default-features",
658+
name_in_toml,
659+
"dependency",
660+
warnings,
661+
);
620662
if d.public.is_some() {
621663
let public_feature = features.require(Feature::public_dependency());
622664
let with_public_feature = public_feature.is_ok();
@@ -1146,28 +1188,12 @@ fn to_real_manifest(
11461188
}
11471189

11481190
validate_dependencies(original_toml.dependencies.as_ref(), None, None, warnings)?;
1149-
deprecated_underscore(
1150-
&original_toml.dev_dependencies2,
1151-
&original_toml.dev_dependencies,
1152-
"dev-dependencies",
1153-
package_name,
1154-
"package",
1155-
warnings,
1156-
);
11571191
validate_dependencies(
11581192
original_toml.dev_dependencies(),
11591193
None,
11601194
Some(DepKind::Development),
11611195
warnings,
11621196
)?;
1163-
deprecated_underscore(
1164-
&original_toml.build_dependencies2,
1165-
&original_toml.build_dependencies,
1166-
"build-dependencies",
1167-
package_name,
1168-
"package",
1169-
warnings,
1170-
);
11711197
validate_dependencies(
11721198
original_toml.build_dependencies(),
11731199
None,
@@ -1184,28 +1210,12 @@ fn to_real_manifest(
11841210
None,
11851211
warnings,
11861212
)?;
1187-
deprecated_underscore(
1188-
&platform.build_dependencies2,
1189-
&platform.build_dependencies,
1190-
"build-dependencies",
1191-
name,
1192-
"platform target",
1193-
warnings,
1194-
);
11951213
validate_dependencies(
11961214
platform.build_dependencies(),
11971215
platform_kind.as_ref(),
11981216
Some(DepKind::Build),
11991217
warnings,
12001218
)?;
1201-
deprecated_underscore(
1202-
&platform.dev_dependencies2,
1203-
&platform.dev_dependencies,
1204-
"dev-dependencies",
1205-
name,
1206-
"platform target",
1207-
warnings,
1208-
);
12091219
validate_dependencies(
12101220
platform.dev_dependencies(),
12111221
platform_kind.as_ref(),
@@ -1811,14 +1821,6 @@ fn detailed_dep_to_dependency<P: ResolveToPath + Clone>(
18111821

18121822
let version = orig.version.as_deref();
18131823
let mut dep = Dependency::parse(pkg_name, version, new_source_id)?;
1814-
deprecated_underscore(
1815-
&orig.default_features2,
1816-
&orig.default_features,
1817-
"default-features",
1818-
name_in_toml,
1819-
"dependency",
1820-
manifest_ctx.warnings,
1821-
);
18221824
dep.set_features(orig.features.iter().flatten())
18231825
.set_default_features(orig.default_features().unwrap_or(true))
18241826
.set_optional(orig.optional.unwrap_or(false))

src/cargo/util/toml/targets.rs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,7 @@ pub(super) fn to_targets(
9797
warnings,
9898
errors,
9999
)?;
100-
targets.extend(to_example_targets(
101-
&toml_examples,
102-
package_root,
103-
edition,
104-
warnings,
105-
)?);
100+
targets.extend(to_example_targets(&toml_examples, package_root, edition)?);
106101

107102
let toml_tests = resolve_tests(
108103
resolved_toml.test.as_ref(),
@@ -183,6 +178,10 @@ fn resolve_lib(
183178
// Check early to improve error messages
184179
validate_lib_name(&lib, warnings)?;
185180

181+
// Checking the original lib
182+
validate_proc_macro(&lib, "library", warnings);
183+
validate_crate_types(&lib, "library", warnings);
184+
186185
if lib.path.is_none() {
187186
if let Some(inferred) = inferred {
188187
lib.path = Some(PathValue(inferred));
@@ -218,8 +217,6 @@ fn to_lib_target(
218217
let Some(lib) = resolved_lib else {
219218
return Ok(None);
220219
};
221-
validate_proc_macro(lib, "library", warnings);
222-
validate_crate_types(lib, "library", warnings);
223220

224221
let path = lib.path.as_ref().expect("previously resolved");
225222
let path = package_root.join(&path.0);
@@ -442,14 +439,12 @@ fn to_example_targets(
442439
targets: &[TomlExampleTarget],
443440
package_root: &Path,
444441
edition: Edition,
445-
warnings: &mut Vec<String>,
446442
) -> CargoResult<Vec<Target>> {
447443
validate_unique_names(&targets, "example")?;
448444

449445
let mut result = Vec::new();
450446
for toml in targets {
451447
let path = package_root.join(&toml.path.as_ref().expect("previously resolved").0);
452-
validate_crate_types(&toml, "example", warnings);
453448
let crate_types = match toml.crate_types() {
454449
Some(kinds) => kinds.iter().map(|s| s.into()).collect(),
455450
None => Vec::new(),
@@ -637,6 +632,8 @@ fn resolve_targets_with_legacy_path(
637632

638633
for target in &toml_targets {
639634
validate_target_name(target, target_kind_human, target_kind, warnings)?;
635+
validate_proc_macro(target, target_kind_human, warnings);
636+
validate_crate_types(target, target_kind_human, warnings);
640637
}
641638

642639
let mut result = Vec::new();

0 commit comments

Comments
 (0)