mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 12:29:21 +00:00
refactoring
This commit is contained in:
parent
61cabe029f
commit
e4c45427dc
6 changed files with 35 additions and 34 deletions
|
@ -1,31 +1,29 @@
|
|||
//! Functionality for generating trivial constructors
|
||||
|
||||
use hir::StructKind;
|
||||
use syntax::ast;
|
||||
use syntax::ast::{make, Expr, Path};
|
||||
|
||||
/// given a type return the trivial constructor (if one exists)
|
||||
pub fn use_trivial_constructor(
|
||||
db: &crate::RootDatabase,
|
||||
path: ast::Path,
|
||||
path: Path,
|
||||
ty: &hir::Type,
|
||||
) -> Option<ast::Expr> {
|
||||
) -> Option<Expr> {
|
||||
match ty.as_adt() {
|
||||
Some(hir::Adt::Enum(x)) => {
|
||||
if let &[variant] = &*x.variants(db) {
|
||||
if variant.kind(db) == hir::StructKind::Unit {
|
||||
let path = ast::make::path_qualified(
|
||||
let path = make::path_qualified(
|
||||
path,
|
||||
syntax::ast::make::path_segment(ast::make::name_ref(
|
||||
&variant.name(db).to_smol_str(),
|
||||
)),
|
||||
make::path_segment(make::name_ref(&variant.name(db).to_smol_str())),
|
||||
);
|
||||
|
||||
return Some(syntax::ast::make::expr_path(path));
|
||||
return Some(make::expr_path(path));
|
||||
}
|
||||
}
|
||||
}
|
||||
Some(hir::Adt::Struct(x)) if x.kind(db) == StructKind::Unit => {
|
||||
return Some(syntax::ast::make::expr_path(path));
|
||||
return Some(make::expr_path(path));
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue