test(anchor): widen JS regex extraction guard
Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
parent
767285f21f
commit
2ef838be8c
1 changed files with 36 additions and 2 deletions
|
|
@ -92,7 +92,28 @@ def _looks_like_js_regex_literal_start(src: str, idx: int) -> bool:
|
|||
previous = _previous_significant_js_token(src, idx)
|
||||
if previous in {"return", "throw", "case", "delete", "typeof", "void", "yield"}:
|
||||
return True
|
||||
return previous in {"", "(", "[", "{", "=", ":", ",", ";", "!", "?", "&", "|"}
|
||||
return previous in {
|
||||
"",
|
||||
"(",
|
||||
"[",
|
||||
"{",
|
||||
"=",
|
||||
":",
|
||||
",",
|
||||
";",
|
||||
"!",
|
||||
"?",
|
||||
"&",
|
||||
"|",
|
||||
"+",
|
||||
"-",
|
||||
"*",
|
||||
"%",
|
||||
"^",
|
||||
"~",
|
||||
"<",
|
||||
">",
|
||||
}
|
||||
|
||||
|
||||
def _skip_js_regex_literal(src: str, idx: int) -> int:
|
||||
|
|
@ -218,7 +239,6 @@ def _find_function_declaration(src: str, name: str) -> tuple[int, int]:
|
|||
|
||||
def _function_source(src: str, name: str) -> str:
|
||||
start, params_open = _find_function_declaration(src, name)
|
||||
assert params_open != -1, f"{name} params not found"
|
||||
params_close = _matching_delimiter(src, params_open, "(", ")")
|
||||
brace = src.find("{", params_close)
|
||||
assert brace != -1, f"{name} body not found"
|
||||
|
|
@ -293,6 +313,20 @@ def test_function_extractor_ignores_destructured_parameter_braces():
|
|||
assert "fallback = true" not in body
|
||||
|
||||
|
||||
def test_function_extractor_skips_regex_after_binary_operator():
|
||||
source = """
|
||||
function sample(){
|
||||
const matcher = fallback || /\\{[^}]+\\}/;
|
||||
if(anchorOwnedAssistantRawIdxs.has(rawIdx)) return;
|
||||
}
|
||||
"""
|
||||
|
||||
body = _function_body(source, "sample")
|
||||
|
||||
assert "const matcher = fallback || /\\{[^}]+\\}/;" in body
|
||||
assert "if(anchorOwnedAssistantRawIdxs.has(rawIdx)) return;" in body
|
||||
|
||||
|
||||
def test_transparent_raw_content_helper_is_fallback_only_when_anchor_scene_absent():
|
||||
helper = _function_body(_ui_js(), "_transparentStreamOrderedParts")
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue