Skip to content

Fix spurious surface.requiresWithoutDeferred for qualified deferred names (#26)#30

Merged
yavorpanayotov merged 1 commit into
mainfrom
fix/26-qualified-deferred-requires-hint
Jun 11, 2026
Merged

Fix spurious surface.requiresWithoutDeferred for qualified deferred names (#26)#30
yavorpanayotov merged 1 commit into
mainfrom
fix/26-qualified-deferred-requires-hint

Conversation

@yavorpanayotov

Copy link
Copy Markdown
Collaborator

Fixes #26.

findSurfaceRequiresDeferredHintIssues collected deferred names with the dot-only pattern /^\s*deferred\s+([A-Za-z_][A-Za-z0-9_.]*)\b/gm, so deferred billing/InvoiceWorkflow registered only billing. A surface clause requires InvoiceWorkflow: then failed the name match and emitted a spurious allium.surface.requiresWithoutDeferred warning.

Changes

  • The deferred-name pattern now accepts /, and module-qualified names register both the full name and the unqualified part after the alias. As a side effect, the alias alone (requires billing:) no longer silently satisfies the match — that was a false negative before.
  • Tests: qualified hint matches the bare name, qualified hint with a dotted unqualified part matches its trailing segment, and the alias alone still warns.
  • Documented the matching semantics in allium-extension-behaviour.allium and added a porting note to rust-checker-parity.md, since the Rust checker has no equivalent check yet (the parity hazard flagged in the issue).

Testing

All workspace tests pass (309 extension + 8 LSP, 0 failures).

🤖 Generated with Claude Code

…ames (#26)

findSurfaceRequiresDeferredHintIssues collected deferred names with a
dot-only pattern, so `deferred billing/InvoiceWorkflow` registered only
`billing` and a `requires InvoiceWorkflow:` clause was warned as having
no deferred hint. The pattern now accepts module-qualified names and
registers the unqualified form alongside the full name, while the alias
alone no longer satisfies the match.

Also documents the matching semantics in the extension behaviour spec
and flags the porting note in the Rust parity doc, since the Rust
checker has no equivalent check yet.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@yavorpanayotov yavorpanayotov merged commit e659bdc into main Jun 11, 2026
2 checks passed
@yavorpanayotov yavorpanayotov deleted the fix/26-qualified-deferred-requires-hint branch June 11, 2026 13:32
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.

Spurious surface.requiresWithoutDeferred for qualified deferred names

1 participant