Unnamed repository; edit this file 'description' to name the repository.
Also consider library features internal
Chayim Refael Friedman 5 days ago
parent 9655651 · commit cf65a6a
-rw-r--r--crates/ide-completion/src/context.rs12
-rw-r--r--crates/ide-completion/src/tests/expression.rs2
-rw-r--r--crates/intern/src/symbol/symbols.rs1
3 files changed, 13 insertions, 2 deletions
diff --git a/crates/ide-completion/src/context.rs b/crates/ide-completion/src/context.rs
index 135e222a36..f7bb14391b 100644
--- a/crates/ide-completion/src/context.rs
+++ b/crates/ide-completion/src/context.rs
@@ -611,7 +611,7 @@ impl<'db> CompletionContext<'_, 'db> {
let Some(unstable_feature) = attrs.unstable_feature(self.db) else {
return true;
};
- !INTERNAL_FEATURES.contains(&unstable_feature)
+ !is_internal_feature(&unstable_feature)
|| self.krate.is_unstable_feature_enabled(self.db, &unstable_feature)
}
@@ -977,6 +977,7 @@ const INTERNAL_FEATURES_LIST: &[Symbol] = &[
sym::eii_internals,
sym::field_representing_type_raw,
sym::intrinsics,
+ sym::core_intrinsics,
sym::lang_items,
sym::link_cfg,
sym::more_maybe_bounds,
@@ -1000,3 +1001,12 @@ const INTERNAL_FEATURES_LIST: &[Symbol] = &[
static INTERNAL_FEATURES: LazyLock<FxHashSet<Symbol>> =
LazyLock::new(|| INTERNAL_FEATURES_LIST.iter().cloned().collect());
+
+fn is_internal_feature(feature: &Symbol) -> bool {
+ if INTERNAL_FEATURES.contains(feature) {
+ return true;
+ }
+ // Libs features are internal if they end in `_internal` or `_internals`.
+ let feature = feature.as_str();
+ feature.ends_with("_internal") || feature.ends_with("_internals")
+}
diff --git a/crates/ide-completion/src/tests/expression.rs b/crates/ide-completion/src/tests/expression.rs
index eb99664c35..3d4ad78c34 100644
--- a/crates/ide-completion/src/tests/expression.rs
+++ b/crates/ide-completion/src/tests/expression.rs
@@ -2372,7 +2372,7 @@ fn main() {
$0
}
//- /std.rs crate:std
-#[unstable(feature = "intrinsics")]
+#[unstable(feature = "core_intrinsics")]
pub mod intrinsics {}
"#,
expect![[r#"
diff --git a/crates/intern/src/symbol/symbols.rs b/crates/intern/src/symbol/symbols.rs
index f9ba0582ab..e5f66a202e 100644
--- a/crates/intern/src/symbol/symbols.rs
+++ b/crates/intern/src/symbol/symbols.rs
@@ -646,6 +646,7 @@ define_symbols! {
eii_internals,
field_representing_type_raw,
intrinsics,
+ core_intrinsics,
link_cfg,
more_maybe_bounds,
negative_bounds,