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, ...);

llvm-svn: 184283
This commit is contained in:
NAKAMURA Takumi 2013-06-19 06:58:14 +00:00
parent e98da7f548
commit dc2e2fb9ce
3 changed files with 1 additions and 35 deletions

View File

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

View File

@ -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;
}

View File

@ -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, ...);