The following trivial C code fails to compile:
// redundant.c
typedef int Integer;
typedef int Integer;
redundant.c(3): Error: alias `redundant.Integer` conflicts with alias `redundant.Integer` at redundant.c(2)
Section 6.7.3 of C11 allows redundant typedefs to the same type.
This is problematic as at least on macOS there are types that are typedef’d more than once in standard headers.
The following also ought to compile (but currently does not):
// redundant2.c
typedef int Integer;
typedef Integer Int;
typedef int Int;