Added checking for completeness of lvalue in conditional operator
Given: ``` struct x y; int main(void) { (void)(1 ? y : y); } struct x {int i;}; ``` The conditional operator(?:) requires the second and third operands to be of compatible types. To be compatible, they also need to be complete (however, both can be void). Therefore, the expected response from clang after running the above code as a C program should be error dialogue pointing out that both the types are incomplete hence incompatible, but the code compiled without any errors. The patch ensures the completeness in the CheckCondtionalOperand function present in llvm-project/clang/lib/Sema/SemaChecking.cpp. Fixes https://github.com/llvm/llvm-project/issues/59718 Differential Revision: https://reviews.llvm.org/D144358
Loading
Please sign in to comment