Skip to content
Snippets Groups Projects
  • Jakub Jelinek's avatar
    2c6e3f55
    charset.c (cpp_init_iconv): Initialize utf8_cset_desc. · 2c6e3f55
    Jakub Jelinek authored
    	* 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.
    
    From-SVN: r152995
    2c6e3f55
    History
    charset.c (cpp_init_iconv): Initialize utf8_cset_desc.
    Jakub Jelinek authored
    	* 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.
    
    From-SVN: r152995