]> granicus.if.org Git - clang/commit
Migrate the mish-mash of declaration checks in
authorDouglas Gregor <dgregor@apple.com>
Tue, 9 Feb 2010 07:26:29 +0000 (07:26 +0000)
committerDouglas Gregor <dgregor@apple.com>
Tue, 9 Feb 2010 07:26:29 +0000 (07:26 +0000)
commit60c93c9981c467738369702e7aa23fd58c2b6aac
tree000ea6f5bcb57d9b67ccc62b86ad426ea7cb15ba
parent195337d2e5d4625ae9dc1328c7cdbc7115b0261b
Migrate the mish-mash of declaration checks in
Sema::ActOnUninitializedDecl over to InitializationSequence (with
default initialization), eliminating redundancy. More importantly, we
now check that a const definition in C++ has an initilizer, which was
an #if 0'd code for many, many months. A few other tweaks were needed
to get everything working again:

  - Fix all of the places in the testsuite where we defined const
    objects without initializers (now that we diagnose this issue)
  - Teach instantiation of static data members to find the previous
    declaration, so that we build proper redeclaration
    chains. Previously, we had the redeclaration chain but built it
    too late to be useful, because...
  - Teach instantiation of static data member definitions not to try
    to check an initializer if a previous declaration already had an
    initializer. This makes sure that we don't complain about static
    const data members with in-class initializers and out-of-line
    definitions.
  - Move all of the incomplete-type checking logic out of
    Sema::FinalizeDeclaratorGroup; it makes more sense in
    ActOnUnitializedDecl.

There may still be a few places where we can improve these
diagnostics. I'll address that as a separate commit.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@95657 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Sema/SemaDecl.cpp
lib/Sema/SemaInit.cpp
lib/Sema/SemaTemplateInstantiateDecl.cpp
test/CXX/dcl.decl/dcl.init/p6.cpp
test/CXX/expr/p8.cpp
test/CXX/temp/temp.decls/temp.mem/p5.cpp
test/Sema/incomplete-decl.c
test/SemaCXX/cast-conversion.cpp
test/SemaCXX/dcl_ambig_res.cpp
test/SemaTemplate/instantiate-declref-ice.cpp
test/SemaTemplate/instantiate-expr-4.cpp