]> granicus.if.org Git - clang/commit
Extract a function to impose the completeness requirement on unary type
authorChandler Carruth <chandlerc@gmail.com>
Sat, 30 Apr 2011 10:07:32 +0000 (10:07 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Sat, 30 Apr 2011 10:07:32 +0000 (10:07 +0000)
commiteb65a108bd1eb613ed2a9ebfdbd73a9c872f0309
treeebbf8f7e05818f34e0ebdf18f115c02844a52034
parentec997dc66627957bcdcd3db7906a68c1e14a279c
Extract a function to impose the completeness requirement on unary type
trait arguments. Reflow the logic to use early exit instead of a complex
condition expression. Switch to a switch for acting on different type
traits and add a bunch of the recently implemented type traits here.
This fixes one of the regressions with the new __is_standard_layout
trait to again require a complete type. It also fixes some latent bugs
in other traits that never did impose this despite the standard
requiring it. However, all these bugs were hidden for non-borland
systems where the default is to require a complete type.

It's unclear to me what the best approach here is: providing an explicit
lists for the ones requiring complete types only w/ Borland and using
a default for the rest, or forcing this switch to enumerate the traits
and make it clear which way each one goes.

I'm still working on cleaning up the tests so that they actually catch
this, a much more comprehensive update to the tests will come once I've
worked through the bugs I'm finding via inspection.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@130604 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Sema/SemaExprCXX.cpp