Skip to content

Reject grouped and quoted function names - #397

Closed
Narek-Khachikyan wants to merge 1 commit into
jmespath:developfrom
Narek-Khachikyan:fix/function-name-syntax
Closed

Narek-Khachikyan wants to merge 1 commit into
jmespath:developfrom
Narek-Khachikyan:fix/function-name-syntax

Conversation

@Narek-Khachikyan

Copy link
Copy Markdown

Summary

search('( "length" )(@)', {"x": 1}) calls length and returns 1, bypassing the existing prohibition on quoted function names.

_token_nud_lparen discards grouping in the AST, while _token_led_lparen checks only that its left AST node is a field. A parenthesized quoted or unquoted field is therefore misclassified as a function name. Checking the immediately preceding token preserves the lexical restriction.

Expected: Compilation raises ParseError: a function call requires an unquoted function name followed directly by its argument parentheses.

- infer function names from field AST nodes
+ also require an unquoted identifier token

Evidence

JMESPATH_TEST=tests/compliance/function_name_syntax.json .tox/campaign/bin/python -m pytest tests/test_compliance.py -q --tb=short detects the baseline error and passes with the fix; the full pytest suite with branch coverage passes.

Merge Danger

Door: two-way. Focused correction with regression tests; no new API.

Blast Radius: parsing.

@Narek-Khachikyan Narek-Khachikyan closed this by deleting the head repository Nov 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant