]> granicus.if.org Git - clang/commitdiff
Attaching comments to declarations: handle using-declaration.
authorDmitri Gribenko <gribozavr@gmail.com>
Thu, 2 Aug 2012 20:49:51 +0000 (20:49 +0000)
committerDmitri Gribenko <gribozavr@gmail.com>
Thu, 2 Aug 2012 20:49:51 +0000 (20:49 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@161211 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/ASTContext.cpp
lib/Sema/SemaDeclCXX.cpp
test/Sema/warn-documentation.cpp

index 1c0c0c404de6f99d8be18aafdb627b0d10fc72cd..0ff0e35a433f8e840ed7927a3868a64ee9cdd799 100644 (file)
@@ -95,8 +95,8 @@ RawComment *ASTContext::getRawCommentForDeclNoCache(const Decl *D) const {
   SourceLocation DeclLoc;
   if (isa<ObjCMethodDecl>(D) || isa<ObjCContainerDecl>(D) ||
       isa<ObjCPropertyDecl>(D) ||
-      isa<FunctionTemplateDecl>(D) ||
-      isa<ClassTemplateDecl>(D) || isa<ClassTemplateSpecializationDecl>(D))
+      isa<RedeclarableTemplateDecl>(D) ||
+      isa<ClassTemplateSpecializationDecl>(D))
     DeclLoc = D->getLocStart();
   else
     DeclLoc = D->getLocation();
index fae0b165ceb2fcaf9ea4dd6b3eb8bda9e21673ce..35364dca7463df2edad1298a03fb96a210f000a5 100644 (file)
@@ -6649,6 +6649,7 @@ Decl *Sema::ActOnAliasDeclaration(Scope *S,
   if (!Redeclaration)
     PushOnScopeChains(NewND, S);
 
+  ActOnDocumentableDecl(NewND);
   return NewND;
 }
 
index f0813682fcf725d205cfdda5e612b4ced6f6eecd..b31e480db8c650873a75b3005b02a88d02ff01ef 100644 (file)
@@ -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}}
 /// <a href=>
@@ -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<int>;
+
 // expected-warning@+1 {{empty paragraph passed to '\brief' command}}
 /// \brief\brief Aaa
 /// \tparam T Aaa
 template<typename T, typename U>
-class test_attach29 { };
+class test_attach30 { };
 
 // expected-warning@+1 {{empty paragraph passed to '\brief' command}}
 /// \brief\brief Aaa
 /// \tparam T Aaa
 template<typename T>
-class test_attach29<T, int> { };
+class test_attach30<T, int> { };
 
 // expected-warning@+1 {{empty paragraph passed to '\brief' command}}
 /// \brief\brief Aaa
 template<>
-class test_attach29<int, int> { };
+class test_attach30<int, int> { };
+
+// expected-warning@+1 {{empty paragraph passed to '\brief' command}}
+/// \brief\brief Aaa
+template<typename T>
+using test_attach31 = test_attach30<T, int>;
 
 // expected-warning@+1 {{empty paragraph passed to '\brief' command}}
 /// \brief\brief Aaa
 /// \tparam T Aaa
 template<typename T, typename U, typename V>
-class test_attach30 { };
+class test_attach32 { };
 
 // expected-warning@+1 {{empty paragraph passed to '\brief' command}}
 /// \brief\brief Aaa
 /// \tparam T Aaa
 template<typename T, typename U>
-class test_attach30<T, U, int> { };
+class test_attach32<T, U, int> { };
 
 // expected-warning@+1 {{empty paragraph passed to '\brief' command}}
 /// \brief\brief Aaa
 /// \tparam T Aaa
 template<typename T>
-class test_attach30<T, int, int> { };
+class test_attach32<T, int, int> { };
 
 // 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<int, int, int> { };
+class test_attach32<int, int, int> { };
 
 // 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<typename T, typename U>
-  void test_attach32(T aaa, U bbb);
+  void test_attach34(T aaa, U bbb);
 };
 
 template<typename T>
-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<typename TT, typename UU>
-  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<int>::test_attach34(int aaa, int bbb) {}
+void test_attach35<int>::test_attach36(int aaa, int bbb) {}
 
 template<typename T>
-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<typename T>
-void test_attach35<T>::test_attach36(int aaa, int bbb) {}
+void test_attach37<T>::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<int>::test_attach36(int aaa, int bbb) {}
+void test_attach37<int>::test_attach38(int aaa, int bbb) {}
 
 
 // PR13411, reduced.  We used to crash on this.