[clang] Fix diagnostics for defaulted, implicitly deleted 'operator=='.
authorAmirreza Ashouri <ar.ashouri999@gmail.com>
Sun, 23 Jul 2023 08:40:48 +0000 (10:40 +0200)
committerCorentin Jabot <corentinjabot@gmail.com>
Sun, 23 Jul 2023 08:58:17 +0000 (10:58 +0200)
commit02bb2beeef3d93360694de29573430f584caafe9
tree60cd60b95cc0935ce96627354ac08190da86e100
parent142bfaff7e7bbb768b5f22b3b14691b5ce3615f9
[clang] Fix diagnostics for defaulted, implicitly deleted 'operator=='.

https://godbolt.org/z/cMKE3o1aG

According to the issue https://github.com/llvm/llvm-project/issues/63960 , compiler falsely complains that no viable `operator<=>` was found while we are actually looking for a `operator==`.
This bug has been fixed through adding a check of the `OverloadedOperatorKind` type's object, `OO`, to see if it is `OO_EqualEqual` in addition to `OO_ExclaimEqual`.

Reviewed By: #clang-language-wg, cor3ntin

Differential Revision: https://reviews.llvm.org/D155714
clang/docs/ReleaseNotes.rst
clang/lib/Sema/SemaDeclCXX.cpp
clang/test/CXX/class/class.compare/class.compare.default/p1.cpp
clang/test/CXX/class/class.compare/class.compare.default/p4.cpp
clang/test/CXX/class/class.compare/class.compare.secondary/p2.cpp
clang/test/CXX/class/class.compare/class.eq/p2.cpp
clang/test/CXX/class/class.compare/class.spaceship/p1.cpp