Skip to content

Commit 489b66f

Browse files
committed
Auto merge of #10434 - weihanglo:stop-gating-stable-features, r=alexcrichton
Stop gating stable features
2 parents 3d6970d + 4947f09 commit 489b66f

File tree

7 files changed

+21
-201
lines changed

7 files changed

+21
-201
lines changed

src/cargo/core/compiler/standard_lib.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,6 @@ pub fn generate_std_roots(
169169
/*is_member*/ false,
170170
/*is_local*/ false,
171171
unit_for,
172-
mode,
173172
*kind,
174173
);
175174
list.push(interner.intern(

src/cargo/core/compiler/unit_dependencies.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -861,7 +861,6 @@ fn new_unit_dep(
861861
state.ws.is_member(pkg),
862862
is_local,
863863
unit_for,
864-
mode,
865864
kind,
866865
);
867866
new_unit_dep_with_profile(

src/cargo/core/profiles.rs

Lines changed: 4 additions & 132 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
use crate::core::compiler::{CompileKind, CompileMode, CompileTarget, Unit};
1+
use crate::core::compiler::{CompileKind, CompileTarget, Unit};
22
use crate::core::dependency::Artifact;
33
use crate::core::resolver::features::FeaturesFor;
4-
use crate::core::{Feature, PackageId, PackageIdSpec, Resolve, Shell, Target, Workspace};
4+
use crate::core::{PackageId, PackageIdSpec, Resolve, Shell, Target, Workspace};
55
use crate::util::interning::InternedString;
66
use crate::util::toml::{ProfilePackageSpec, StringOrBool, TomlProfile, TomlProfiles, U32OrBool};
77
use crate::util::{closest_msg, config, CargoResult, Config};
@@ -26,8 +26,6 @@ pub struct Profiles {
2626
/// This is here to assist with error reporting, as the `ProfileMaker`
2727
/// values have the inherits chains all merged together.
2828
original_profiles: BTreeMap<InternedString, TomlProfile>,
29-
/// Whether or not unstable "named" profiles are enabled.
30-
named_profiles_enabled: bool,
3129
/// The profile the user requested to use.
3230
requested_profile: InternedString,
3331
/// The host target for rustc being used by this `Profiles`.
@@ -44,64 +42,8 @@ impl Profiles {
4442
let mut profiles = merge_config_profiles(ws, requested_profile)?;
4543
let rustc_host = ws.config().load_global_rustc(Some(ws))?.host;
4644

47-
if !ws.unstable_features().is_enabled(Feature::named_profiles()) {
48-
let mut profile_makers = Profiles {
49-
incremental,
50-
named_profiles_enabled: false,
51-
dir_names: Self::predefined_dir_names(),
52-
by_name: HashMap::new(),
53-
original_profiles: profiles.clone(),
54-
requested_profile,
55-
rustc_host,
56-
};
57-
58-
profile_makers.by_name.insert(
59-
InternedString::new("dev"),
60-
ProfileMaker::new(Profile::default_dev(), profiles.remove("dev")),
61-
);
62-
profile_makers
63-
.dir_names
64-
.insert(InternedString::new("dev"), InternedString::new("debug"));
65-
66-
profile_makers.by_name.insert(
67-
InternedString::new("release"),
68-
ProfileMaker::new(Profile::default_release(), profiles.remove("release")),
69-
);
70-
profile_makers.dir_names.insert(
71-
InternedString::new("release"),
72-
InternedString::new("release"),
73-
);
74-
75-
profile_makers.by_name.insert(
76-
InternedString::new("test"),
77-
ProfileMaker::new(Profile::default_test(), profiles.remove("test")),
78-
);
79-
profile_makers
80-
.dir_names
81-
.insert(InternedString::new("test"), InternedString::new("debug"));
82-
83-
profile_makers.by_name.insert(
84-
InternedString::new("bench"),
85-
ProfileMaker::new(Profile::default_bench(), profiles.remove("bench")),
86-
);
87-
profile_makers
88-
.dir_names
89-
.insert(InternedString::new("bench"), InternedString::new("release"));
90-
91-
profile_makers.by_name.insert(
92-
InternedString::new("doc"),
93-
ProfileMaker::new(Profile::default_doc(), profiles.remove("doc")),
94-
);
95-
profile_makers
96-
.dir_names
97-
.insert(InternedString::new("doc"), InternedString::new("debug"));
98-
99-
return Ok(profile_makers);
100-
}
101-
10245
let mut profile_makers = Profiles {
10346
incremental,
104-
named_profiles_enabled: true,
10547
dir_names: Self::predefined_dir_names(),
10648
by_name: HashMap::new(),
10749
original_profiles: profiles.clone(),
@@ -290,48 +232,9 @@ impl Profiles {
290232
is_member: bool,
291233
is_local: bool,
292234
unit_for: UnitFor,
293-
mode: CompileMode,
294235
kind: CompileKind,
295236
) -> Profile {
296-
let (profile_name, inherits) = if !self.named_profiles_enabled {
297-
// With the feature disabled, we degrade `--profile` back to the
298-
// `--release` and `--debug` predicates, and convert back from
299-
// ProfileKind::Custom instantiation.
300-
301-
let release = matches!(self.requested_profile.as_str(), "release" | "bench");
302-
303-
match mode {
304-
CompileMode::Test | CompileMode::Bench | CompileMode::Doctest => {
305-
if release {
306-
(
307-
InternedString::new("bench"),
308-
Some(InternedString::new("release")),
309-
)
310-
} else {
311-
(
312-
InternedString::new("test"),
313-
Some(InternedString::new("dev")),
314-
)
315-
}
316-
}
317-
CompileMode::Build | CompileMode::Check { .. } | CompileMode::RunCustomBuild => {
318-
// Note: `RunCustomBuild` doesn't normally use this code path.
319-
// `build_unit_profiles` normally ensures that it selects the
320-
// ancestor's profile. However, `cargo clean -p` can hit this
321-
// path.
322-
if release {
323-
(InternedString::new("release"), None)
324-
} else {
325-
(InternedString::new("dev"), None)
326-
}
327-
}
328-
CompileMode::Doc { .. } | CompileMode::Docscrape => {
329-
(InternedString::new("doc"), None)
330-
}
331-
}
332-
} else {
333-
(self.requested_profile, None)
334-
};
237+
let (profile_name, inherits) = (self.requested_profile, None);
335238
let maker = self.get_profile_maker(profile_name).unwrap();
336239
let mut profile = maker.get_profile(Some(pkg_id), is_member, unit_for.is_for_host());
337240

@@ -404,15 +307,7 @@ impl Profiles {
404307
/// `[Finished]` line. It is not entirely accurate, since it doesn't
405308
/// select for the package that was actually built.
406309
pub fn base_profile(&self) -> Profile {
407-
let profile_name = if !self.named_profiles_enabled {
408-
match self.requested_profile.as_str() {
409-
"release" | "bench" => self.requested_profile,
410-
_ => InternedString::new("dev"),
411-
}
412-
} else {
413-
self.requested_profile
414-
};
415-
310+
let profile_name = self.requested_profile;
416311
let maker = self.get_profile_maker(profile_name).unwrap();
417312
maker.get_profile(None, /*is_member*/ true, /*is_for_host*/ false)
418313
}
@@ -772,29 +667,6 @@ impl Profile {
772667
}
773668
}
774669

775-
// NOTE: Remove the following three once `named_profiles` is default:
776-
777-
fn default_test() -> Profile {
778-
Profile {
779-
name: InternedString::new("test"),
780-
..Profile::default_dev()
781-
}
782-
}
783-
784-
fn default_bench() -> Profile {
785-
Profile {
786-
name: InternedString::new("bench"),
787-
..Profile::default_release()
788-
}
789-
}
790-
791-
fn default_doc() -> Profile {
792-
Profile {
793-
name: InternedString::new("doc"),
794-
..Profile::default_dev()
795-
}
796-
}
797-
798670
/// Compares all fields except `name`, which doesn't affect compilation.
799671
/// This is necessary for `Unit` deduplication for things like "test" and
800672
/// "dev" which are essentially the same.

src/cargo/ops/cargo_compile.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1068,7 +1068,6 @@ fn generate_targets(
10681068
ws.is_member(pkg),
10691069
is_local,
10701070
unit_for,
1071-
target_mode,
10721071
*kind,
10731072
);
10741073
let unit = interner.intern(

src/cargo/util/toml/mod.rs

Lines changed: 7 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -496,34 +496,19 @@ impl TomlProfile {
496496
) -> CargoResult<()> {
497497
self.validate_profile(name, features)?;
498498
if let Some(ref profile) = self.build_override {
499-
features.require(Feature::profile_overrides())?;
500499
profile.validate_override("build-override")?;
501500
profile.validate_profile(&format!("{name}.build-override"), features)?;
502501
}
503502
if let Some(ref packages) = self.package {
504-
features.require(Feature::profile_overrides())?;
505503
for (override_name, profile) in packages {
506504
profile.validate_override("package")?;
507505
profile.validate_profile(&format!("{name}.package.{override_name}"), features)?;
508506
}
509507
}
510508

511-
// Feature gate definition of named profiles
512-
match name {
513-
"dev" | "release" | "bench" | "test" | "doc" => {}
514-
_ => {
515-
features.require(Feature::named_profiles())?;
516-
}
517-
}
518-
519509
// Profile name validation
520510
Self::validate_name(name)?;
521511

522-
// Feature gate on uses of keys related to named profiles
523-
if self.inherits.is_some() {
524-
features.require(Feature::named_profiles())?;
525-
}
526-
527512
if let Some(dir_name) = self.dir_name {
528513
// This is disabled for now, as we would like to stabilize named
529514
// profiles without this, and then decide in the future if it is
@@ -1146,18 +1131,19 @@ impl TomlManifest {
11461131
let pkgid = project.to_package_id(source_id)?;
11471132

11481133
let edition = if let Some(ref edition) = project.edition {
1149-
features
1150-
.require(Feature::edition())
1151-
.with_context(|| "editions are unstable")?;
11521134
edition
11531135
.parse()
11541136
.with_context(|| "failed to parse the `edition` key")?
11551137
} else {
11561138
Edition::Edition2015
11571139
};
1158-
if edition == Edition::Edition2021 {
1159-
features.require(Feature::edition2021())?;
1160-
} else if !edition.is_stable() {
1140+
// Add these lines if start a new unstable edition.
1141+
// ```
1142+
// if edition == Edition::Edition20xx {
1143+
// features.require(Feature::edition20xx))?;
1144+
// }
1145+
// ```
1146+
if !edition.is_stable() {
11611147
// Guard in case someone forgets to add .require()
11621148
return Err(util::errors::internal(format!(
11631149
"edition {} should be gated",
@@ -1193,14 +1179,6 @@ impl TomlManifest {
11931179
features.require(Feature::metabuild())?;
11941180
}
11951181

1196-
if project.resolver.is_some()
1197-
|| me
1198-
.workspace
1199-
.as_ref()
1200-
.map_or(false, |ws| ws.resolver.is_some())
1201-
{
1202-
features.require(Feature::resolver())?;
1203-
}
12041182
let resolve_behavior = match (
12051183
project.resolver.as_ref(),
12061184
me.workspace.as_ref().and_then(|ws| ws.resolver.as_ref()),
@@ -1540,13 +1518,6 @@ impl TomlManifest {
15401518
if let Some(profiles) = &profiles {
15411519
profiles.validate(&features, &mut warnings)?;
15421520
}
1543-
if me
1544-
.workspace
1545-
.as_ref()
1546-
.map_or(false, |ws| ws.resolver.is_some())
1547-
{
1548-
features.require(Feature::resolver())?;
1549-
}
15501521
let resolve_behavior = me
15511522
.workspace
15521523
.as_ref()
@@ -1959,7 +1930,6 @@ impl<P: ResolveToPath> DetailedTomlDependency<P> {
19591930
dep.set_kind(kind);
19601931
}
19611932
if let Some(name_in_toml) = explicit_name_in_toml {
1962-
cx.features.require(Feature::rename_dependency())?;
19631933
dep.set_explicit_name_in_toml(name_in_toml);
19641934
}
19651935

0 commit comments

Comments
 (0)