Deleted Added
full compact
21a22
> #include "clang/AST/ExprCXX.h"
93a95,122
> Expr *ParmVarDecl::getDefaultArg() {
> assert(!hasUnparsedDefaultArg() && "Default argument is not yet parsed!");
> assert(!hasUninstantiatedDefaultArg() &&
> "Default argument is not yet instantiated!");
>
> Expr *Arg = getInit();
> if (CXXExprWithTemporaries *E = dyn_cast_or_null<CXXExprWithTemporaries>(Arg))
> return E->getSubExpr();
>
> return Arg;
> }
>
> unsigned ParmVarDecl::getNumDefaultArgTemporaries() const {
> if (const CXXExprWithTemporaries *E =
> dyn_cast<CXXExprWithTemporaries>(getInit()))
> return E->getNumTemporaries();
>
> return 0;
> }
>
> CXXTemporary *ParmVarDecl::getDefaultArgTemporary(unsigned i) {
> assert(getNumDefaultArgTemporaries() &&
> "Default arguments does not have any temporaries!");
>
> CXXExprWithTemporaries *E = cast<CXXExprWithTemporaries>(getInit());
> return E->getTemporary(i);
> }
>
185a215,217
> // Anchor TypedefDecl's vtable here.
> TypedefDecl::~TypedefDecl() {}
>
429,433d460
< if (Ctx->isFunctionOrMethod())
< // FIXME: That probably will happen, when D was member of local
< // scope class/struct/union. How do we handle this case?
< break;
<
442a470,511
> } else if (const NamespaceDecl *ND = dyn_cast<NamespaceDecl>(Ctx)) {
> if (ND->isAnonymousNamespace())
> Names.push_back("<anonymous namespace>");
> else
> Names.push_back(ND->getNameAsString());
> } else if (const RecordDecl *RD = dyn_cast<RecordDecl>(Ctx)) {
> if (!RD->getIdentifier()) {
> std::string RecordString = "<anonymous ";
> RecordString += RD->getKindName();
> RecordString += ">";
> Names.push_back(RecordString);
> } else {
> Names.push_back(RD->getNameAsString());
> }
> } else if (const FunctionDecl *FD = dyn_cast<FunctionDecl>(Ctx)) {
> std::string Proto = FD->getNameAsString();
>
> const FunctionProtoType *FT = 0;
> if (FD->hasWrittenPrototype())
> FT = dyn_cast<FunctionProtoType>(FD->getType()->getAs<FunctionType>());
>
> Proto += "(";
> if (FT) {
> llvm::raw_string_ostream POut(Proto);
> unsigned NumParams = FD->getNumParams();
> for (unsigned i = 0; i < NumParams; ++i) {
> if (i)
> POut << ", ";
> std::string Param;
> FD->getParamDecl(i)->getType().getAsStringInternal(Param, P);
> POut << Param;
> }
>
> if (FT->isVariadic()) {
> if (NumParams > 0)
> POut << ", ";
> POut << "...";
> }
> }
> Proto += ")";
>
> Names.push_back(Proto);