diff options
author | rdivacky <rdivacky@FreeBSD.org> | 2010-03-10 17:45:58 +0000 |
---|---|---|
committer | rdivacky <rdivacky@FreeBSD.org> | 2010-03-10 17:45:58 +0000 |
commit | 27c39af73c0d7d0b97e57b3a905040d4cefc9708 (patch) | |
tree | 56c1dd85a159948815817b5a90bedb39cf9ad105 /lib/AST/Expr.cpp | |
parent | d2e6cf1d1c6468396ec057119c32aa58b1ee5ac9 (diff) | |
download | FreeBSD-src-27c39af73c0d7d0b97e57b3a905040d4cefc9708.zip FreeBSD-src-27c39af73c0d7d0b97e57b3a905040d4cefc9708.tar.gz |
Update clang to r98164.
Diffstat (limited to 'lib/AST/Expr.cpp')
-rw-r--r-- | lib/AST/Expr.cpp | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp index a2914bc..efd0fd1 100644 --- a/lib/AST/Expr.cpp +++ b/lib/AST/Expr.cpp @@ -181,7 +181,6 @@ std::string PredefinedExpr::ComputeName(IdentType IT, const Decl *CurrentDecl) { } PrintingPolicy Policy(Context.getLangOptions()); - Policy.SuppressTagKind = true; std::string Proto = FD->getQualifiedNameAsString(Policy); @@ -2115,12 +2114,12 @@ ObjCMessageExpr::ObjCMessageExpr(ASTContext &C, Expr *receiver, // constructor for class messages. // FIXME: clsName should be typed to ObjCInterfaceType ObjCMessageExpr::ObjCMessageExpr(ASTContext &C, IdentifierInfo *clsName, - Selector selInfo, QualType retType, - ObjCMethodDecl *mproto, + SourceLocation clsNameLoc, Selector selInfo, + QualType retType, ObjCMethodDecl *mproto, SourceLocation LBrac, SourceLocation RBrac, Expr **ArgExprs, unsigned nargs) - : Expr(ObjCMessageExprClass, retType, false, false), SelName(selInfo), - MethodProto(mproto) { + : Expr(ObjCMessageExprClass, retType, false, false), ClassNameLoc(clsNameLoc), + SelName(selInfo), MethodProto(mproto) { NumArgs = nargs; SubExprs = new (C) Stmt*[NumArgs+1]; SubExprs[RECEIVER] = (Expr*) ((uintptr_t) clsName | IsClsMethDeclUnknown); @@ -2134,12 +2133,14 @@ ObjCMessageExpr::ObjCMessageExpr(ASTContext &C, IdentifierInfo *clsName, // constructor for class messages. ObjCMessageExpr::ObjCMessageExpr(ASTContext &C, ObjCInterfaceDecl *cls, - Selector selInfo, QualType retType, + SourceLocation clsNameLoc, Selector selInfo, + QualType retType, ObjCMethodDecl *mproto, SourceLocation LBrac, SourceLocation RBrac, Expr **ArgExprs, unsigned nargs) -: Expr(ObjCMessageExprClass, retType, false, false), SelName(selInfo), -MethodProto(mproto) { + : Expr(ObjCMessageExprClass, retType, false, false), ClassNameLoc(clsNameLoc), + SelName(selInfo), MethodProto(mproto) +{ NumArgs = nargs; SubExprs = new (C) Stmt*[NumArgs+1]; SubExprs[RECEIVER] = (Expr*) ((uintptr_t) cls | IsClsMethDeclKnown); @@ -2157,23 +2158,27 @@ ObjCMessageExpr::ClassInfo ObjCMessageExpr::getClassInfo() const { default: assert(false && "Invalid ObjCMessageExpr."); case IsInstMeth: - return ClassInfo(0, 0); + return ClassInfo(0, 0, SourceLocation()); case IsClsMethDeclUnknown: - return ClassInfo(0, (IdentifierInfo*) (x & ~Flags)); + return ClassInfo(0, (IdentifierInfo*) (x & ~Flags), ClassNameLoc); case IsClsMethDeclKnown: { ObjCInterfaceDecl* D = (ObjCInterfaceDecl*) (x & ~Flags); - return ClassInfo(D, D->getIdentifier()); + return ClassInfo(D, D->getIdentifier(), ClassNameLoc); } } } void ObjCMessageExpr::setClassInfo(const ObjCMessageExpr::ClassInfo &CI) { - if (CI.first == 0 && CI.second == 0) + if (CI.Decl == 0 && CI.Name == 0) { SubExprs[RECEIVER] = (Expr*)((uintptr_t)0 | IsInstMeth); - else if (CI.first == 0) - SubExprs[RECEIVER] = (Expr*)((uintptr_t)CI.second | IsClsMethDeclUnknown); + return; + } + + if (CI.Decl == 0) + SubExprs[RECEIVER] = (Expr*)((uintptr_t)CI.Name | IsClsMethDeclUnknown); else - SubExprs[RECEIVER] = (Expr*)((uintptr_t)CI.first | IsClsMethDeclKnown); + SubExprs[RECEIVER] = (Expr*)((uintptr_t)CI.Decl | IsClsMethDeclKnown); + ClassNameLoc = CI.Loc; } void ObjCMessageExpr::DoDestroy(ASTContext &C) { |