mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 20:42:04 +00:00
complete full struct in enum varaint
This commit is contained in:
parent
67920f7975
commit
748567cba5
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]
|
#[test]
|
||||||
fn return_unit_block() {
|
fn return_unit_block() {
|
||||||
cov_mark::check!(return_unit_block);
|
cov_mark::check!(return_unit_block);
|
||||||
|
|
|
@ -12,7 +12,7 @@ use crate::RootDatabase;
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct ActiveParameter {
|
pub struct ActiveParameter {
|
||||||
pub ty: Type,
|
pub ty: Type,
|
||||||
pub pat: Either<ast::SelfParam, ast::Pat>,
|
pub pat: Option<Either<ast::SelfParam, ast::Pat>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ActiveParameter {
|
impl ActiveParameter {
|
||||||
|
@ -27,12 +27,12 @@ impl ActiveParameter {
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
let (pat, ty) = params.swap_remove(idx);
|
let (pat, ty) = params.swap_remove(idx);
|
||||||
pat.map(|pat| ActiveParameter { ty, pat })
|
Some(ActiveParameter { ty, pat })
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn ident(&self) -> Option<ast::Name> {
|
pub fn ident(&self) -> Option<ast::Name> {
|
||||||
self.pat.as_ref().right().and_then(|param| match param {
|
self.pat.as_ref().and_then(|param| match param {
|
||||||
ast::Pat::IdentPat(ident) => ident.name(),
|
Either::Right(ast::Pat::IdentPat(ident)) => ident.name(),
|
||||||
_ => None,
|
_ => None,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue