Fix problem dumping/printing method names with null selector.
llvm-svn: 43039
This commit is contained in:
parent
4bef462a3e
commit
81ccd88f0e
|
|
@ -416,7 +416,10 @@ void StmtDumper::VisitObjCSelectorExpr(ObjCSelectorExpr *Node) {
|
||||||
fprintf(F, "%s", selector.getIdentifierInfoForSlot(0)->getName());
|
fprintf(F, "%s", selector.getIdentifierInfoForSlot(0)->getName());
|
||||||
else {
|
else {
|
||||||
for (unsigned i = 0, e = Node->getNumArgs(); i != e; ++i)
|
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, ":");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -627,7 +627,10 @@ void StmtPrinter::VisitObjCSelectorExpr(ObjCSelectorExpr *Node) {
|
||||||
OS << " " << selector.getIdentifierInfoForSlot(0)->getName();
|
OS << " " << selector.getIdentifierInfoForSlot(0)->getName();
|
||||||
else {
|
else {
|
||||||
for (unsigned i = 0, e = Node->getNumArgs(); i != e; ++i)
|
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 << ")";
|
OS << ")";
|
||||||
}
|
}
|
||||||
|
|
@ -642,7 +645,10 @@ void StmtPrinter::VisitObjCMessageExpr(ObjCMessageExpr *Mess) {
|
||||||
OS << " " << selector.getIdentifierInfoForSlot(0)->getName();
|
OS << " " << selector.getIdentifierInfoForSlot(0)->getName();
|
||||||
} else {
|
} else {
|
||||||
for (unsigned i = 0, e = Mess->getNumArgs(); i != e; ++i) {
|
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));
|
PrintExpr(Mess->getArg(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1327,8 +1327,6 @@ Parser::ExprResult Parser::ParseObjCSelectorExpression()
|
||||||
Diag(Tok, diag::err_expected_ident); // missing selector name.
|
Diag(Tok, diag::err_expected_ident); // missing selector name.
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!SelIdent)
|
|
||||||
SelIdent = &PP.getIdentifierTable().get("");
|
|
||||||
KeyIdents.push_back(SelIdent);
|
KeyIdents.push_back(SelIdent);
|
||||||
if (Tok.isNot(tok::r_paren))
|
if (Tok.isNot(tok::r_paren))
|
||||||
while (1) {
|
while (1) {
|
||||||
|
|
@ -1342,8 +1340,6 @@ Parser::ExprResult Parser::ParseObjCSelectorExpression()
|
||||||
// Check for another keyword selector.
|
// Check for another keyword selector.
|
||||||
SourceLocation Loc;
|
SourceLocation Loc;
|
||||||
SelIdent = ParseObjCSelector(Loc);
|
SelIdent = ParseObjCSelector(Loc);
|
||||||
if (!SelIdent)
|
|
||||||
SelIdent = &PP.getIdentifierTable().get("");
|
|
||||||
KeyIdents.push_back(SelIdent);
|
KeyIdents.push_back(SelIdent);
|
||||||
if (!SelIdent && Tok.isNot(tok::colon))
|
if (!SelIdent && Tok.isNot(tok::colon))
|
||||||
break;
|
break;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue