]> granicus.if.org Git - clang/commitdiff
rename CheckBuiltinCFStringArgument -> CheckObjCString
authorChris Lattner <sabre@nondot.org>
Wed, 18 Feb 2009 06:01:06 +0000 (06:01 +0000)
committerChris Lattner <sabre@nondot.org>
Wed, 18 Feb 2009 06:01:06 +0000 (06:01 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64894 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/Expr.h
lib/Sema/Sema.h
lib/Sema/SemaChecking.cpp
lib/Sema/SemaExprObjC.cpp

index 8bd0c9d75908946eb6af6c108b48099f121106b5..8130f4f63107403c600ac573a518ec2779306717 100644 (file)
@@ -476,12 +476,14 @@ public:
 /// is NOT null-terminated, and the length of the string is determined by
 /// calling getByteLength().  The C type for a string is always a
 /// ConstantArrayType.
+///
+/// Note that strings in C can be formed by concatenation of multiple string
+/// literal pptokens in trnaslation phase #6.  This keeps track of the locations
+/// of each of these pieces.
 class StringLiteral : public Expr {
   const char *StrData;
   unsigned ByteLength;
   bool IsWide;
-  // If the StringLiteral was composed using token pasting, both locations
-  // are needed. If not (the common case), firstTokLoc == lastTokLoc.
   unsigned NumConcatenated;
   SourceLocation TokLocs[1];
 public:
index 1bc469235a022c556f84cd617e3eb29ba7a8dbd5..fd59bf0691e4aa2563ee5ce074ba3d62082aac13 100644 (file)
@@ -1989,7 +1989,7 @@ public:
 private:
   Action::OwningExprResult CheckFunctionCall(FunctionDecl *FDecl,
                                              CallExpr *TheCall);
-  bool CheckBuiltinCFStringArgument(Expr* Arg);
+  bool CheckObjCString(Expr *Arg);
   bool SemaBuiltinVAStart(CallExpr *TheCall);
   bool SemaBuiltinUnorderedCompare(CallExpr *TheCall);
   bool SemaBuiltinStackAddress(CallExpr *TheCall);
index e2ec2676c70ec137ef9cc2ca4a9e438c2f87f28c..db622f66483e01c810376f424335bcfae5b9e0d3 100644 (file)
@@ -37,7 +37,7 @@ Sema::CheckFunctionCall(FunctionDecl *FDecl, CallExpr *TheCall) {
   case Builtin::BI__builtin___CFStringMakeConstantString:
     assert(TheCall->getNumArgs() == 1 &&
            "Wrong # arguments to builtin CFStringMakeConstantString");
-    if (CheckBuiltinCFStringArgument(TheCall->getArg(0)))
+    if (CheckObjCString(TheCall->getArg(0)))
       return ExprError();
     return move(TheCallResult);
   case Builtin::BI__builtin_stdarg_start:
@@ -91,11 +91,10 @@ Sema::CheckFunctionCall(FunctionDecl *FDecl, CallExpr *TheCall) {
   return move(TheCallResult);
 }
 
-/// CheckBuiltinCFStringArgument - Checks that the argument to the builtin
+/// CheckObjCString - Checks that the argument to the builtin
 /// CFString constructor is correct
-bool Sema::CheckBuiltinCFStringArgument(Expr* Arg) {
+bool Sema::CheckObjCString(Expr *Arg) {
   Arg = Arg->IgnoreParenCasts();
-  
   StringLiteral *Literal = dyn_cast<StringLiteral>(Arg);
 
   if (!Literal || Literal->isWide()) {
index b0b5367790817937df4877a5e191dd3e5793bbe9..1da74b9c320ee8bd3cc013be5d80e43d3a2d4cb1 100644 (file)
@@ -48,7 +48,8 @@ Sema::ExprResult Sema::ParseObjCStringLiteral(SourceLocation *AtLocs,
                                     AtLoc);
   }
   
-  if (CheckBuiltinCFStringArgument(S))
+  // Verify that this composite string is acceptable for ObjC strings.
+  if (CheckObjCString(S))
     return true;
   
   if (Context.getObjCConstantStringInterface().isNull()) {