Rule 9.1
Chapter 9, Built-in functions and the TypeShade extensions Test
Every builtin id the compiler can emit must be classified as portable (PORTABLE_INTRINSICS) or as a row of the INTRINSICS registry; an unclassified id must not reach a backend.
The rule text and the parts under it are the compiler's own English, as the design document writes them.
Rationale
“absent from the registry” used to mean “assume identical”, and a new builtin whose spelling differs would then be emitted wrong on one target and caught only at GPU compile time.
Derives from
Built-in Functions; the comment above PORTABLE_INTRINSICS in src/core/intrinsics.ts.
How it is verified
Checked by a test. A test, a gate script or a CI workflow names this rule, and the traceability check fails when a file listed below stops naming it.
Where the rule says the compiler enforces it:
src/core/intrinsic-coverage.test.ts (inline snapshot).
The files that verify it at commit 26de7be8, each at the first line that names the rule:
-
src/core/intrinsic-coverage.test.ts:1(checked by the compiler's own test)
See also
- Rule 8.24 Test
- Rule 9.2 Test
- Design rules
- Error codes
Source
The rule at commit 26de7be8:
docs/language-design.md:912(the design document)reqs/rules/RULE-0901.md(its traceability item)