c++: make trait of incomplete type a permerror [PR109277]
commitf32f7881fb0db085479525b5a23db5dabd990c3b
authorJason Merrill <jason@redhat.com>
Tue, 4 Apr 2023 03:20:13 +0000 (3 23:20 -0400)
committerJason Merrill <jason@redhat.com>
Thu, 13 Apr 2023 18:59:31 +0000 (13 14:59 -0400)
tree9c687d279c56460fd9745b892383a15c38f6416f
parentfdb8c06b3d6c1ec5fb517ce7d1a88ab1d8ec7958
c++: make trait of incomplete type a permerror [PR109277]

An incomplete type argument to several traits is specified to be undefined
behavior in the library; since it's a compile-time property, we diagnose
it.  But apparently some code was relying on the previous behavior of not
diagnosing.  So let's make it a permerror.

The assert in cxx_incomplete_type_diagnostic didn't like that, and I don't
see the point of having the assert, so let's just remove it.

PR c++/109277

gcc/cp/ChangeLog:

* semantics.cc (check_trait_type): Handle incomplete type directly.
* typeck2.cc (cxx_incomplete_type_diagnostic): Remove assert.

gcc/testsuite/ChangeLog:

* g++.dg/ext/is_convertible5.C: New test.
gcc/cp/semantics.cc
gcc/cp/typeck2.cc
gcc/testsuite/g++.dg/ext/is_convertible5.C [new file with mode: 0644]