규칙 9.8
9장, 내장 함수와 TypeShade 확장 테스트
A row, a declaration, a signature, an overload, or a member must never be added for a compiler-internal name (§2.1), under its own id, under an allowed id, or under a new spelling that denotes the same thing. The reviewer reads the row’s reason, and reads a changed signature of an existing name as a new spelling. A reason that describes a representation the compiler chose (the halves of an emulated value, a lowering intermediate, a mangled name) describes an internal name, whatever the id.
규칙 본문과 그 아래 항목은 설계 문서에 적힌 컴파일러 원문이라 한국어 페이지에서도 영어로 둡니다.
근거
see Rule 2.2; a row is how a decision is recorded, not how a check is bypassed, and a new id is the cheapest bypass there is.
출처
PR #166’s body, section “A design rule this lane settled” (“the maintainer’s decision is that they must not exist on the surface”, written against an issue text that asked for an author spelling).
검증 방식
테스트로 확인합니다. 테스트나 게이트 스크립트, CI 워크플로가 이 규칙을 가리키고, 아래 파일 가운데 하나라도 규칙을 더는 가리키지 않으면 추적 검사가 실패합니다.
컴파일러가 이 규칙을 적용하는 곳을 규칙이 직접 적은 내용입니다.
surface-names.test.ts(no pre-emit intrinsic id is declared or listed), which fails on a row for any id ofPRE_EMIT_INTRINSICSbutf64;- the same test (
the f64 family declares only the constructor forms WGSL gives the type it stands in for), which fails on a signature off64or of avecNf64outside WGSL’s constructor forms; - the review Rule 13.1 and
CLAUDE.mdrequire of every pull request that changes what an author can write, which alone catches a row under any other id, a row for a generated backend name, and a signature added to a name outside the f64 family; - that review, which reads the change for new authorable names and new signatures that are not WGSL’s, applying the definition of §2.1 to what the name, or the signature, denotes.
커밋 c66579bf에서 이 규칙을 확인하는 파일입니다. 파일마다 규칙을 처음 가리키는 줄로 연결했습니다.
함께 보기
소스
커밋 c66579bf의 규칙 원문:
docs/language-design.md:1085(설계 문서)reqs/rules/RULE-0908.md(추적 항목)