Implement parsing and code generation of Objective-C string literals.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@41238 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Parse/ParseObjc.cpp b/Parse/ParseObjc.cpp
index 192f199..e093f19 100644
--- a/Parse/ParseObjc.cpp
+++ b/Parse/ParseObjc.cpp
@@ -310,3 +310,27 @@
 void Parser::ParseObjCClassMethodDeclaration() {
   assert(0 && "Unimp");
 }
+
+Parser::ExprResult Parser::ParseObjCExpression() {
+  SourceLocation AtLoc = ConsumeToken(); // the "@"
+
+  switch (Tok.getKind()) {
+    case tok::string_literal:    // primary-expression: string-literal
+    case tok::wide_string_literal:
+      return ParseObjCStringLiteral();
+    default:
+      Diag(AtLoc, diag::err_unexpected_at);
+      SkipUntil(tok::semi);
+      break;
+  }
+  
+  return 0;
+}
+
+Parser::ExprResult Parser::ParseObjCStringLiteral() {
+  ExprResult Res = ParseStringLiteralExpression();
+
+  if (Res.isInvalid) return Res;
+
+  return Actions.ParseObjCStringLiteral(Res.Val);
+}