Skip to content

Commit 0e670df

Browse files
committed
docs(record): the identity refusal's message was refined during implementation
1 parent 92b1d9c commit 0e670df

1 file changed

Lines changed: 10 additions & 0 deletions

File tree

.agents/docs/2026-09-09-two-answers-and-two-silences.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -441,6 +441,16 @@ needs that rule's depfile and BMI-preservation machinery. It cannot answer "is
441441
this an interface". Splitting the question that way is what makes the empty-flag
442442
state unreachable rather than merely unlikely.
443443

444+
One refinement came out of implementing A.1 rather than out of designing it.
445+
The identity refusal first quoted the name it had RECORDED, which is empty
446+
whenever the tokeniser could not read the declaration at all — so a non-ASCII
447+
module name produced `'' is not a module name`, a sentence naming nothing the
448+
author can search for. `is_module_name_char` tests bytes with `std::isalnum`,
449+
and every byte of a UTF-8 sequence is false. The message now quotes what was
450+
READ. This is not a new restriction: GCC 16.1 refuses the same declaration with
451+
`unrecognized 'MODULE-EXPORT ...'`, so the two versions of mcpp differ in which
452+
sentence the author gets, not in whether the file builds.
453+
444454
`ConditionalConfig::empty()` composes rather than enumerating: it calls
445455
`BuildInputs::empty()` and `XlingsConfig::empty()`, the latter of which already
446456
existed. That is #258's medicine applied one level further out, and it closed a

0 commit comments

Comments
 (0)