Skip to content

Commit 8a41ec0

Browse files
committed
C++: Add RegExpNamedCharacterProperty subclasses
1 parent e95ae40 commit 8a41ec0

1 file changed

Lines changed: 22 additions & 1 deletion

File tree

cpp/ql/lib/semmle/code/cpp/regex/RegexTreeView.qll

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1163,6 +1163,27 @@ private module Impl implements RegexTreeViewSig {
11631163
string getSymbol() { result = re.getCharacterPropertySymbol(start, end) }
11641164
}
11651165

1166+
/**
1167+
* A named POSIX character class. For example, `[:digit:]`.
1168+
*/
1169+
additional class RegExpNamedCharacterClass extends RegExpNamedCharacterProperty {
1170+
RegExpNamedCharacterClass() { ":" = re.getCharacterPropertySymbol(start, end) }
1171+
}
1172+
1173+
/**
1174+
* A named POSIX collating element. For example, `[.tilde.]`.
1175+
*/
1176+
additional class RegExpNamedCollatingElement extends RegExpNamedCharacterProperty {
1177+
RegExpNamedCollatingElement() { "." = re.getCharacterPropertySymbol(start, end) }
1178+
}
1179+
1180+
/**
1181+
* A POSIX character equivalence class. For example, `[=a=]`.
1182+
*/
1183+
additional class RegExpCharacterEquivalenceClass extends RegExpNamedCharacterProperty {
1184+
RegExpCharacterEquivalenceClass() { "=" = re.getCharacterPropertySymbol(start, end) }
1185+
}
1186+
11661187
class Top = RegExpParent;
11671188

11681189
/**
@@ -1173,7 +1194,7 @@ private module Impl implements RegexTreeViewSig {
11731194
exists(RegExpCharacterClassEscape escape | term = escape | escape.getValue() = clazz)
11741195
or
11751196
// TODO: expand to cover more properties
1176-
exists(RegExpNamedCharacterProperty escape | term = escape |
1197+
exists(RegExpNamedCharacterClass escape | term = escape |
11771198
escape.getName().toLowerCase() = "digit" and
11781199
clazz = "d"
11791200
or

0 commit comments

Comments
 (0)