aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_ide/src/completion/complete_record.rs
diff options
context:
space:
mode:
authorbors[bot] <26634292+bors[bot]@users.noreply.github.com>2020-04-07 15:41:07 +0100
committerGitHub <[email protected]>2020-04-07 15:41:07 +0100
commit33c364b545350134b945fbca834194fd1a28fe08 (patch)
tree9a3ade9b4fdab53cb81e4186f51ec3d15861e89e /crates/ra_ide/src/completion/complete_record.rs
parent97b963b44b9da1fca4229da4c8744fa88c25780b (diff)
parent3bde2b742388f3ec3bb08841f93a06a62be04e4d (diff)
Merge #3878
3878: A more precise panic macro r=matklad a=matklad bors r+ 🤖 Co-authored-by: Aleksey Kladov <[email protected]>
Diffstat (limited to 'crates/ra_ide/src/completion/complete_record.rs')
-rw-r--r--crates/ra_ide/src/completion/complete_record.rs11
1 files changed, 7 insertions, 4 deletions
diff --git a/crates/ra_ide/src/completion/complete_record.rs b/crates/ra_ide/src/completion/complete_record.rs
index 01dd8c6db..79f5c8c8f 100644
--- a/crates/ra_ide/src/completion/complete_record.rs
+++ b/crates/ra_ide/src/completion/complete_record.rs
@@ -1,12 +1,13 @@
1//! Complete fields in record literals and patterns. 1//! Complete fields in record literals and patterns.
2use crate::completion::{CompletionContext, Completions};
3use ra_syntax::{ast, ast::NameOwner, SmolStr}; 2use ra_syntax::{ast, ast::NameOwner, SmolStr};
4 3
4use crate::completion::{CompletionContext, Completions};
5
5pub(super) fn complete_record(acc: &mut Completions, ctx: &CompletionContext) -> Option<()> { 6pub(super) fn complete_record(acc: &mut Completions, ctx: &CompletionContext) -> Option<()> {
6 let (ty, variant, already_present_fields) = 7 let (ty, variant, already_present_fields) =
7 match (ctx.record_lit_pat.as_ref(), ctx.record_lit_syntax.as_ref()) { 8 match (ctx.record_lit_pat.as_ref(), ctx.record_lit_syntax.as_ref()) {
8 (None, None) => return None, 9 (None, None) => return None,
9 (Some(_), Some(_)) => panic!("A record cannot be both a literal and a pattern"), 10 (Some(_), Some(_)) => unreachable!("A record cannot be both a literal and a pattern"),
10 (Some(record_pat), _) => ( 11 (Some(record_pat), _) => (
11 ctx.sema.type_of_pat(&record_pat.clone().into())?, 12 ctx.sema.type_of_pat(&record_pat.clone().into())?,
12 ctx.sema.resolve_record_pattern(record_pat)?, 13 ctx.sema.resolve_record_pattern(record_pat)?,
@@ -59,9 +60,10 @@ fn pattern_ascribed_fields(record_pat: &ast::RecordPat) -> Vec<SmolStr> {
59#[cfg(test)] 60#[cfg(test)]
60mod tests { 61mod tests {
61 mod record_lit_tests { 62 mod record_lit_tests {
62 use crate::completion::{test_utils::do_completion, CompletionItem, CompletionKind};
63 use insta::assert_debug_snapshot; 63 use insta::assert_debug_snapshot;
64 64
65 use crate::completion::{test_utils::do_completion, CompletionItem, CompletionKind};
66
65 fn complete(code: &str) -> Vec<CompletionItem> { 67 fn complete(code: &str) -> Vec<CompletionItem> {
66 do_completion(code, CompletionKind::Reference) 68 do_completion(code, CompletionKind::Reference)
67 } 69 }
@@ -204,9 +206,10 @@ mod tests {
204 } 206 }
205 207
206 mod record_pat_tests { 208 mod record_pat_tests {
207 use crate::completion::{test_utils::do_completion, CompletionItem, CompletionKind};
208 use insta::assert_debug_snapshot; 209 use insta::assert_debug_snapshot;
209 210
211 use crate::completion::{test_utils::do_completion, CompletionItem, CompletionKind};
212
210 fn complete(code: &str) -> Vec<CompletionItem> { 213 fn complete(code: &str) -> Vec<CompletionItem> {
211 do_completion(code, CompletionKind::Reference) 214 do_completion(code, CompletionKind::Reference)
212 } 215 }