mirror of
https://github.com/github/codeql.git
synced 2026-04-27 01:35:13 +02:00
Add more test cases; make some fixes
This commit is contained in:
@@ -725,9 +725,6 @@ class RegExpConstant extends RegExpTerm {
|
||||
not this instanceof RegExpCharacterClassEscape and
|
||||
// exclude chars in quantifiers
|
||||
// TODO: push this into regex library
|
||||
not exists(int qstart, int qend | re.quantifiedPart(_, qstart, qend, _, _) |
|
||||
qstart <= start and end <= qend
|
||||
) and
|
||||
(value = this.(RegExpNormalChar).getValue() or value = this.(RegExpQuote).getValue())
|
||||
}
|
||||
|
||||
|
||||
@@ -174,7 +174,7 @@ abstract class RegexString extends StringLiteral {
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper predicate for `quoteSequence`.
|
||||
* Helper predicate for `quote`.
|
||||
* Holds if the char at `pos` could be the beginning of a quote delimiter, i.e. `\Q` (non-escaped) or `\E` (escaping not checked, as quote sequences turn off escapes).
|
||||
* Result is `true` for `\Q` and `false` for `\E`.
|
||||
*/
|
||||
@@ -189,7 +189,7 @@ abstract class RegexString extends StringLiteral {
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper predicate for `quoteSequence`.
|
||||
* Helper predicate for `quote`.
|
||||
* Holds if the char at `pos` is the one-based `index`th occourence of a quote delimiter (`\Q` or `\E`)
|
||||
* Result is `true` for `\Q` and `false` for `\E`.
|
||||
*/
|
||||
@@ -343,7 +343,10 @@ abstract class RegexString extends StringLiteral {
|
||||
not c = "[" and
|
||||
not c = ")" and
|
||||
not c = "|" and
|
||||
not this.quantifier(start, _, _, _)
|
||||
not c = "{" and
|
||||
not exists(int qstart, int qend | this.quantifier(qstart, qend, _, _) |
|
||||
qstart <= start and start < qend
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
@@ -66,3 +66,67 @@ parseFailures
|
||||
| Test.java:15:35:15:35 | 2 | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:15:36:15:36 | 3 | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:15:37:15:44 | \\k<name> | [RegExpBackRef] |
|
||||
| Test.java:16:10:16:10 | a | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:10:16:11 | a+ | [RegExpPlus] |
|
||||
| Test.java:16:10:16:108 | a+b*c?d{2}e{3,4}f{,5}g{6,}h+?i*?j??k{7}?l{8,9}?m{,10}?n{11,}?o++p*+q?+r{12}+s{13,14}+t{,15}+u{16,}+ | [RegExpSequence] |
|
||||
| Test.java:16:12:16:12 | b | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:12:16:13 | b* | [RegExpStar] |
|
||||
| Test.java:16:14:16:14 | c | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:14:16:15 | c? | [RegExpOpt] |
|
||||
| Test.java:16:16:16:16 | d | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:16:16:19 | d{2} | [RegExpRange] |
|
||||
| Test.java:16:20:16:20 | e | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:20:16:25 | e{3,4} | [RegExpRange] |
|
||||
| Test.java:16:26:16:26 | f | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:26:16:30 | f{,5} | [RegExpRange] |
|
||||
| Test.java:16:31:16:31 | g | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:31:16:35 | g{6,} | [RegExpRange] |
|
||||
| Test.java:16:36:16:36 | h | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:36:16:38 | h+? | [RegExpPlus] |
|
||||
| Test.java:16:39:16:39 | i | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:39:16:41 | i*? | [RegExpStar] |
|
||||
| Test.java:16:42:16:42 | j | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:42:16:44 | j?? | [RegExpOpt] |
|
||||
| Test.java:16:45:16:45 | k | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:45:16:49 | k{7}? | [RegExpQuantifier] |
|
||||
| Test.java:16:50:16:50 | l | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:50:16:56 | l{8,9}? | [RegExpQuantifier] |
|
||||
| Test.java:16:57:16:57 | m | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:57:16:63 | m{,10}? | [RegExpQuantifier] |
|
||||
| Test.java:16:64:16:64 | n | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:64:16:70 | n{11,}? | [RegExpQuantifier] |
|
||||
| Test.java:16:71:16:71 | o | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:71:16:73 | o++ | [RegExpPlus] |
|
||||
| Test.java:16:74:16:74 | p | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:74:16:76 | p*+ | [RegExpStar] |
|
||||
| Test.java:16:77:16:77 | q | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:77:16:79 | q?+ | [RegExpOpt] |
|
||||
| Test.java:16:80:16:80 | r | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:80:16:85 | r{12}+ | [RegExpQuantifier] |
|
||||
| Test.java:16:86:16:86 | s | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:86:16:94 | s{13,14}+ | [RegExpQuantifier] |
|
||||
| Test.java:16:95:16:95 | t | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:95:16:101 | t{,15}+ | [RegExpQuantifier] |
|
||||
| Test.java:16:102:16:102 | u | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:16:102:16:108 | u{16,}+ | [RegExpQuantifier] |
|
||||
| Test.java:17:10:17:13 | (?i) | [RegExpZeroWidthMatch] |
|
||||
| Test.java:17:10:17:35 | (?i)(?=a)(?!b)(?<=c)(?<!d) | [RegExpSequence] |
|
||||
| Test.java:17:14:17:18 | (?=a) | [RegExpPositiveLookahead] |
|
||||
| Test.java:17:17:17:17 | a | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:17:19:17:23 | (?!b) | [RegExpNegativeLookahead] |
|
||||
| Test.java:17:22:17:22 | b | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:17:24:17:29 | (?<=c) | [RegExpPositiveLookbehind] |
|
||||
| Test.java:17:28:17:28 | c | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:17:30:17:35 | (?<!d) | [RegExpNegativeLookbehind] |
|
||||
| Test.java:17:34:17:34 | d | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:18:10:18:10 | a | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:18:10:18:22 | a\|b\|c(d\|e)f\|g | [RegExpAlt] |
|
||||
| Test.java:18:12:18:12 | b | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:18:14:18:14 | c | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:18:14:18:20 | c(d\|e)f | [RegExpSequence] |
|
||||
| Test.java:18:15:18:19 | (d\|e) | [RegExpGroup] |
|
||||
| Test.java:18:16:18:16 | d | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:18:16:18:18 | d\|e | [RegExpAlt] |
|
||||
| Test.java:18:18:18:18 | e | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:18:20:18:20 | f | [RegExpConstant,RegExpNormalChar] |
|
||||
| Test.java:18:22:18:22 | g | [RegExpConstant,RegExpNormalChar] |
|
||||
|
||||
@@ -12,7 +12,10 @@ class Test {
|
||||
"\\cA",
|
||||
"\\c(",
|
||||
"\\c\\(ab)",
|
||||
"(?>hi)(?<name>hell*?o*+)123\\k<name>"
|
||||
"(?>hi)(?<name>hell*?o*+)123\\k<name>",
|
||||
"a+b*c?d{2}e{3,4}f{,5}g{6,}h+?i*?j??k{7}?l{8,9}?m{,10}?n{11,}?o++p*+q?+r{12}+s{13,14}+t{,15}+u{16,}+",
|
||||
"(?i)(?=a)(?!b)(?<=c)(?<!d)",
|
||||
"a|b|c(d|e)f|g"
|
||||
};
|
||||
|
||||
void test() {
|
||||
|
||||
Reference in New Issue
Block a user