summaryrefslogtreecommitdiffstats
path: root/src/tools/rust-analyzer/crates/ide-completion/src/completions/record.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tools/rust-analyzer/crates/ide-completion/src/completions/record.rs')
-rw-r--r--src/tools/rust-analyzer/crates/ide-completion/src/completions/record.rs67
1 files changed, 66 insertions, 1 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/completions/record.rs b/src/tools/rust-analyzer/crates/ide-completion/src/completions/record.rs
index 5d96fbd30..0521e735d 100644
--- a/src/tools/rust-analyzer/crates/ide-completion/src/completions/record.rs
+++ b/src/tools/rust-analyzer/crates/ide-completion/src/completions/record.rs
@@ -124,7 +124,12 @@ fn complete_fields(
#[cfg(test)]
mod tests {
- use crate::tests::check_edit;
+ use ide_db::SnippetCap;
+
+ use crate::{
+ tests::{check_edit, check_edit_with_config, TEST_CONFIG},
+ CompletionConfig,
+ };
#[test]
fn literal_struct_completion_edit() {
@@ -152,6 +157,66 @@ fn baz() {
}
#[test]
+ fn enum_variant_no_snippets() {
+ let conf = CompletionConfig { snippet_cap: SnippetCap::new(false), ..TEST_CONFIG };
+ // tuple variant
+ check_edit_with_config(
+ conf.clone(),
+ "Variant()",
+ r#"
+enum Enum {
+ Variant(usize),
+}
+
+impl Enum {
+ fn new(u: usize) -> Self {
+ Self::Va$0
+ }
+}
+"#,
+ r#"
+enum Enum {
+ Variant(usize),
+}
+
+impl Enum {
+ fn new(u: usize) -> Self {
+ Self::Variant
+ }
+}
+"#,
+ );
+
+ // record variant
+ check_edit_with_config(
+ conf,
+ "Variant{}",
+ r#"
+enum Enum {
+ Variant{u: usize},
+}
+
+impl Enum {
+ fn new(u: usize) -> Self {
+ Self::Va$0
+ }
+}
+"#,
+ r#"
+enum Enum {
+ Variant{u: usize},
+}
+
+impl Enum {
+ fn new(u: usize) -> Self {
+ Self::Variant
+ }
+}
+"#,
+ )
+ }
+
+ #[test]
fn literal_struct_impl_self_completion() {
check_edit(
"Self{}",