Differentiate between whether the name for an extern decl came from the link_name attribute or
just from declaration itself. This is important because we donβt want to report clashes on
symbol name if they donβt actually clash because one or the other links against a symbol with a
different name.
Get the name of the symbol thatβs linked against for a given extern declaration. That is,
the name specified in a #[link_name = β¦] attribute if one was specified, else, just the
symbolβs name.
Checks whether two types are structurally the same enough that the declarations shouldnβt
clash. We need this so we donβt emit a lint when two modules both declare an extern struct,
with the same members (as the declarations shouldnβt clash).