Skip to content
This repository was archived by the owner on Dec 29, 2022. It is now read-only.

Commit 6e14b56

Browse files
committed
Auto merge of #1416 - Xanewok:allow-unstable-in-dev, r=Xanewok
Allow unstable features under "dev" channel This brings it in line with what's used by Rust and Rustfmt. Closes #1414. r? @jsgf @bors delegate=jsgf (hopefully this works)
2 parents 4834d4f + 8825e14 commit 6e14b56

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

rls/src/config.rs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,18 @@ impl<T> AsRef<T> for Inferrable<T> {
103103
}
104104
}
105105

106+
/// Returns whether unstable features are allowed.
107+
///
108+
/// It is very similar to what rustfmt uses [[1]] - it relies on
109+
/// CFG_RELEASE_CHANNEL being set by Rust bootstrap.
110+
/// In case the env var is missing, we assume that we're built by Cargo and are
111+
/// using nightly since that's the only channel supported right now.
112+
///
113+
/// [1]: https://github.com/rust-lang/rustfmt/blob/dfa94d150555da40780413d7f1a1378565208c99/src/config/config_type.rs#L53-L67
114+
pub fn unstable_features_allowed() -> bool {
115+
option_env!("CFG_RELEASE_CHANNEL").map_or(true, |c| c == "nightly" || c == "dev")
116+
}
117+
106118
/// RLS configuration options.
107119
#[derive(Clone, Debug, Deserialize)]
108120
#[allow(missing_docs)]
@@ -251,10 +263,7 @@ impl Config {
251263
/// Ensures that unstable options are only allowed if `unstable_features` is
252264
/// true and that is not allowed on stable release channels.
253265
pub fn normalise(&mut self) {
254-
let allow_unstable =
255-
option_env!("CFG_RELEASE_CHANNEL").map(|c| c == "nightly").unwrap_or(true);
256-
257-
if !allow_unstable {
266+
if !unstable_features_allowed() {
258267
if self.unstable_features {
259268
eprintln!("`unstable_features` setting can only be used on nightly channel");
260269
}

0 commit comments

Comments
 (0)