@@ -48,8 +48,65 @@ public class JavaScriptEnvironment: ComponentBase, Environment {
4848 // TODO more?
4949 public let interestingStrings = jsTypeNames
5050
51- // TODO more?
52- public let interestingRegExps = [ " . " , " \\ d " , " \\ w " , " \\ s " , " \\ D " , " \\ W " , " \\ S " ]
51+ public let interestingRegExps = [
52+ " . " , // Always matches.
53+ " \\ P{Any} " , // Never matches.
54+ " ^ " , // Zero-width assertion, matches once.
55+ " (?=.) " , // Zero-width assertion, matches at every position.
56+ " \\ b " , // Zero-width assertion, matches at each word boundary.
57+ " () " , // Zero-width assertion, matches at every position with groups.
58+ " (?<a>) " , // Likewise but with named groups.
59+ " ((((.).).).) " , " (?<a>(?<b>(?<c>(?<d>.).).).) " ,
60+ // Copied from
61+ // https://cs.chromium.org/chromium/src/testing/libfuzzer/fuzzers/dicts/regexp.dict
62+ " ? " , " abc " , " () " , " [] " , " abc|def " , " abc|def|ghi " , " ^xxx$ " ,
63+ " ab \\ b \\ d \\ bcd " , " \\ w| \\ d " , " a*? " , " abc+ " , " abc+? " , " xyz? " , " xyz?? " ,
64+ " xyz{0,1} " , " xyz{0,1}? " , " xyz{93} " , " xyz{1,32} " , " xyz{1,32}? " , " xyz{1,} " ,
65+ " xyz{1,}? " , " a \\ fb \\ nc \\ rd \\ te \\ vf " , " a \\ nb \\ bc " , " (?:foo) " , " (?: foo ) " ,
66+ " foo|(bar|baz)|quux " , " foo(?=bar)baz " , " foo(?!bar)baz " , " foo(?<=bar)baz " ,
67+ " foo(?<!bar)baz " , " () " , " (?=) " , " [] " , " [x] " , " [xyz] " , " [a-zA-Z0-9] " ,
68+ " [-123] " , " [^123] " , " ] " , " } " , " [a-b-c] " , " [x \\ dz] " , " [ \\ d-z] " ,
69+ " [ \\ d- \\ d] " , " [z- \\ d] " , " \\ cj \\ cJ \\ ci \\ cI \\ ck \\ cK " , " \\ c! " , " \\ c_ " ,
70+ " \\ c~ " , " [ \\ c!] " , " [ \\ c_] " , " [ \\ c~] " , " [ \\ ca] " , " [ \\ cz] " , " [ \\ cA] " ,
71+ " [ \\ cZ] " , " [ \\ c1] " , " \\ [ \\ ] \\ { \\ } \\ ( \\ ) \\ % \\ ^ \\ # \\ " ,
72+ " [ \\ [ \\ ] \\ { \\ } \\ ( \\ ) \\ % \\ ^ \\ # \\ ] " , " \\ 8 " , " \\ 9 " , " \\ 11 " , " \\ 11a " ,
73+ " \\ 011 " , " \\ 118 " , " \\ 111 " , " \\ 1111 " , " (x)(x)(x) \\ 1 " , " (x)(x)(x) \\ 2 " ,
74+ " (x)(x)(x) \\ 3 " , " (x)(x)(x) \\ 4 " , " (x)(x)(x) \\ 1* " , " (x)(x)(x) \\ 3* " ,
75+ " (x)(x)(x) \\ 4* " , " (x)(x)(x)(x)(x)(x)(x)(x)(x)(x) \\ 10 " ,
76+ " (x)(x)(x)(x)(x)(x)(x)(x)(x)(x) \\ 11 " , " (a) \\ 1 " , " (a \\ 1) " , " ( \\ 1a) " ,
77+ " ( \\ 2)( \\ 1) " , " (?=a){0,10}a " , " (?=a){1,10}a " , " (?=a){9,10}a " , " (?!a)?a " ,
78+ " \\ 1(a) " , " (?!(a)) \\ 1 " , " (?! \\ 1(a \\ 1) \\ 1) \\ 1 " ,
79+ " \\ 1 \\ 2(a(?: \\ 1(b \\ 1 \\ 2)) \\ 2) \\ 1 " , " [ \\ 0] " , " [ \\ 11] " , " [ \\ 11a] " ,
80+ " [ \\ 011] " , " [ \\ 00011] " , " [ \\ 118] " , " [ \\ 111] " , " [ \\ 1111] " , " \\ x60 " ,
81+ " \\ x3z " , " \\ c " , " \\ u0034 " , " \\ u003z " , " foo[z]* " , " \\ u{12345} " ,
82+ " \\ u{12345} \\ u{23456} " , " \\ u{12345}{3} " , " \\ u{12345}* " , " \\ ud808 \\ udf45* " ,
83+ " [ \\ ud808 \\ udf45- \\ ud809 \\ udccc] " , " a " , " a|b " , " a \\ n " , " a$ " , " a \\ b! " ,
84+ " a \\ Bb " , " a*? " , " a? " , " a?? " , " a{0,1}? " , " a{1,2}? " , " a+? " , " (a) " , " (a) \\ 1 " ,
85+ " ( \\ 1a) " , " \\ 1(a) " , " a \\ s " , " a \\ S " , " a \\ D " , " a \\ w " , " a \\ W " , " a. " , " a \\ q " ,
86+ " a[a] " , " a[^a] " , " a[a-z] " , " a(?:b) " , " a(?=b) " , " a(?!b) " , " \\ x60 " ,
87+ " \\ u0060 " , " \\ cA " , " \\ q " , " \\ 1112 " , " (a) \\ 1 " , " (?!a)?a \\ 1 " ,
88+ " (?:(?=a))a \\ 1 " , " a{} " , " a{,} " , " a{ " , " a{z} " , " a{12z} " , " a{12, " ,
89+ " a{12,3b " , " {} " , " {,} " , " { " , " {z} " , " {1z} " , " {12, " , " {12,3b " , " a " , " abc " ,
90+ " a[bc]d " , " a|bc " , " ab|c " , " a||bc " , " (?:ab) " , " (?:ab|cde) " , " (?:ab)|cde " ,
91+ " (ab) " , " (ab|cde) " , " (ab) \\ 1 " , " (ab|cde) \\ 1 " , " (?:ab)? " , " (?:ab)+ " , " a? " ,
92+ " a+ " , " a?? " , " a*? " , " a+? " , " (?:a?)? " , " (?:a+)? " , " (?:a?)+ " , " (?:a*)+ " ,
93+ " (?:a+)+ " , " (?:a?)* " , " (?:a*)* " , " (?:a+)* " , " a{0} " , " (?:a+){0,0} " , " a*b " ,
94+ " a+b " , " a*b|c " , " a+b|c " , " (?:a{5,1000000}){3,1000000} " , " (?:ab){4,7} " ,
95+ " a \\ bc " , " a \\ sc " , " a \\ Sc " , " a(?=b)c " , " a(?=bbb|bb)c " , " a(?!bbb|bb)c " ,
96+ " \\ xe2 \\ x81 \\ xa3 " , " [ \\ xe2 \\ x81 \\ xa3] " , " \\ xed \\ xb0 \\ x80 " , " \\ xed \\ xa0 \\ x80 " ,
97+ " ( \\ xed \\ xb0 \\ x80) \\ x01 " , " (( \\ xed \\ xa0 \\ x80)) \\ x02 " , " \\ xf0 \\ x9f \\ x92 \\ xa9 " , " \\ x01 " ,
98+ " \\ x0f " , " [- \\ xf0 \\ x9f \\ x92 \\ xa9]+ " , " [ \\ xf0 \\ x9f \\ x92 \\ xa9- \\ xf4 \\ x8f \\ xbf \\ xbf] " ,
99+ " (?<=) " , " (?<=a) " , " (?<!) " , " (?<!a) " , " (?<a>) " , " (?<a>.) " ,
100+ " (?<a>.) \\ k<a> " , " \\ p{Script=Greek} " , " \\ P{sc=Greek} " ,
101+ " \\ p{Script_Extensions=Greek} " , " \\ P{scx=Greek} " ,
102+ " \\ p{General_Category=Decimal_Number} " , " \\ P{gc=Decimal_Number} " ,
103+ " \\ p{gc=Nd} " , " \\ P{Decimal_Number} " , " \\ p{Nd} " , " \\ P{Any} " ,
104+ " \\ p{Changes_When_NFKC_Casefolded} " ,
105+ " [ \\ p{Script_Extensions=Greek}--[α-γ]] " ,
106+ " [ \\ p{Script_Extensions=Mongolian}&& \\ p{Number}] " ,
107+ " [ \\ q{abc|def|0|5}-- \\ d] "
108+ ]
109+
53110 public let interestingRegExpQuantifiers = [ " * " , " + " , " ? " ]
54111
55112 public let intType = JSType . integer
0 commit comments