mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-26 13:03:31 +00:00
Merge #5179
5179: ItemTree: Lower fields despite invalid type r=jonas-schievink a=jonas-schievink Fixes https://github.com/rust-analyzer/rust-analyzer/issues/5147 bors r+ Co-authored-by: Jonas Schievink <jonas.schievink@ferrous-systems.com>
This commit is contained in:
commit
ec1d1a1b70
2 changed files with 25 additions and 1 deletions
|
@ -211,7 +211,7 @@ impl Ctx {
|
|||
fn lower_record_field(&mut self, field: &ast::RecordFieldDef) -> Option<Field> {
|
||||
let name = field.name()?.as_name();
|
||||
let visibility = self.lower_visibility(field);
|
||||
let type_ref = self.lower_type_ref(&field.ascribed_type()?);
|
||||
let type_ref = self.lower_type_ref_opt(field.ascribed_type());
|
||||
let res = Field { name, type_ref, visibility };
|
||||
Some(res)
|
||||
}
|
||||
|
|
|
@ -507,6 +507,30 @@ fn no_such_field_with_feature_flag_diagnostics_on_struct_fields() {
|
|||
assert_snapshot!(diagnostics, @r###""###);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn no_such_field_with_type_macro() {
|
||||
let diagnostics = TestDB::with_files(
|
||||
r"
|
||||
macro_rules! Type {
|
||||
() => { u32 };
|
||||
}
|
||||
|
||||
struct Foo {
|
||||
bar: Type![],
|
||||
}
|
||||
impl Foo {
|
||||
fn new() -> Self {
|
||||
Foo { bar: 0 }
|
||||
}
|
||||
}
|
||||
",
|
||||
)
|
||||
.diagnostics()
|
||||
.0;
|
||||
|
||||
assert_snapshot!(diagnostics, @r###""###);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn missing_record_pat_field_diagnostic() {
|
||||
let diagnostics = TestDB::with_files(
|
||||
|
|
Loading…
Reference in a new issue