Fixtype of validation information about identifiers with external linkage.
This is a product type introduced by fty::defprod.
We store the following information about identifiers with external linkage for the purpose of validation across unrelated scopes and across different translation units (by ``unrelated,'' we mean neither scope is nested within the other).
Each declaration of a given identifier with external linkage must agree on the type [C17:6.2.2/2] [C17:6.2.7/2]. Therefore, we store the type to check type compatibility of any declaration after the first.
We also store the set of translation units (represented by their filepaths) in which the identifier has been declared. This is used to ensure the same identifier has not been declared with both internal and external linkage in the same translation unit [C17:6.2.2/7].
Finally, we store a unique identifier for the object. All identifiers of the same name with external linkage refer to the same object and therefore possess the same unique identifier.
Eventually, we may wish to store a boolean flag indicating whether the identifier has been externally defined. This would be used to ensure that externally linked identifiers are defined at most once (or exactly once, if the identifier is used in an expression) [C17:6.9/5]. For now, we conservatively allow any number of definitions.