Merge pull request #19657 from ChayimFriedman2/better-offset-of

feat: Better support `offset_of!()`
This commit is contained in:
Lukas Wirth 2025-04-22 13:28:34 +00:00 committed by GitHub
commit 1c68d83569
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 230 additions and 3 deletions

View file

@ -839,6 +839,14 @@ impl NameRefClass {
ast::AsmRegSpec(_) => {
Some(NameRefClass::Definition(Definition::InlineAsmRegOrRegClass(()), None))
},
ast::OffsetOfExpr(_) => {
let (def, subst) = sema.resolve_offset_of_field(name_ref)?;
let def = match def {
Either::Left(variant) => Definition::Variant(variant),
Either::Right(field) => Definition::Field(field),
};
Some(NameRefClass::Definition(def, Some(subst)))
},
_ => None
}
}