From 53ea48874167f0a6d787123934fb3d8be6f945b3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 23 Jul 2026 10:25:48 +0000 Subject: [PATCH] C++: Verify [\b] is backspace inside character classes --- cpp/ql/test/library-tests/regex/parse.expected | 5 +++++ cpp/ql/test/library-tests/regex/regexp.cpp | 1 + cpp/ql/test/library-tests/regex/regexp.expected | 3 +++ 3 files changed, 9 insertions(+) diff --git a/cpp/ql/test/library-tests/regex/parse.expected b/cpp/ql/test/library-tests/regex/parse.expected index 148b8af0ac5..80833567ffc 100644 --- a/cpp/ql/test/library-tests/regex/parse.expected +++ b/cpp/ql/test/library-tests/regex/parse.expected @@ -128,6 +128,8 @@ #-----| [RegExpConstant, RegExpNormalChar] A-F] +#-----| [RegExpConstant, RegExpEscape] \b + #-----| [RegExpConstant, RegExpNormalChar] | #-----| [RegExpConstant, RegExpNormalChar] - @@ -378,6 +380,9 @@ #-----| 0 -> [RegExpConstant, RegExpNormalChar] [ #-----| 1 -> [RegExpCharacterRange] a-f +#-----| [RegExpCharacterClass] [\b] +#-----| 0 -> [RegExpConstant, RegExpEscape] \b + #-----| [RegExpCharacterClass] [|] #-----| 0 -> [RegExpConstant, RegExpNormalChar] | diff --git a/cpp/ql/test/library-tests/regex/regexp.cpp b/cpp/ql/test/library-tests/regex/regexp.cpp index 15e35eb0ca2..a1e1acb11c5 100644 --- a/cpp/ql/test/library-tests/regex/regexp.cpp +++ b/cpp/ql/test/library-tests/regex/regexp.cpp @@ -37,6 +37,7 @@ std::regex r_cc7("[]]"); // MRI gives a warning, but accepts this as matching std::regex r_cc8("[^]]"); // MRI gives a warning, but accepts this as matching anything except ']' std::regex r_cc9("[^-]"); std::regex r_cc10("[|]"); +std::regex r_cc11("[\\b]"); // Nested character classes (BAD - not parsed correctly) std::regex r_nested("[[a-f]A-F]"); diff --git a/cpp/ql/test/library-tests/regex/regexp.expected b/cpp/ql/test/library-tests/regex/regexp.expected index 8bde18a3aa8..a56d5466316 100644 --- a/cpp/ql/test/library-tests/regex/regexp.expected +++ b/cpp/ql/test/library-tests/regex/regexp.expected @@ -67,6 +67,7 @@ term | file://:0:0:0:0 | [[a-f] | RegExpCharacterClass | | file://:0:0:0:0 | [[a-f]A-F] | RegExpSequence | | file://:0:0:0:0 | [\\0] | RegExpCharacterClass | +| file://:0:0:0:0 | [\\b] | RegExpCharacterClass | | file://:0:0:0:0 | [\\cZ] | RegExpCharacterClass | | file://:0:0:0:0 | [\\w] | RegExpCharacterClass | | file://:0:0:0:0 | [\\w]+ | RegExpPlus | @@ -87,6 +88,7 @@ term | file://:0:0:0:0 | \\[ | RegExpConstant,RegExpEscape | | file://:0:0:0:0 | \\[\\][123] | RegExpSequence | | file://:0:0:0:0 | \\] | RegExpConstant,RegExpEscape | +| file://:0:0:0:0 | \\b | RegExpConstant,RegExpEscape | | file://:0:0:0:0 | \\b | RegExpSpecialChar | | file://:0:0:0:0 | \\b!a\\B | RegExpSequence | | file://:0:0:0:0 | \\cA | RegExpConstant,RegExpEscape | @@ -216,6 +218,7 @@ regExpNormalCharValue | file://:0:0:0:0 | \\W | W | | file://:0:0:0:0 | \\[ | [ | | file://:0:0:0:0 | \\] | ] | +| file://:0:0:0:0 | \\b | b | | file://:0:0:0:0 | \\cA | cA | | file://:0:0:0:0 | \\cZ | cZ | | file://:0:0:0:0 | \\d | d |