mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-11-15 01:17:27 +00:00
Auto merge of #13139 - Austaras:enum, r=Veykril
Suggest struct when completing enum closes #13107
This commit is contained in:
commit
4790916876
2 changed files with 43 additions and 4 deletions
|
@ -671,6 +671,45 @@ fn main() {
|
|||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn varaiant_with_struct() {
|
||||
check_empty(
|
||||
r#"
|
||||
pub struct YoloVariant {
|
||||
pub f: usize
|
||||
}
|
||||
|
||||
pub enum HH {
|
||||
Yolo(YoloVariant),
|
||||
}
|
||||
|
||||
fn brr() {
|
||||
let t = HH::Yolo(Y$0);
|
||||
}
|
||||
"#,
|
||||
expect![[r#"
|
||||
en HH
|
||||
fn brr() fn()
|
||||
st YoloVariant
|
||||
st YoloVariant {…} YoloVariant { f: usize }
|
||||
bt u32
|
||||
kw crate::
|
||||
kw false
|
||||
kw for
|
||||
kw if
|
||||
kw if let
|
||||
kw loop
|
||||
kw match
|
||||
kw return
|
||||
kw self::
|
||||
kw true
|
||||
kw unsafe
|
||||
kw while
|
||||
kw while let
|
||||
"#]],
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn return_unit_block() {
|
||||
cov_mark::check!(return_unit_block);
|
||||
|
|
|
@ -12,7 +12,7 @@ use crate::RootDatabase;
|
|||
#[derive(Debug)]
|
||||
pub struct ActiveParameter {
|
||||
pub ty: Type,
|
||||
pub pat: Either<ast::SelfParam, ast::Pat>,
|
||||
pub pat: Option<Either<ast::SelfParam, ast::Pat>>,
|
||||
}
|
||||
|
||||
impl ActiveParameter {
|
||||
|
@ -27,12 +27,12 @@ impl ActiveParameter {
|
|||
return None;
|
||||
}
|
||||
let (pat, ty) = params.swap_remove(idx);
|
||||
pat.map(|pat| ActiveParameter { ty, pat })
|
||||
Some(ActiveParameter { ty, pat })
|
||||
}
|
||||
|
||||
pub fn ident(&self) -> Option<ast::Name> {
|
||||
self.pat.as_ref().right().and_then(|param| match param {
|
||||
ast::Pat::IdentPat(ident) => ident.name(),
|
||||
self.pat.as_ref().and_then(|param| match param {
|
||||
Either::Right(ast::Pat::IdentPat(ident)) => ident.name(),
|
||||
_ => None,
|
||||
})
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue