mirror of
https://github.com/rust-lang/rust-analyzer
synced 2025-01-15 22:54:00 +00:00
Auto merge of #15363 - HKalbasi:mir, r=HKalbasi
Support `Self` without field in mir lowering
This commit is contained in:
commit
429a3816ad
2 changed files with 45 additions and 4 deletions
|
@ -613,6 +613,50 @@ fn main() {
|
|||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn self_with_capital_s() {
|
||||
check_pass(
|
||||
r#"
|
||||
//- minicore: fn, add, copy
|
||||
|
||||
struct S1;
|
||||
|
||||
impl S1 {
|
||||
fn f() {
|
||||
Self;
|
||||
}
|
||||
}
|
||||
|
||||
struct S2 {
|
||||
f1: i32,
|
||||
}
|
||||
|
||||
impl S2 {
|
||||
fn f() {
|
||||
Self { f1: 5 };
|
||||
}
|
||||
}
|
||||
|
||||
struct S3(i32);
|
||||
|
||||
impl S3 {
|
||||
fn f() {
|
||||
Self(2);
|
||||
Self;
|
||||
let this = Self;
|
||||
this(2);
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
S1::f();
|
||||
S2::f();
|
||||
S3::f();
|
||||
}
|
||||
"#,
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn syscalls() {
|
||||
check_pass(
|
||||
|
|
|
@ -486,13 +486,10 @@ impl<'ctx> MirLowerCtx<'ctx> {
|
|||
);
|
||||
Ok(Some(current))
|
||||
}
|
||||
ValueNs::FunctionId(_) | ValueNs::StructId(_) => {
|
||||
ValueNs::FunctionId(_) | ValueNs::StructId(_) | ValueNs::ImplSelf(_) => {
|
||||
// It's probably a unit struct or a zero sized function, so no action is needed.
|
||||
Ok(Some(current))
|
||||
}
|
||||
it => {
|
||||
not_supported!("unknown name {it:?} in value name space");
|
||||
}
|
||||
}
|
||||
}
|
||||
Expr::If { condition, then_branch, else_branch } => {
|
||||
|
|
Loading…
Reference in a new issue