Implement warning for non-wide string literals with an unexpected encoding. Downgrade error for non-wide character literals with an unexpected encoding to a warning for compatibility with gcc and older versions of clang. <rdar://problem/10837678>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@150295 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/test/Lexer/char-literal-encoding-error.c b/test/Lexer/char-literal-encoding-error.c
index 833ffca..e752de2 100644
--- a/test/Lexer/char-literal-encoding-error.c
+++ b/test/Lexer/char-literal-encoding-error.c
@@ -3,8 +3,13 @@
// This file is encoded using ISO-8859-1
int main() {
- 'é'; // expected-error {{illegal character encoding in character literal}}
- u'é'; // expected-error {{illegal character encoding in character literal}}
- U'é'; // expected-error {{illegal character encoding in character literal}}
- L'é'; // expected-error {{illegal character encoding in character literal}}
+ (void)'é'; // expected-warning {{illegal character encoding in character literal}}
+ (void)u'é'; // expected-error {{illegal character encoding in character literal}}
+ (void)U'é'; // expected-error {{illegal character encoding in character literal}}
+ (void)L'é'; // expected-error {{illegal character encoding in character literal}}
+
+ // For narrow character literals, since there is no error, make sure the
+ // encoding is correct
+ static_assert((unsigned char)'é' == 0xE9, ""); // expected-warning {{illegal character encoding in character literal}}
+ static_assert('éé' == 0xE9E9, ""); // expected-warning {{illegal character encoding in character literal}} expected-warning {{multi-character character constant}}
}