From: Fariborz Jahanian Date: Tue, 16 Oct 2007 20:52:13 +0000 (+0000) Subject: Fix problem dumping/printing method names with null selector. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=f24d95acc1201c04b57981eb5dbada4004466881;p=clang Fix problem dumping/printing method names with null selector. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@43039 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/AST/StmtDumper.cpp b/AST/StmtDumper.cpp index bd5c615321..c2a93a6f0f 100644 --- a/AST/StmtDumper.cpp +++ b/AST/StmtDumper.cpp @@ -416,7 +416,10 @@ void StmtDumper::VisitObjCSelectorExpr(ObjCSelectorExpr *Node) { fprintf(F, "%s", selector.getIdentifierInfoForSlot(0)->getName()); else { for (unsigned i = 0, e = Node->getNumArgs(); i != e; ++i) - fprintf(F, "%s:", selector.getIdentifierInfoForSlot(i)->getName()); + if (selector.getIdentifierInfoForSlot(i)) + fprintf(F, "%s:", selector.getIdentifierInfoForSlot(i)->getName()); + else + fprintf(F, ":"); } } diff --git a/AST/StmtPrinter.cpp b/AST/StmtPrinter.cpp index 783368ef77..2db46f4e0c 100644 --- a/AST/StmtPrinter.cpp +++ b/AST/StmtPrinter.cpp @@ -627,7 +627,10 @@ void StmtPrinter::VisitObjCSelectorExpr(ObjCSelectorExpr *Node) { OS << " " << selector.getIdentifierInfoForSlot(0)->getName(); else { for (unsigned i = 0, e = Node->getNumArgs(); i != e; ++i) - OS << selector.getIdentifierInfoForSlot(i)->getName() << ":"; + if (selector.getIdentifierInfoForSlot(i)) + OS << selector.getIdentifierInfoForSlot(i)->getName() << ":"; + else + OS << ":"; } OS << ")"; } @@ -642,7 +645,10 @@ void StmtPrinter::VisitObjCMessageExpr(ObjCMessageExpr *Mess) { OS << " " << selector.getIdentifierInfoForSlot(0)->getName(); } else { for (unsigned i = 0, e = Mess->getNumArgs(); i != e; ++i) { - OS << " " << selector.getIdentifierInfoForSlot(i)->getName() << ":"; + if (selector.getIdentifierInfoForSlot(i)) + OS << selector.getIdentifierInfoForSlot(i)->getName() << ":"; + else + OS << ":"; PrintExpr(Mess->getArg(i)); } } diff --git a/Parse/ParseObjc.cpp b/Parse/ParseObjc.cpp index 2747254171..5412a6f570 100644 --- a/Parse/ParseObjc.cpp +++ b/Parse/ParseObjc.cpp @@ -1327,8 +1327,6 @@ Parser::ExprResult Parser::ParseObjCSelectorExpression() Diag(Tok, diag::err_expected_ident); // missing selector name. return 0; } - if (!SelIdent) - SelIdent = &PP.getIdentifierTable().get(""); KeyIdents.push_back(SelIdent); if (Tok.isNot(tok::r_paren)) while (1) { @@ -1342,8 +1340,6 @@ Parser::ExprResult Parser::ParseObjCSelectorExpression() // Check for another keyword selector. SourceLocation Loc; SelIdent = ParseObjCSelector(Loc); - if (!SelIdent) - SelIdent = &PP.getIdentifierTable().get(""); KeyIdents.push_back(SelIdent); if (!SelIdent && Tok.isNot(tok::colon)) break;