From 73bef854ab854ab1a289944966444453e6f4aadf Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Wed, 29 Apr 2020 10:38:18 +0200 Subject: Move shared assist code to utils --- crates/ra_assists/src/utils.rs | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'crates/ra_assists/src/utils.rs') diff --git a/crates/ra_assists/src/utils.rs b/crates/ra_assists/src/utils.rs index 3d6c59bda..316c8b20f 100644 --- a/crates/ra_assists/src/utils.rs +++ b/crates/ra_assists/src/utils.rs @@ -1,7 +1,7 @@ //! Assorted functions shared by several assists. pub(crate) mod insert_use; -use hir::Semantics; +use hir::{Adt, Semantics, Type}; use ra_ide_db::RootDatabase; use ra_syntax::{ ast::{self, make, NameOwner}, @@ -99,3 +99,16 @@ fn invert_special_case(expr: &ast::Expr) -> Option { _ => None, } } + +pub(crate) fn happy_try_variant(sema: &Semantics, ty: &Type) -> Option<&'static str> { + let enum_ = match ty.as_adt() { + Some(Adt::Enum(it)) => it, + _ => return None, + }; + [("Result", "Ok"), ("Option", "Some")].iter().find_map(|(known_type, happy_case)| { + if &enum_.name(sema.db).to_string() == known_type { + return Some(*happy_case); + } + None + }) +} -- cgit v1.2.3