]> granicus.if.org Git - clang/commit
Type::isObjectType now implements the (more sensible) C++ definition
authorDouglas Gregor <dgregor@apple.com>
Tue, 24 Mar 2009 20:32:41 +0000 (20:32 +0000)
committerDouglas Gregor <dgregor@apple.com>
Tue, 24 Mar 2009 20:32:41 +0000 (20:32 +0000)
commitbad0e656c3732e3539a9cd6525de721d7e47408b
tree3f18b5b2a5688527adfa4e9227922b7144b91151
parent337a6271b98c4c183f7eaad1563a75260b4f2871
Type::isObjectType now implements the (more sensible) C++ definition
of "object type" rather than the C definition of "object type". The
difference is that C's "object type" excludes incomplete types such as

  struct X;

However, C's definition also makes it far too easy to use isObjectType
as a means to detect incomplete types when in fact we should use other
means (e.g., Sema::RequireCompleteType) that cope with C++ semantics,
including template instantiation.

I've already audited every use of isObjectType and isIncompleteType to
ensure that they are doing the right thing for both C and C++, so this
is patch does not change any functionality.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67648 91177308-0d34-0410-b5e6-96231b3b80d8
include/clang/AST/Type.h
lib/AST/Type.cpp
lib/Sema/SemaOverload.cpp
lib/Sema/SemaTemplate.cpp
lib/Sema/SemaType.cpp