Lines Matching full:msg

26 static bool checkForLiteralCreation(const ObjCMessageExpr *Msg,
29 if (!Msg || Msg->isImplicit() || !Msg->getMethodDecl())
32 const ObjCInterfaceDecl *Receiver = Msg->getReceiverInterface();
37 if (Msg->getReceiverKind() == ObjCMessageExpr::Class)
43 if (Msg->getReceiverKind() == ObjCMessageExpr::Instance) {
45 Msg->getInstanceReceiver()->IgnoreParenImpCasts())) {
59 bool edit::rewriteObjCRedundantCallWithLiteral(const ObjCMessageExpr *Msg,
62 if (!checkForLiteralCreation(Msg, II, NS.getASTContext().getLangOpts()))
64 if (Msg->getNumArgs() != 1)
67 const Expr *Arg = Msg->getArg(0)->IgnoreParenImpCasts();
68 Selector Sel = Msg->getSelector();
86 commit.replaceWithInner(Msg->getSourceRange(),
87 Msg->getArg(0)->getSourceRange());
157 const ObjCMessageExpr *Msg,
160 const Expr *Rec = Msg->getInstanceReceiver();
181 static bool rewriteToSubscriptGetCommon(const ObjCMessageExpr *Msg,
183 if (Msg->getNumArgs() != 1)
185 const Expr *Rec = Msg->getInstanceReceiver();
189 SourceRange MsgRange = Msg->getSourceRange();
191 SourceRange ArgRange = Msg->getArg(0)->getSourceRange();
204 const ObjCMessageExpr *Msg,
207 if (!canRewriteToSubscriptSyntax(IFace, Msg, NS.getASTContext(),
210 return rewriteToSubscriptGetCommon(Msg, commit);
214 const ObjCMessageExpr *Msg,
217 if (!canRewriteToSubscriptSyntax(IFace, Msg, NS.getASTContext(),
220 return rewriteToSubscriptGetCommon(Msg, commit);
224 const ObjCMessageExpr *Msg,
227 if (!canRewriteToSubscriptSyntax(IFace, Msg, NS.getASTContext(),
231 if (Msg->getNumArgs() != 2)
233 const Expr *Rec = Msg->getInstanceReceiver();
237 SourceRange MsgRange = Msg->getSourceRange();
239 SourceRange Arg0Range = Msg->getArg(0)->getSourceRange();
240 SourceRange Arg1Range = Msg->getArg(1)->getSourceRange();
258 const ObjCMessageExpr *Msg,
261 if (!canRewriteToSubscriptSyntax(IFace, Msg, NS.getASTContext(),
265 if (Msg->getNumArgs() != 2)
267 const Expr *Rec = Msg->getInstanceReceiver();
271 SourceRange MsgRange = Msg->getSourceRange();
273 SourceRange Arg0Range = Msg->getArg(0)->getSourceRange();
274 SourceRange Arg1Range = Msg->getArg(1)->getSourceRange();
290 bool edit::rewriteToObjCSubscriptSyntax(const ObjCMessageExpr *Msg,
292 if (!Msg || Msg->isImplicit() ||
293 Msg->getReceiverKind() != ObjCMessageExpr::Instance)
295 const ObjCMethodDecl *Method = Msg->getMethodDecl();
303 Selector Sel = Msg->getSelector();
306 return rewriteToArraySubscriptGet(IFace, Msg, NS, commit);
309 return rewriteToDictionarySubscriptGet(IFace, Msg, NS, commit);
311 if (Msg->getNumArgs() != 2)
315 return rewriteToArraySubscriptSet(IFace, Msg, NS, commit);
318 return rewriteToDictionarySubscriptSet(IFace, Msg, NS, commit);
327 static bool rewriteToArrayLiteral(const ObjCMessageExpr *Msg,
330 static bool rewriteToDictionaryLiteral(const ObjCMessageExpr *Msg,
332 static bool rewriteToNumberLiteral(const ObjCMessageExpr *Msg,
334 static bool rewriteToNumericBoxedExpression(const ObjCMessageExpr *Msg,
336 static bool rewriteToStringBoxedExpression(const ObjCMessageExpr *Msg,
339 bool edit::rewriteToObjCLiteralSyntax(const ObjCMessageExpr *Msg,
343 if (!checkForLiteralCreation(Msg, II, NS.getASTContext().getLangOpts()))
347 return rewriteToArrayLiteral(Msg, NS, commit, PMap);
349 return rewriteToDictionaryLiteral(Msg, NS, commit);
351 return rewriteToNumberLiteral(Msg, NS, commit);
353 return rewriteToStringBoxedExpression(Msg, NS, commit);
358 /// Returns true if the immediate message arguments of \c Msg should not
368 static bool shouldNotRewriteImmediateMessageArgs(const ObjCMessageExpr *Msg,
378 static bool rewriteToArrayLiteral(const ObjCMessageExpr *Msg,
383 dyn_cast_or_null<ObjCMessageExpr>(PMap->getParentIgnoreParenCasts(Msg));
388 Selector Sel = Msg->getSelector();
389 SourceRange MsgRange = Msg->getSourceRange();
392 if (Msg->getNumArgs() != 0)
399 if (Msg->getNumArgs() != 1)
401 objectifyExpr(Msg->getArg(0), commit);
402 SourceRange ArgRange = Msg->getArg(0)->getSourceRange();
410 if (Msg->getNumArgs() == 0)
412 const Expr *SentinelExpr = Msg->getArg(Msg->getNumArgs() - 1);
416 for (unsigned i = 0, e = Msg->getNumArgs() - 1; i != e; ++i)
417 objectifyExpr(Msg->getArg(i), commit);
419 if (Msg->getNumArgs() == 1) {
423 SourceRange ArgRange(Msg->getArg(0)->getBeginLoc(),
424 Msg->getArg(Msg->getNumArgs() - 2)->getEndLoc());
437 /// If \c Msg is an NSArray creation message or literal, this gets the
449 if (const ObjCMessageExpr *Msg = dyn_cast<ObjCMessageExpr>(E)) {
451 if (!checkForLiteralCreation(Msg, Cls, NS.getASTContext().getLangOpts()))
457 Selector Sel = Msg->getSelector();
462 if (Msg->getNumArgs() != 1)
464 Objs.push_back(Msg->getArg(0));
470 if (Msg->getNumArgs() == 0)
472 const Expr *SentinelExpr = Msg->getArg(Msg->getNumArgs() - 1);
476 for (unsigned i = 0, e = Msg->getNumArgs() - 1; i != e; ++i)
477 Objs.push_back(Msg->getArg(i));
490 static bool rewriteToDictionaryLiteral(const ObjCMessageExpr *Msg,
492 Selector Sel = Msg->getSelector();
493 SourceRange MsgRange = Msg->getSourceRange();
496 if (Msg->getNumArgs() != 0)
504 if (Msg->getNumArgs() != 2)
507 objectifyExpr(Msg->getArg(0), commit);
508 objectifyExpr(Msg->getArg(1), commit);
510 SourceRange ValRange = Msg->getArg(0)->getSourceRange();
511 SourceRange KeyRange = Msg->getArg(1)->getSourceRange();
526 if (Msg->getNumArgs() % 2 != 1)
528 unsigned SentinelIdx = Msg->getNumArgs() - 1;
529 const Expr *SentinelExpr = Msg->getArg(SentinelIdx);
533 if (Msg->getNumArgs() == 1) {
539 objectifyExpr(Msg->getArg(i), commit);
540 objectifyExpr(Msg->getArg(i+1), commit);
542 SourceRange ValRange = Msg->getArg(i)->getSourceRange();
543 SourceRange KeyRange = Msg->getArg(i+1)->getSourceRange();
553 SourceRange ArgRange(Msg->getArg(1)->getBeginLoc(),
554 Msg->getArg(SentinelIdx - 1)->getEndLoc());
563 if (Msg->getNumArgs() != 2)
567 if (!getNSArrayObjects(Msg->getArg(0), NS, Vals))
571 if (!getNSArrayObjects(Msg->getArg(1), NS, Keys))
603 static bool shouldNotRewriteImmediateMessageArgs(const ObjCMessageExpr *Msg,
605 if (!Msg)
609 if (!checkForLiteralCreation(Msg, II, NS.getASTContext().getLangOpts()))
615 Selector Sel = Msg->getSelector();
619 if (Msg->getNumArgs() != 2)
623 if (!getNSArrayObjects(Msg->getArg(0), NS, Vals))
627 if (!getNSArrayObjects(Msg->getArg(1), NS, Keys))
643 static bool rewriteToCharLiteral(const ObjCMessageExpr *Msg,
649 Msg->getSelector())) {
651 commit.replaceWithInner(Msg->getSourceRange(), ArgRange);
656 return rewriteToNumericBoxedExpression(Msg, NS, commit);
659 static bool rewriteToBoolLiteral(const ObjCMessageExpr *Msg,
663 Msg->getSelector())) {
665 commit.replaceWithInner(Msg->getSourceRange(), ArgRange);
670 return rewriteToNumericBoxedExpression(Msg, NS, commit);
749 static bool rewriteToNumberLiteral(const ObjCMessageExpr *Msg,
751 if (Msg->getNumArgs() != 1)
754 const Expr *Arg = Msg->getArg(0)->IgnoreParenImpCasts();
756 return rewriteToCharLiteral(Msg, CharE, NS, commit);
758 return rewriteToBoolLiteral(Msg, BE, NS, commit);
760 return rewriteToBoolLiteral(Msg, BE, NS, commit);
771 return rewriteToNumericBoxedExpression(Msg, NS, commit);
774 Selector Sel = Msg->getSelector();
791 return rewriteToNumericBoxedExpression(Msg, NS, commit);
825 QualType CallTy = Msg->getArg(0)->getType();
829 commit.replaceWithInner(Msg->getSourceRange(), ArgRange);
837 return rewriteToNumericBoxedExpression(Msg, NS, commit);
844 return rewriteToNumericBoxedExpression(Msg, NS, commit);
855 return rewriteToNumericBoxedExpression(Msg, NS, commit);
859 return rewriteToNumericBoxedExpression(Msg, NS, commit);
864 commit.replaceWithInner(CharSourceRange::getTokenRange(Msg->getSourceRange()),
972 static bool rewriteToNumericBoxedExpression(const ObjCMessageExpr *Msg,
974 if (Msg->getNumArgs() != 1)
977 const Expr *Arg = Msg->getArg(0);
982 Selector Sel = Msg->getSelector();
1106 Diags.Report(Msg->getExprLoc(), diagID) << OrigTy << FinalTy
1107 << Msg->getSourceRange();
1112 commit.replaceWithInner(Msg->getSourceRange(), ArgRange);
1127 const ObjCMessageExpr *Msg,
1129 const Expr *Arg = Msg->getArg(0);
1142 commit.replaceWithInner(Msg->getSourceRange(), StrE->getSourceRange());
1151 commit.replaceWithInner(Msg->getSourceRange(), ArgRange);
1165 static bool rewriteToStringBoxedExpression(const ObjCMessageExpr *Msg,
1167 Selector Sel = Msg->getSelector();
1172 if (Msg->getNumArgs() != 1)
1174 return doRewriteToUTF8StringBoxedExpressionHelper(Msg, NS, commit);
1178 if (Msg->getNumArgs() != 2)
1181 const Expr *encodingArg = Msg->getArg(1);
1184 return doRewriteToUTF8StringBoxedExpressionHelper(Msg, NS, commit);