Skip to content

hrw4u: Fix u4wrh emitting quoted header names in Prism output#13207

Open
Clendenin wants to merge 1 commit into
apache:masterfrom
Clendenin:bugfix/u4wrh-quoted-header
Open

hrw4u: Fix u4wrh emitting quoted header names in Prism output#13207
Clendenin wants to merge 1 commit into
apache:masterfrom
Clendenin:bugfix/u4wrh-quoted-header

Conversation

@Clendenin
Copy link
Copy Markdown
Contributor

Summary

Header qualifiers that contain only characters legal in the Prism IDENT rule
were being wrapped in double quotes at emission time, which the grammar rejects
on re-parse. Quote a qualifier only when it actually contains characters that
require quoting.

Adds a parametrized unit test for Validator.unquote_if_ident covering
IDENT-safe stripping, space-containing qualifiers, empty strings, and
leading-digit rejection, symmetric with the existing needs_quotes and
quote_if_needed tests.

Header qualifiers that contain only characters legal in the HRW4U IDENT rule
were being wrapped in double quotes at emission time, which the grammar
rejects on re-parse. Quote a qualifier only when it actually contains
characters that require quoting.

Adds a parametrized unit test for Validator.unquote_if_ident covering
IDENT-safe stripping, space-containing qualifiers, empty strings, and
leading-digit rejection, symmetric with the existing needs_quotes and
quote_if_needed tests.
@Clendenin Clendenin force-pushed the bugfix/u4wrh-quoted-header branch from 57d709a to c74b482 Compare May 27, 2026 23:19
@zwoop zwoop requested review from Copilot and zwoop May 29, 2026 17:13
@zwoop zwoop added the hrw4u label May 29, 2026
@zwoop zwoop added this to the 11.0.0 milestone May 29, 2026
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes the u4wrh reverse compiler emitting double-quoted header names (e.g. "X-Foo") which the hrw4u grammar's IDENT rule rejects on re-parse. Introduces a Validator.unquote_if_ident helper that strips surrounding quotes when the inner value is a valid grammar IDENT, and applies it in the set/rm and add-header reverse-emit paths.

Changes:

  • Add GRAMMAR_IDENT regex (mirrors hrw4u.g4 IDENT rule) and Validator.unquote_if_ident helper.
  • Use the helper in _handle_set_rm_operation and the add-header branch of _handle_statement_function in hrw_symbols.py.
  • Add reverse-compiler round-trip test fixtures and a parametrized unit test, plus an exceptions entry for the asymmetric hyphen_header case.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
File Description
tools/hrw4u/src/common.py Adds GRAMMAR_IDENT regex matching the grammar IDENT rule.
tools/hrw4u/src/validation.py Adds Validator.unquote_if_ident helper.
tools/hrw4u/src/hrw_symbols.py Strips quotes from IDENT-safe qualifiers in set/rm and add-header reverse emit.
tools/hrw4u/tests/test_errors.py Parametrized unit test for unquote_if_ident.
tools/hrw4u/tests/data/vars/hyphen_header.input.txt New round-trip fixture (hrw4u source).
tools/hrw4u/tests/data/vars/hyphen_header.output.txt Expected HRW config output.
tools/hrw4u/tests/data/vars/exceptions.txt Marks fixture as u4wrh-direction-only.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants