Add support for Pascal strings.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@42974 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Sema/SemaExpr.cpp b/Sema/SemaExpr.cpp
index 904230f..471312b 100644
--- a/Sema/SemaExpr.cpp
+++ b/Sema/SemaExpr.cpp
@@ -46,11 +46,22 @@
StringTokLocs.push_back(StringToks[i].getLocation());
// FIXME: handle wchar_t
- QualType t = Context.getPointerType(Context.CharTy);
+ QualType t;
+
+ if (Literal.Pascal)
+ t = Context.getPointerType(Context.UnsignedCharTy);
+ else
+ t = Context.getPointerType(Context.CharTy);
+
+ if (Literal.Pascal && Literal.GetStringLength() > 256)
+ return Diag(StringToks[0].getLocation(), diag::err_pascal_string_too_long,
+ SourceRange(StringToks[0].getLocation(),
+ StringToks[NumStringToks-1].getLocation()));
// Pass &StringTokLocs[0], StringTokLocs.size() to factory!
return new StringLiteral(Literal.GetString(), Literal.GetStringLength(),
- Literal.AnyWide, t, StringToks[0].getLocation(),
+ Literal.AnyWide, t,
+ StringToks[0].getLocation(),
StringToks[NumStringToks-1].getLocation());
}