// Selected Test262 witnesses retain their upstream copyright and BSD license in THIRD_PARTY_NOTICES.md. // Copyright 2022 Igalia S.L. All rights reserved. // Copyright (C) 2017 the V8 project authors. All rights reserved. // Copyright 2025 Mathias Bynens. All rights reserved. export interface RegexWitness { readonly pattern: string; readonly flags: string; readonly hits: readonly string[]; readonly misses: readonly string[]; readonly rejectCandidates: boolean; readonly source: string; } const test262 = "https://github.com/tc39/test262/blob/main/test/built-ins/RegExp/"; const local = "JS-to-rg translation contract"; export const REGEX_TRANSLATION_CORPUS: readonly RegexWitness[] = [ { pattern: "(?:([])\\1|b)", flags: "", hits: ["b"], misses: ["a"], rejectCandidates: true, source: local, }, { pattern: "(?!a)[a-z]", flags: "", hits: ["b", "z"], misses: ["a", "A"], rejectCandidates: false, source: local, }, { pattern: "(?=ab)a[bcd]", flags: "", hits: ["ab"], misses: ["ac", "ad"], rejectCandidates: false, source: local, }, { pattern: "[a-z](?<=b)", flags: "", hits: ["b"], misses: ["a", "c"], rejectCandidates: false, source: local, }, { pattern: "(?!ab)[a-z]{2}", flags: "", hits: ["ac", "ba"], misses: ["ab"], rejectCandidates: false, source: local, }, { pattern: "[a-z]{2}(?a)|(?b))\\k", flags: "", hits: ["aa", "bb"], misses: ["abab", "cdef"], rejectCandidates: false, source: `${test262}named-groups/duplicate-names-exec.js`, }, { pattern: "(?:(?:(?a)|(?b))\\k){2}", flags: "", hits: ["aabb"], misses: ["abab"], rejectCandidates: false, source: `${test262}named-groups/duplicate-names-exec.js`, }, { pattern: "^(?:(?x)|(?y)|z)\\k$", flags: "", hits: ["xx", "z"], misses: ["zz"], rejectCandidates: false, source: `${test262}named-groups/duplicate-names-exec.js`, }, { pattern: "^(?:(?x)|(?y)|z){2}\\k$", flags: "", hits: ["xz", "yz"], misses: ["xzx", "yzy"], rejectCandidates: false, source: `${test262}named-groups/duplicate-names-exec.js`, }, { pattern: "(.)(?<=(\\1\\1))", flags: "i", hits: ["abB"], misses: ["ab"], rejectCandidates: false, source: `${test262}lookBehind/back-references.js`, }, { pattern: "(..)(?<=\\1\\1\\1)", flags: "", hits: ["fababab"], misses: ["fabxbab", "faxabab"], rejectCandidates: false, source: `${test262}lookBehind/back-references.js`, }, { pattern: "(?<=(.))(\\w+)(?=\\1)", flags: "", hits: [" 'foo' ", ' "foo" '], misses: [' .foo" '], rejectCandidates: false, source: `${test262}lookBehind/back-references.js`, }, { pattern: "(?<=ab(?=c)\\wd)\\w\\w", flags: "", hits: ["abcdef"], misses: [], rejectCandidates: false, source: `${test262}lookBehind/nested-lookaround.js`, }, { pattern: "(?<=a(?=([bc]{2}(?