diff options
Diffstat (limited to 'libcpp/lex.c')
-rw-r--r-- | libcpp/lex.c | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/libcpp/lex.c b/libcpp/lex.c index 896a3bef2c2..fcec329d8b4 100644 --- a/libcpp/lex.c +++ b/libcpp/lex.c @@ -1478,6 +1478,18 @@ lex_raw_string (cpp_reader *pfile, cpp_token *token, const uchar *base, } break_outer_loop: + if (CPP_OPTION (pfile, user_literals)) + { + /* Grab user defined literal suffix. */ + if (ISIDST (*cur)) + { + type = cpp_userdef_string_add_type (type); + ++cur; + } + while (ISIDNUM (*cur)) + ++cur; + } + pfile->buffer->cur = cur; if (first_buff == NULL) create_literal (pfile, token, base, cur - base, type); @@ -1581,6 +1593,19 @@ lex_string (cpp_reader *pfile, cpp_token *token, const uchar *base) cpp_error (pfile, CPP_DL_PEDWARN, "missing terminating %c character", (int) terminator); + if (CPP_OPTION (pfile, user_literals)) + { + /* Grab user defined literal suffix. */ + if (ISIDST (*cur)) + { + type = cpp_userdef_char_add_type (type); + type = cpp_userdef_string_add_type (type); + ++cur; + } + while (ISIDNUM (*cur)) + ++cur; + } + pfile->buffer->cur = cur; create_literal (pfile, token, base, cur - base, type); } |