📝 Record the autocomplete and matcher-design decisions
The matcher is now two three-overload factories; library.md documents why the union merge, inferred universe, conditional RequireKeys and cases-first paths were rejected, and lists the two open issues (the fallback sees all of T; a redundant _ is still accepted). testing.md records the language server as the autocomplete oracle, and CONTRIBUTING points the exception at the matcher's own test file. The backlog marks the design-doc and autocomplete groundwork done alongside the adoption.
This commit is contained in:
1 parent
58d127da4e
commit
05fad0fcd6
4 files changed
+166
-6
No files matched your search
@@ -67,6 +67,11 @@ before the implementation. The loop is **type → red → green → refactor**:
|
||||
`npm run verify` as the definition-of-done gate.
|
||||
|
||||
Every test pairs an `expectTypeOf(...)` with an `assert.*`; keep them together.
|
||||
The autocomplete tests (`src/util/__tests__/lsp-completion.test.ts` for the
|
||||
helper, `src/primitive.test.ts` for the matcher's popup) are the
|
||||
exception —
|
||||
the language server, not the type system, is the oracle (see
|
||||
[development/testing.md § Autocomplete](./development/testing.md#autocomplete)).
|
||||
Each test body follows **AAA (Arrange–Act–Assert)** with labeled blocks
|
||||
separated by a blank line: `// Arrange` sets up the inputs (e.g. the matcher
|
||||
factory), `// Act` exercises the subject once from them (not a second
|
||||
|
||||
Reference in new issue
Block a user