Przeglądaj źródła

Revert r184249, "doc. parsing: Allow parameter name "..." for variadic functions/methods."

It crashes in the case;

/// Without any "param"s in the description.
int printf(const char *format, ...);

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@184283 91177308-0d34-0410-b5e6-96231b3b80d8
NAKAMURA Takumi 12 lat temu
rodzic
commit
b0f9314bbe

+ 0 - 1
include/clang/AST/CommentSema.h

@@ -220,7 +220,6 @@ public:
   bool isUnionDecl();
   bool isObjCInterfaceDecl();
   bool isObjCProtocolDecl();
-  bool isFunctionOrMethodVariadic();
 
   ArrayRef<const ParmVarDecl *> getParamVars();
 

+ 1 - 15
lib/AST/CommentSema.cpp

@@ -720,7 +720,7 @@ void Sema::resolveParamCommandIndexes(const FullComment *FC) {
   SmallVector<ParamCommandComment *, 8> ParamVarDocs;
 
   ArrayRef<const ParmVarDecl *> ParamVars = getParamVars();
-  ParamVarDocs.resize(ParamVars.size() + isFunctionOrMethodVariadic(), NULL);
+  ParamVarDocs.resize(ParamVars.size(), NULL);
 
   // First pass over all \\param commands: resolve all parameter names.
   for (Comment::child_iterator I = FC->child_begin(), E = FC->child_end();
@@ -808,18 +808,6 @@ bool Sema::isObjCMethodDecl() {
   return isFunctionDecl() && ThisDeclInfo->CurrentDecl &&
          isa<ObjCMethodDecl>(ThisDeclInfo->CurrentDecl);
 }
-
-bool Sema::isFunctionOrMethodVariadic() {
-  if (!isAnyFunctionDecl() && !isObjCMethodDecl())
-    return false;
-  if (const FunctionDecl *FD = 
-        dyn_cast<FunctionDecl>(ThisDeclInfo->CurrentDecl))
-    return FD->isVariadic();
-  if (const ObjCMethodDecl *MD = 
-        dyn_cast<ObjCMethodDecl>(ThisDeclInfo->CurrentDecl))
-    return MD->isVariadic();
-  return false;
-}
   
 /// isFunctionPointerVarDecl - returns 'true' if declaration is a pointer to
 /// function decl.
@@ -918,8 +906,6 @@ unsigned Sema::resolveParmVarReference(StringRef Name,
     if (II && II->getName() == Name)
       return i;
   }
-  if (Name == "..." && isFunctionOrMethodVariadic())
-    return ParamVars.size();
   return ParamCommandComment::InvalidParamIndex;
 }
 

+ 0 - 19
test/Sema/warn-documentation.m

@@ -215,22 +215,3 @@ int FooBar();
 /// \brief comment
 -(void)meth {}
 @end
-
-// rdar://14124644
-@interface rdar14124644
-/// @param[in] arg somthing
-/// @param[in] ... This is vararg
-- (void) VarArgMeth : (id)arg, ...;
-@end
-
-@implementation rdar14124644
-/// @param[in] arg somthing
-/// @param[in] ... This is vararg
-- (void) VarArgMeth : (id)arg, ... {}
-@end
-
-/// @param[in] format somthing
-/// @param[in] ...
-///     Variable arguments that are needed for the printf style
-///     format string \a format.
-int printf(const char* format, ...);