* charset.c (cpp_init_iconv): Initialize utf8_cset_desc.
commit538ba11a2394dd5e651ccc047aeced3ca4c95afd
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Oct 2009 21:41:15 +0000 (19 21:41 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 19 Oct 2009 21:41:15 +0000 (19 21:41 +0000)
tree2156a8d43e7b0cb0eb28776c7a735b606e1caea8
parent5e9082a7a2a00296343284b155667ae01ca967be
* charset.c (cpp_init_iconv): Initialize utf8_cset_desc.
(_cpp_destroy_iconv): Destroy utf8_cset_desc, char16_cset_desc
and char32_cset_desc.
(converter_for_type): Handle CPP_UTF8STRING.
(cpp_interpret_string): Handle CPP_UTF8STRING and raw-strings.
* directives.c (get__Pragma_string): Handle CPP_UTF8STRING.
(parse_include): Reject raw strings.
* include/cpplib.h (CPP_UTF8STRING): New token type.
* internal.h (struct cpp_reader): Add utf8_cset_desc field.
* lex.c (lex_raw_string): New function.
(lex_string): Handle u8 string literals, call lex_raw_string
for raw string literals.
(_cpp_lex_direct): Call lex_string even for u8" and {,u,U,L,u8}R"
sequences.
* macro.c (stringify_arg): Handle CPP_UTF8STRING.

* c-common.c (c_parse_error): Handle CPP_UTF8STRING.
* c-lex.c (c_lex_with_flags): Likewise.  Test C_LEX_STRING_NO_JOIN
instead of C_LEX_RAW_STRINGS.
(lex_string): Handle CPP_UTF8STRING.
* c-parser.c (c_parser_postfix_expression): Likewise.
* c-pragma.h (C_LEX_RAW_STRINGS): Rename to ...
(C_LEX_STRING_NO_JOIN): ... this.

* parser.c (cp_lexer_print_token, cp_parser_is_string_literal,
cp_parser_string_literal, cp_parser_primary_expression): Likewise.
(cp_lexer_get_preprocessor_token): Use C_LEX_STRING_JOIN instead
of C_LEX_RAW_STRINGS.

* gcc.dg/raw-string-1.c: New test.
* gcc.dg/raw-string-2.c: New test.
* gcc.dg/raw-string-3.c: New test.
* gcc.dg/raw-string-4.c: New test.
* gcc.dg/raw-string-5.c: New test.
* gcc.dg/raw-string-6.c: New test.
* gcc.dg/raw-string-7.c: New test.
* gcc.dg/utf8-1.c: New test.
* gcc.dg/utf8-2.c: New test.
* gcc.dg/utf-badconcat2.c: New test.
* gcc.dg/utf-dflt2.c: New test.
* gcc.dg/cpp/include6.c: New test.
* g++.dg/ext/raw-string-1.C: New test.
* g++.dg/ext/raw-string-2.C: New test.
* g++.dg/ext/raw-string-3.C: New test.
* g++.dg/ext/raw-string-4.C: New test.
* g++.dg/ext/raw-string-5.C: New test.
* g++.dg/ext/raw-string-6.C: New test.
* g++.dg/ext/raw-string-7.C: New test.
* g++.dg/ext/utf8-1.C: New test.
* g++.dg/ext/utf8-2.C: New test.
* g++.dg/ext/utf-badconcat2.C: New test.
* g++.dg/ext/utf-dflt2.C: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@152995 138bc75d-0d04-0410-961f-82ee72b054a4
38 files changed:
gcc/ChangeLog
gcc/c-common.c
gcc/c-lex.c
gcc/c-parser.c
gcc/c-pragma.h
gcc/cp/ChangeLog
gcc/cp/parser.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/ext/raw-string-1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/raw-string-2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/raw-string-3.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/raw-string-4.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/raw-string-5.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/raw-string-6.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/raw-string-7.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/utf-badconcat2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/utf-dflt2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/utf8-1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/ext/utf8-2.C [new file with mode: 0644]
gcc/testsuite/gcc.dg/cpp/include6.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/raw-string-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/raw-string-2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/raw-string-3.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/raw-string-4.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/raw-string-5.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/raw-string-6.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/raw-string-7.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/utf-badconcat2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/utf-dflt2.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/utf8-1.c [new file with mode: 0644]
gcc/testsuite/gcc.dg/utf8-2.c [new file with mode: 0644]
libcpp/ChangeLog
libcpp/charset.c
libcpp/directives.c
libcpp/include/cpplib.h
libcpp/internal.h
libcpp/lex.c
libcpp/macro.c