diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index 1c0c0c404de6..0ff0e35a433f 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -95,8 +95,8 @@ RawComment *ASTContext::getRawCommentForDeclNoCache(const Decl *D) const { SourceLocation DeclLoc; if (isa(D) || isa(D) || isa(D) || - isa(D) || - isa(D) || isa(D)) + isa(D) || + isa(D)) DeclLoc = D->getLocStart(); else DeclLoc = D->getLocation(); diff --git a/clang/lib/Sema/SemaDeclCXX.cpp b/clang/lib/Sema/SemaDeclCXX.cpp index fae0b165ceb2..35364dca7463 100644 --- a/clang/lib/Sema/SemaDeclCXX.cpp +++ b/clang/lib/Sema/SemaDeclCXX.cpp @@ -6649,6 +6649,7 @@ Decl *Sema::ActOnAliasDeclaration(Scope *S, if (!Redeclaration) PushOnScopeChains(NewND, S); + ActOnDocumentableDecl(NewND); return NewND; } diff --git a/clang/test/Sema/warn-documentation.cpp b/clang/test/Sema/warn-documentation.cpp index f0813682fcf7..b31e480db8c6 100644 --- a/clang/test/Sema/warn-documentation.cpp +++ b/clang/test/Sema/warn-documentation.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fsyntax-only -Wdocumentation -Wdocumentation-pedantic -verify %s +// RUN: %clang_cc1 -std=c++11 -fsyntax-only -Wdocumentation -Wdocumentation-pedantic -verify %s // expected-warning@+1 {{expected quoted string after equals sign}} /// @@ -387,66 +387,75 @@ class test_attach28 { T aaa; }; +// expected-warning@+1 {{empty paragraph passed to '\brief' command}} +/// \brief\brief Aaa +using test_attach29 = test_attach28; + // expected-warning@+1 {{empty paragraph passed to '\brief' command}} /// \brief\brief Aaa /// \tparam T Aaa template -class test_attach29 { }; - -// expected-warning@+1 {{empty paragraph passed to '\brief' command}} -/// \brief\brief Aaa -/// \tparam T Aaa -template -class test_attach29 { }; - -// expected-warning@+1 {{empty paragraph passed to '\brief' command}} -/// \brief\brief Aaa -template<> -class test_attach29 { }; - -// expected-warning@+1 {{empty paragraph passed to '\brief' command}} -/// \brief\brief Aaa -/// \tparam T Aaa -template class test_attach30 { }; +// expected-warning@+1 {{empty paragraph passed to '\brief' command}} +/// \brief\brief Aaa +/// \tparam T Aaa +template +class test_attach30 { }; + +// expected-warning@+1 {{empty paragraph passed to '\brief' command}} +/// \brief\brief Aaa +template<> +class test_attach30 { }; + +// expected-warning@+1 {{empty paragraph passed to '\brief' command}} +/// \brief\brief Aaa +template +using test_attach31 = test_attach30; + +// expected-warning@+1 {{empty paragraph passed to '\brief' command}} +/// \brief\brief Aaa +/// \tparam T Aaa +template +class test_attach32 { }; + // expected-warning@+1 {{empty paragraph passed to '\brief' command}} /// \brief\brief Aaa /// \tparam T Aaa template -class test_attach30 { }; +class test_attach32 { }; // expected-warning@+1 {{empty paragraph passed to '\brief' command}} /// \brief\brief Aaa /// \tparam T Aaa template -class test_attach30 { }; +class test_attach32 { }; // expected-warning@+2 {{empty paragraph passed to '\brief' command}} // expected-warning@+2 {{template parameter 'T' not found in the template declaration}} /// \brief\brief Aaa /// \tparam T Aaa template<> -class test_attach30 { }; +class test_attach32 { }; // expected-warning@+1 {{empty paragraph passed to '\brief' command}} /// \brief\brief Aaa -class test_attach31 { +class test_attach33 { // expected-warning@+1 {{empty paragraph passed to '\brief' command}} /// \brief\brief Aaa /// \tparam T Aaa template - void test_attach32(T aaa, U bbb); + void test_attach34(T aaa, U bbb); }; template -class test_attach33 { +class test_attach35 { // expected-warning@+2 {{empty paragraph passed to '\brief' command}} // expected-warning@+2 {{template parameter 'T' not found in the template declaration}} /// \brief\brief Aaa /// \tparam T Aaa template - void test_attach34(TT aaa, UU bbb); + void test_attach36(TT aaa, UU bbb); }; // expected-warning@+2 {{empty paragraph passed to '\brief' command}} @@ -454,29 +463,29 @@ class test_attach33 { /// \brief\brief Aaa /// \tparam T Aaa template<> template<> -void test_attach33::test_attach34(int aaa, int bbb) {} +void test_attach35::test_attach36(int aaa, int bbb) {} template -class test_attach35 { +class test_attach37 { // expected-warning@+2 {{empty paragraph passed to '\brief' command}} // expected-warning@+2 {{'\tparam' command used in a comment that is not attached to a template declaration}} /// \brief\brief Aaa /// \tparam T Aaa - void test_attach36(int aaa, int bbb); + void test_attach38(int aaa, int bbb); }; // expected-warning@+1 {{empty paragraph passed to '\brief' command}} /// \brief\brief Aaa /// \tparam T Aaa template -void test_attach35::test_attach36(int aaa, int bbb) {} +void test_attach37::test_attach38(int aaa, int bbb) {} // expected-warning@+2 {{empty paragraph passed to '\brief' command}} // expected-warning@+2 {{template parameter 'T' not found in the template declaration}} /// \brief\brief Aaa /// \tparam T Aaa template<> -void test_attach35::test_attach36(int aaa, int bbb) {} +void test_attach37::test_attach38(int aaa, int bbb) {} // PR13411, reduced. We used to crash on this.