github的一些开源项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

570 lines
28 KiB

  1. # This test is run only when JIT support is available. It checks JIT complete
  2. # and partial modes, and things that are different with JIT.
  3. #pattern jitverify
  4. # JIT does not support this pattern (callout at start of condition).
  5. /(?(?C1)(?=a)a)/I
  6. JIT compilation was not successful (no more memory)
  7. Capture group count = 0
  8. May match empty string
  9. Subject length lower bound = 0
  10. JIT compilation was not successful (no more memory)
  11. # The following pattern cannot be compiled by JIT.
  12. /b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*b*
  13. JIT compilation was not successful (no more memory)
  14. Capture group count = 0
  15. May match empty string
  16. Subject length lower bound = 0
  17. JIT compilation was not successful (no more memory)
  18. # Check that an infinite recursion loop is caught.
  19. /(?(R)a*(?1)|((?R))b)/
  20. aaaabcde
  21. Failed: error -46: JIT stack limit reached
  22. /abcd/I
  23. Capture group count = 0
  24. First code unit = 'a'
  25. Last code unit = 'd'
  26. Subject length lower bound = 4
  27. JIT compilation was successful
  28. abcd
  29. 0: abcd (JIT)
  30. \= Expect no match
  31. xyz
  32. No match (JIT)
  33. /(*NO_JIT)abcd/I
  34. Capture group count = 0
  35. First code unit = 'a'
  36. Last code unit = 'd'
  37. Subject length lower bound = 4
  38. JIT compilation was not successful
  39. abcd
  40. 0: abcd
  41. \= Expect no match
  42. xyz
  43. No match
  44. /abcd/
  45. abcd
  46. 0: abcd (JIT)
  47. ab\=ps
  48. Partial match: ab (JIT)
  49. ab\=ph
  50. Partial match: ab (JIT)
  51. \= Expect no match
  52. xyz
  53. No match (JIT)
  54. /abcd/jitfast
  55. abcd
  56. 0: abcd (JIT)
  57. ab\=ps
  58. Partial match: ab (JIT)
  59. ab\=ph
  60. Partial match: ab (JIT)
  61. \= Expect no match
  62. xyz
  63. No match (JIT)
  64. /abcd/jit=1
  65. abcd
  66. 0: abcd (JIT)
  67. ab\=ps
  68. Partial match: ab
  69. ab\=ph
  70. Partial match: ab
  71. \= Expect no match
  72. xyz
  73. No match (JIT)
  74. xyz\=ps
  75. No match
  76. /abcd/jit=1,jitfast
  77. abcd
  78. 0: abcd (JIT)
  79. ab\=ps
  80. Failed: error -45: bad JIT option
  81. ab\=ph
  82. Failed: error -45: bad JIT option
  83. xyz\=ps
  84. Failed: error -45: bad JIT option
  85. \= Expect no match
  86. xyz
  87. No match (JIT)
  88. /abcd/jit=2
  89. abcd
  90. 0: abcd
  91. ab\=ps
  92. Partial match: ab (JIT)
  93. ab\=ph
  94. Partial match: ab
  95. \= Expect no match
  96. xyz
  97. No match
  98. /abcd/jit=2,jitfast
  99. abcd
  100. Failed: error -45: bad JIT option
  101. ab\=ps
  102. Partial match: ab (JIT)
  103. ab\=ph
  104. Failed: error -45: bad JIT option
  105. xyz
  106. Failed: error -45: bad JIT option
  107. /abcd/jit=3
  108. abcd
  109. 0: abcd (JIT)
  110. ab\=ps
  111. Partial match: ab (JIT)
  112. ab\=ph
  113. Partial match: ab
  114. \= Expect no match
  115. xyz
  116. No match (JIT)
  117. /abcd/jit=4
  118. abcd
  119. 0: abcd
  120. ab\=ps
  121. Partial match: ab
  122. ab\=ph
  123. Partial match: ab (JIT)
  124. \= Expect no match
  125. xyz
  126. No match
  127. /abcd/jit=5
  128. abcd
  129. 0: abcd (JIT)
  130. ab\=ps
  131. Partial match: ab
  132. ab\=ph
  133. Partial match: ab (JIT)
  134. \= Expect no match
  135. xyz
  136. No match (JIT)
  137. /abcd/jit=6
  138. abcd
  139. 0: abcd
  140. ab\=ps
  141. Partial match: ab (JIT)
  142. ab\=ph
  143. Partial match: ab (JIT)
  144. \= Expect no match
  145. xyz
  146. No match
  147. /abcd/jit=7
  148. abcd
  149. 0: abcd (JIT)
  150. ab\=ps
  151. Partial match: ab (JIT)
  152. ab\=ph
  153. Partial match: ab (JIT)
  154. \= Expect no match
  155. xyz
  156. No match (JIT)
  157. /abcd/I,jit=2
  158. Capture group count = 0
  159. First code unit = 'a'
  160. Last code unit = 'd'
  161. Subject length lower bound = 4
  162. JIT compilation was successful
  163. /(*NO_START_OPT)a(*:m)b/mark
  164. \= Expect no match
  165. a
  166. No match, mark = m (JIT)
  167. /^12345678abcd/m
  168. 12345678abcd
  169. 0: 12345678abcd (JIT)
  170. # Limits tests that give different output with JIT.
  171. /(a+)*zz/I
  172. Capture group count = 1
  173. Starting code units: a z
  174. Last code unit = 'z'
  175. Subject length lower bound = 2
  176. JIT compilation was successful
  177. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazzbbbbbb\=find_limits
  178. Minimum match limit = 2
  179. 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazz (JIT)
  180. 1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
  181. \= Expect no match
  182. aaaaaaaaaaaaaz\=find_limits
  183. Minimum match limit = 16383
  184. No match (JIT)
  185. !((?:\s|//.*\\n|/[*](?:\\n|.)*?[*]/)*)!I
  186. Capture group count = 1
  187. May match empty string
  188. Subject length lower bound = 0
  189. JIT compilation was successful
  190. /* this is a C style comment */\=find_limits
  191. Minimum match limit = 29
  192. 0: /* this is a C style comment */ (JIT)
  193. 1: /* this is a C style comment */
  194. /^(?>a)++/
  195. aa\=find_limits
  196. Minimum match limit = 1
  197. 0: aa (JIT)
  198. aaaaaaaaa\=find_limits
  199. Minimum match limit = 1
  200. 0: aaaaaaaaa (JIT)
  201. /(a)(?1)++/
  202. aa\=find_limits
  203. Minimum match limit = 1
  204. 0: aa (JIT)
  205. 1: a
  206. aaaaaaaaa\=find_limits
  207. Minimum match limit = 1
  208. 0: aaaaaaaaa (JIT)
  209. 1: a
  210. /a(?:.)*?a/ims
  211. abbbbbbbbbbbbbbbbbbbbba\=find_limits
  212. Minimum match limit = 22
  213. 0: abbbbbbbbbbbbbbbbbbbbba (JIT)
  214. /a(?:.(*THEN))*?a/ims
  215. abbbbbbbbbbbbbbbbbbbbba\=find_limits
  216. Minimum match limit = 22
  217. 0: abbbbbbbbbbbbbbbbbbbbba (JIT)
  218. /a(?:.(*THEN:ABC))*?a/ims
  219. abbbbbbbbbbbbbbbbbbbbba\=find_limits
  220. Minimum match limit = 22
  221. 0: abbbbbbbbbbbbbbbbbbbbba (JIT)
  222. /^(?>a+)(?>b+)(?>c+)(?>d+)(?>e+)/
  223. aabbccddee\=find_limits
  224. Minimum match limit = 5
  225. 0: aabbccddee (JIT)
  226. /^(?>(a+))(?>(b+))(?>(c+))(?>(d+))(?>(e+))/
  227. aabbccddee\=find_limits
  228. Minimum match limit = 5
  229. 0: aabbccddee (JIT)
  230. 1: aa
  231. 2: bb
  232. 3: cc
  233. 4: dd
  234. 5: ee
  235. /^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/
  236. aabbccddee\=find_limits
  237. Minimum match limit = 5
  238. 0: aabbccddee (JIT)
  239. 1: aa
  240. 2: cc
  241. 3: ee
  242. /^(?>(a+))(?>b+)(?>(c+))(?>d+)(?>(e+))/jitfast
  243. aabbccddee\=find_limits
  244. Minimum match limit = 5
  245. 0: aabbccddee (JIT)
  246. 1: aa
  247. 2: cc
  248. 3: ee
  249. aabbccddee\=jitstack=1
  250. 0: aabbccddee (JIT)
  251. 1: aa
  252. 2: cc
  253. 3: ee
  254. /(a+)*zz/
  255. \= Expect no match
  256. aaaaaaaaaaaaaz
  257. No match (JIT)
  258. \= Expect limit exceeded
  259. aaaaaaaaaaaaaz\=match_limit=3000
  260. Failed: error -47: match limit exceeded
  261. /(*LIMIT_MATCH=3000)(a+)*zz/I
  262. Capture group count = 1
  263. Match limit = 3000
  264. Starting code units: a z
  265. Last code unit = 'z'
  266. Subject length lower bound = 2
  267. JIT compilation was successful
  268. \= Expect limit exceeded
  269. aaaaaaaaaaaaaz
  270. Failed: error -47: match limit exceeded
  271. \= Expect limit exceeded
  272. aaaaaaaaaaaaaz\=match_limit=60000
  273. Failed: error -47: match limit exceeded
  274. /(*LIMIT_MATCH=60000)(*LIMIT_MATCH=3000)(a+)*zz/I
  275. Capture group count = 1
  276. Match limit = 3000
  277. Starting code units: a z
  278. Last code unit = 'z'
  279. Subject length lower bound = 2
  280. JIT compilation was successful
  281. \= Expect limit exceeded
  282. aaaaaaaaaaaaaz
  283. Failed: error -47: match limit exceeded
  284. /(*LIMIT_MATCH=60000)(a+)*zz/I
  285. Capture group count = 1
  286. Match limit = 60000
  287. Starting code units: a z
  288. Last code unit = 'z'
  289. Subject length lower bound = 2
  290. JIT compilation was successful
  291. \= Expect no match
  292. aaaaaaaaaaaaaz
  293. No match (JIT)
  294. \= Expect limit exceeded
  295. aaaaaaaaaaaaaz\=match_limit=3000
  296. Failed: error -47: match limit exceeded
  297. # These three have infinitely nested recursions.
  298. /((?2))((?1))/
  299. \= Expect JIT stack limit reached
  300. abc
  301. Failed: error -46: JIT stack limit reached
  302. /((?(R2)a+|(?1)b))()/
  303. \= Expect JIT stack limit reached
  304. aaaabcde
  305. Failed: error -46: JIT stack limit reached
  306. /(?(R)a*(?1)|((?R))b)/
  307. \= Expect JIT stack limit reached
  308. aaaabcde
  309. Failed: error -46: JIT stack limit reached
  310. # Invalid options disable JIT when called via pcre2_match(), causing the
  311. # match to happen via the interpreter, but for fast JIT invalid options are
  312. # ignored, so an unanchored match happens.
  313. /abcd/
  314. abcd\=anchored
  315. 0: abcd
  316. \= Expect no match
  317. fail abcd\=anchored
  318. No match
  319. /abcd/jitfast
  320. abcd\=anchored
  321. 0: abcd (JIT)
  322. succeed abcd\=anchored
  323. 0: abcd (JIT)
  324. # Push/pop does not lose the JIT information, though jitverify applies only to
  325. # compilation, but serializing (save/load) discards JIT data completely.
  326. /^abc\Kdef/info,push
  327. ** Applies only to compile when pattern is stacked with 'push': jitverify
  328. Capture group count = 0
  329. Compile options: <none>
  330. Overall options: anchored
  331. First code unit = 'a'
  332. Subject length lower bound = 6
  333. JIT compilation was successful
  334. #pop jitverify
  335. abcdef
  336. 0: def (JIT)
  337. /^abc\Kdef/info,push
  338. ** Applies only to compile when pattern is stacked with 'push': jitverify
  339. Capture group count = 0
  340. Compile options: <none>
  341. Overall options: anchored
  342. First code unit = 'a'
  343. Subject length lower bound = 6
  344. JIT compilation was successful
  345. #save testsaved1
  346. #load testsaved1
  347. #pop jitverify
  348. abcdef
  349. 0: def
  350. #load testsaved1
  351. #pop jit,jitverify
  352. abcdef
  353. 0: def (JIT)
  354. /abcd/pushcopy,jitverify
  355. ** Applies only to compile when pattern is stacked with 'push': jitverify
  356. abcd
  357. 0: abcd (JIT)
  358. #pop jitverify
  359. abcd
  360. 0: abcd
  361. # Test pattern compilation
  362. /(?:a|b|c|d|e)(?R)/jit=1
  363. /(?:a|b|c|d|e)(?R)(?R)/jit=1
  364. /(a(?:a|b|c|d|e)b){8,16}/jit=1
  365. /(?:|a|){100}x/jit=1
  366. # These tests provoke recursion loops, which give a different error message
  367. # when JIT is used.
  368. /(?R)/I
  369. Capture group count = 0
  370. May match empty string
  371. Subject length lower bound = 0
  372. JIT compilation was successful
  373. abcd
  374. Failed: error -46: JIT stack limit reached
  375. /(a|(?R))/I
  376. Capture group count = 1
  377. May match empty string
  378. Subject length lower bound = 0
  379. JIT compilation was successful
  380. abcd
  381. 0: a (JIT)
  382. 1: a
  383. defg
  384. Failed: error -46: JIT stack limit reached
  385. /(ab|(bc|(de|(?R))))/I
  386. Capture group count = 3
  387. May match empty string
  388. Subject length lower bound = 0
  389. JIT compilation was successful
  390. abcd
  391. 0: ab (JIT)
  392. 1: ab
  393. fghi
  394. Failed: error -46: JIT stack limit reached
  395. /(ab|(bc|(de|(?1))))/I
  396. Capture group count = 3
  397. May match empty string
  398. Subject length lower bound = 0
  399. JIT compilation was successful
  400. abcd
  401. 0: ab (JIT)
  402. 1: ab
  403. fghi
  404. Failed: error -46: JIT stack limit reached
  405. /x(ab|(bc|(de|(?1)x)x)x)/I
  406. Capture group count = 3
  407. First code unit = 'x'
  408. Subject length lower bound = 3
  409. JIT compilation was successful
  410. xab123
  411. 0: xab (JIT)
  412. 1: ab
  413. xfghi
  414. Failed: error -46: JIT stack limit reached
  415. /(?!\w)(?R)/
  416. abcd
  417. Failed: error -46: JIT stack limit reached
  418. =abc
  419. Failed: error -46: JIT stack limit reached
  420. /(?=\w)(?R)/
  421. =abc
  422. Failed: error -46: JIT stack limit reached
  423. abcd
  424. Failed: error -46: JIT stack limit reached
  425. /(?<!\w)(?R)/
  426. abcd
  427. Failed: error -46: JIT stack limit reached
  428. /(?<=\w)(?R)/
  429. abcd
  430. Failed: error -46: JIT stack limit reached
  431. /(a+|(?R)b)/
  432. aaa
  433. 0: aaa (JIT)
  434. 1: aaa
  435. bbb
  436. Failed: error -46: JIT stack limit reached
  437. /[^\xff]((?1))/BI
  438. ------------------------------------------------------------------
  439. Bra
  440. [^\x{ff}]
  441. CBra 1
  442. Recurse
  443. Ket
  444. Ket
  445. End
  446. ------------------------------------------------------------------
  447. Capture group count = 1
  448. Subject length lower bound = 1
  449. JIT compilation was successful
  450. abcd
  451. Failed: error -46: JIT stack limit reached
  452. /(x(?1)){4}/
  453. /[axm]{7}/
  454. /(.|.)*?bx/
  455. \= Expect limit exceeded
  456. aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabax\=match_limit=10000000
  457. Failed: error -47: match limit exceeded
  458. # Test JIT disable
  459. /abc/
  460. abc
  461. 0: abc (JIT)
  462. abc\=no_jit
  463. 0: abc
  464. /abc/jitfast
  465. abc
  466. 0: abc (JIT)
  467. abc\=no_jit
  468. 0: abc (JIT)
  469. # ----
  470. /[aC]/mg,firstline,newline=lf
  471. match\nmatch
  472. 0: a (JIT)
  473. /[aCz]/mg,firstline,newline=lf
  474. match\nmatch
  475. 0: a (JIT)
  476. //jit
  477. \=null_subject
  478. 0: (JIT)
  479. /(.)(.)/jitfast,replace=$2+$1
  480. ABCD
  481. 1: B+ACD
  482. /(...)-(...)/jitfast
  483. abc-xyz\=get=2
  484. 0: abc-xyz (JIT)
  485. 1: abc
  486. 2: xyz
  487. 2G xyz (3)
  488. # End of testinput17