ItemTree: Lower fields despite invalid type

This commit is contained in:
Jonas Schievink 2020-07-01 19:24:39 +02:00
parent ad1a0e626b
commit 4ef1d533bd
2 changed files with 25 additions and 1 deletions

View File

@ -211,7 +211,7 @@ fn lower_record_fields(&mut self, fields: &ast::RecordFieldDefList) -> IdRange<F
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)
}

View File

@ -507,6 +507,30 @@ fn new(val: u32) -> Self {
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(