diff options
author | Volodymyr Sapsai <vsapsai@apple.com> | 2022-12-13 21:25:47 -0800 |
---|---|---|
committer | Volodymyr Sapsai <vsapsai@apple.com> | 2023-01-20 10:18:18 -0600 |
commit | ed7a46a8de77087447936965044e2faf734102e5 (patch) | |
tree | 51052475a270609cd1c1e25277cb0d103c60afa9 /clang/lib/Basic/Builtins.cpp | |
parent | 6ba4afb4d6f2f8f293ad704a37de4139c5c8c0f0 (diff) | |
download | llvm-ed7a46a8de77087447936965044e2faf734102e5.zip llvm-ed7a46a8de77087447936965044e2faf734102e5.tar.gz llvm-ed7a46a8de77087447936965044e2faf734102e5.tar.bz2 |
[modules] Allow parsing a duplicate Obj-C interface if a previous one comes from a hidden [sub]module.
Instead of emitting a redefinition error, check that definitions are
equivalent and allow such scenario.
A few non-obvious implementation details:
* to avoid multiple definitions in the redeclaration chain we just drop
the new definition after checking for equivalence;
* for checking definition equivalence use ODR hash instead of
ASTStructuralEquivalence because it avoids excessive recursive
deserialization. Though after detecting a mismatch we do deserialize
multiple entities to provide a better error message.
rdar://82908223
Differential Revision: https://reviews.llvm.org/D124286
Diffstat (limited to 'clang/lib/Basic/Builtins.cpp')
0 files changed, 0 insertions, 0 deletions