Commit 762a0d6
mforce
fix(#417): codex round 99 — full C# identifier categories in type scan
IsLetterOrDigit misses identifier continuation characters the language
permits as LITERALS — letter numbers, connector punctuation, combining
marks, and format characters — so a tuple element name carrying a
decomposed combining mark stopped TryConsumeTypeParen and left the
hole identifier-led while the interpolated null bridged the fragments.
IsCSharpIdentifierChar now implements the language's identifier-part
categories and replaces IsLetterOrDigit in the type scanner's
whitelist.
The atom checks' keyword walk deliberately keeps the narrow class:
keywords are pure ASCII and an escape- or combining-spelled lookalike
is an IDENTIFIER by the spec, so passing it as identifier-led is
correct, not a gap.
Mutation-verified: a tuple element name with a literal decomposed
combining mark (byte-verified present in the injected file) and one
with connector punctuation each failed PostgresImagePin with the
static-atom refusal; a hole reading a combining-mark runtime
identifier passed. Restored, rebuilt, all three SchemaDocsTests
green.1 parent 54c6671 commit 762a0d6
1 file changed
Lines changed: 15 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1141 | 1141 | | |
1142 | 1142 | | |
1143 | 1143 | | |
| 1144 | + | |
| 1145 | + | |
| 1146 | + | |
| 1147 | + | |
| 1148 | + | |
| 1149 | + | |
| 1150 | + | |
| 1151 | + | |
| 1152 | + | |
| 1153 | + | |
| 1154 | + | |
| 1155 | + | |
| 1156 | + | |
| 1157 | + | |
1144 | 1158 | | |
1145 | 1159 | | |
1146 | 1160 | | |
| |||
1183 | 1197 | | |
1184 | 1198 | | |
1185 | 1199 | | |
1186 | | - | |
| 1200 | + | |
1187 | 1201 | | |
1188 | 1202 | | |
1189 | 1203 | | |
| |||
0 commit comments