Bug 106645 - [C++23] P2290R3 - Delimited escape sequences
Summary: [C++23] P2290R3 - Delimited escape sequences
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: c++ (show other bugs)
Version: unknown
: P3 normal
Target Milestone: ---
Assignee: Jakub Jelinek
URL:
Keywords:
Depends on:
Blocks: c++23-core
  Show dependency treegraph
 
Reported: 2022-08-16 16:36 UTC by Marek Polacek
Modified: 2022-08-22 08:28 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed: 2022-08-16 00:00:00


Attachments
gcc13-pr106645.patch (5.80 KB, patch)
2022-08-16 16:39 UTC, Jakub Jelinek
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Marek Polacek 2022-08-16 16:36:55 UTC
See <https://wg21.link/p2290r3>.
Comment 1 Jakub Jelinek 2022-08-16 16:39:02 UTC
Created attachment 53467 [details]
gcc13-pr106645.patch

Untested implementation.
Comment 2 GCC Commits 2022-08-20 08:27:51 UTC
The master branch has been updated by Jakub Jelinek <jakub@gcc.gnu.org>:

https://gcc.gnu.org/g:e9dd050e0ccd644c3bb6d6538dc6187157f6b3e8

commit r13-2127-ge9dd050e0ccd644c3bb6d6538dc6187157f6b3e8
Author: Jakub Jelinek <jakub@redhat.com>
Date:   Sat Aug 20 10:26:55 2022 +0200

    libcpp: Implement C++23 P2290R3 - Delimited escape sequences [PR106645]
    
    The following patch implements the C++23 P2290R3 paper.
    
    2022-08-20  Jakub Jelinek  <jakub@redhat.com>
    
            PR c++/106645
    libcpp/
            * include/cpplib.h (struct cpp_options): Implement
            P2290R3 - Delimited escape sequences.  Add delimite_escape_seqs
            member.
            * init.cc (struct lang_flags): Likewise.
            (lang_defaults): Add delim column.
            (cpp_set_lang): Copy over delimite_escape_seqs.
            * charset.cc (extend_char_range): New function.
            (_cpp_valid_ucn): Use it.  Handle delimited escape sequences.
            (convert_hex): Likewise.
            (convert_oct): Likewise.
            (convert_ucn): Use extend_char_range.
            (convert_escape): Call convert_oct even for \o.
            (_cpp_interpret_identifier): Handle delimited escape sequences.
            * lex.cc (get_bidi_ucn_1): Likewise.  Add end argument, fill it in.
            (get_bidi_ucn): Adjust get_bidi_ucn_1 caller.  Use end argument to
            compute num_bytes.
    gcc/testsuite/
            * c-c++-common/cpp/delimited-escape-seq-1.c: New test.
            * c-c++-common/cpp/delimited-escape-seq-2.c: New test.
            * c-c++-common/cpp/delimited-escape-seq-3.c: New test.
            * c-c++-common/Wbidi-chars-24.c: New test.
            * gcc.dg/cpp/delimited-escape-seq-1.c: New test.
            * gcc.dg/cpp/delimited-escape-seq-2.c: New test.
            * g++.dg/cpp/delimited-escape-seq-1.C: New test.
            * g++.dg/cpp/delimited-escape-seq-2.C: New test.
Comment 3 Jakub Jelinek 2022-08-22 08:28:28 UTC
Implemented for 13+.