mirror of
https://github.com/github/codeql.git
synced 2026-07-31 07:22:56 +02:00
C++: Add location tests for all literal prefixes (pre-fix)
This commit is contained in:
committed by
GitHub
parent
b91b83381b
commit
7b2ce2484f
0
cpp/ql/test/library-tests/regex/locations.expected
Normal file
0
cpp/ql/test/library-tests/regex/locations.expected
Normal file
5
cpp/ql/test/library-tests/regex/locations.ql
Normal file
5
cpp/ql/test/library-tests/regex/locations.ql
Normal file
@@ -0,0 +1,5 @@
|
||||
import semmle.code.cpp.regex.RegexTreeView
|
||||
|
||||
from RegExpTerm t, string file, int sl, int sc, int el, int ec
|
||||
where t.isRootTerm() and t.hasLocationInfo(file, sl, sc, el, ec)
|
||||
select t, file, sl, sc, el, ec
|
||||
@@ -485,3 +485,36 @@ regexp.cpp:
|
||||
# 88| [RegExpNamedCharacterProperty] [:digit:]
|
||||
|
||||
# 91| [RegExpConstant, RegExpEscape] \u{987
|
||||
|
||||
# 94| [RegExpConstant, RegExpNormalChar] a
|
||||
|
||||
# 94| [RegExpSequence] a\nb
|
||||
#-----| 0 -> [RegExpConstant, RegExpNormalChar] a
|
||||
#-----| 1 -> [RegExpConstant, RegExpEscape] \n
|
||||
#-----| 2 -> [RegExpConstant, RegExpNormalChar] b
|
||||
|
||||
# 94| [RegExpConstant, RegExpEscape] \n
|
||||
|
||||
# 94| [RegExpConstant, RegExpNormalChar] b
|
||||
|
||||
# 95| [RegExpConstant, RegExpNormalChar] abc
|
||||
|
||||
# 96| [RegExpConstant, RegExpNormalChar] abc
|
||||
|
||||
# 97| [RegExpConstant, RegExpNormalChar] abc
|
||||
|
||||
# 98| [RegExpConstant, RegExpNormalChar] abc
|
||||
|
||||
# 99| [RegExpConstant, RegExpNormalChar] abc
|
||||
|
||||
# 100| [RegExpConstant, RegExpNormalChar] abc
|
||||
|
||||
# 101| [RegExpConstant, RegExpNormalChar] abc
|
||||
|
||||
# 102| [RegExpConstant, RegExpNormalChar] abc
|
||||
|
||||
# 103| [RegExpConstant, RegExpNormalChar] abc
|
||||
|
||||
# 104| [RegExpConstant, RegExpNormalChar] abc
|
||||
|
||||
# 105| [RegExpConstant, RegExpNormalChar] abc
|
||||
|
||||
@@ -4,9 +4,9 @@ namespace std {
|
||||
template <class CharT>
|
||||
class basic_regex {
|
||||
public:
|
||||
basic_regex(const char *s) {}
|
||||
basic_regex(const char *s, int flags) {}
|
||||
basic_regex &assign(const char *s) { return *this; }
|
||||
basic_regex(const CharT *s) {}
|
||||
basic_regex(const CharT *s, int flags) {}
|
||||
basic_regex &assign(const CharT *s) { return *this; }
|
||||
};
|
||||
typedef basic_regex<char> regex;
|
||||
} // namespace std
|
||||
@@ -89,3 +89,17 @@ std::regex r_posix4("[:digit:]");
|
||||
|
||||
// unicode
|
||||
std::regex r_uni("\\u{9879}");
|
||||
|
||||
// String literal spellings for location tests
|
||||
std::regex r_loc_plain("a\\nb");
|
||||
std::basic_regex<wchar_t> r_loc_L(L"abc");
|
||||
std::basic_regex<char> r_loc_u8(u8"abc");
|
||||
std::basic_regex<char16_t> r_loc_u(u"abc");
|
||||
std::basic_regex<char32_t> r_loc_U(U"abc");
|
||||
std::regex r_loc_R(R"(abc)");
|
||||
std::basic_regex<wchar_t> r_loc_LR(LR"(abc)");
|
||||
std::basic_regex<char> r_loc_u8R(u8R"(abc)");
|
||||
std::basic_regex<char16_t> r_loc_uR(uR"(abc)");
|
||||
std::basic_regex<char32_t> r_loc_UR(UR"(abc)");
|
||||
std::regex r_loc_Rx(R"x(abc)x");
|
||||
std::regex r_loc_Rfoo(R"foo(abc)foo");
|
||||
|
||||
@@ -186,6 +186,21 @@ term
|
||||
| regexp.cpp:85:37:85:37 | f | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:88:22:88:30 | [:digit:] | RegExpNamedCharacterProperty |
|
||||
| regexp.cpp:91:19:91:24 | \\u{987 | RegExpConstant,RegExpEscape |
|
||||
| regexp.cpp:94:25:94:25 | a | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:94:25:94:28 | a\\nb | RegExpSequence |
|
||||
| regexp.cpp:94:26:94:27 | \\n | RegExpConstant,RegExpEscape |
|
||||
| regexp.cpp:94:28:94:28 | b | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:95:36:95:38 | abc | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:96:34:96:36 | abc | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:97:37:97:39 | abc | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:98:37:98:39 | abc | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:99:21:99:23 | abc | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:100:37:100:39 | abc | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:101:35:101:37 | abc | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:102:38:102:40 | abc | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:103:38:103:40 | abc | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:104:22:104:24 | abc | RegExpConstant,RegExpNormalChar |
|
||||
| regexp.cpp:105:24:105:26 | abc | RegExpConstant,RegExpNormalChar |
|
||||
regExpNormalCharValue
|
||||
| regexp.cpp:18:19:18:21 | abc | abc |
|
||||
| regexp.cpp:21:20:21:20 | a | a |
|
||||
@@ -266,3 +281,17 @@ regExpNormalCharValue
|
||||
| regexp.cpp:85:35:85:35 | a | a |
|
||||
| regexp.cpp:85:37:85:37 | f | f |
|
||||
| regexp.cpp:91:19:91:24 | \\u{987 | \u0987 |
|
||||
| regexp.cpp:94:25:94:25 | a | a |
|
||||
| regexp.cpp:94:26:94:27 | \\n | \n |
|
||||
| regexp.cpp:94:28:94:28 | b | b |
|
||||
| regexp.cpp:95:36:95:38 | abc | abc |
|
||||
| regexp.cpp:96:34:96:36 | abc | abc |
|
||||
| regexp.cpp:97:37:97:39 | abc | abc |
|
||||
| regexp.cpp:98:37:98:39 | abc | abc |
|
||||
| regexp.cpp:99:21:99:23 | abc | abc |
|
||||
| regexp.cpp:100:37:100:39 | abc | abc |
|
||||
| regexp.cpp:101:35:101:37 | abc | abc |
|
||||
| regexp.cpp:102:38:102:40 | abc | abc |
|
||||
| regexp.cpp:103:38:103:40 | abc | abc |
|
||||
| regexp.cpp:104:22:104:24 | abc | abc |
|
||||
| regexp.cpp:105:24:105:26 | abc | abc |
|
||||
|
||||
Reference in New Issue
Block a user