규칙 10.1
10장, 확장과 기능 테스트
A "use typeshade" file must not spell a WGSL enable or requires statement. A capability comes from the shape the file writes; an extension the shape cannot imply is turned on with a string directive beside "use typeshade", "enable <ext>", one WGSL extension name per directive, from the WGSL backend’s capability profile. A built-in value that needs an extension derives it (@builtin("clip_distances") derives enable clip_distances;), and a requires directive is emitted by the compiler, never written.
규칙 본문과 그 아래 항목은 설계 문서에 적힌 컴파일러 원문이라 한국어 페이지에서도 영어로 둡니다.
근거
the shape already says what the module needs, and a directive that says more than the shape uses can fail pipeline creation on a device that lacks the feature; the string directive covers the extensions no shape can imply, and names only what the writer can emit.
출처
Directives, Enable Extensions, Language Extensions; src/compiler/ts/texture-wgsl-only.test.ts (“the capability comes from the shape, never from enables”); surface §50. #168 changed this rule (closing #146), which had left no author spelling at all.
검증 방식
테스트로 확인합니다. 테스트나 게이트 스크립트, CI 워크플로가 이 규칙을 가리키고, 아래 파일 가운데 하나라도 규칙을 더는 가리키지 않으면 추적 검사가 실패합니다.
컴파일러가 이 규칙을 적용하는 곳을 규칙이 직접 적은 내용입니다.
enable f16; in a shader file is a parse error (TS8030); "enable <ext>" with a name outside the profile is TS8050, naming the profile; the derived and declared extensions are src/compiler/ts/builtin-values.test.ts.
커밋 c66579bf에서 이 규칙을 확인하는 파일입니다. 파일마다 규칙을 처음 가리키는 줄로 연결했습니다.
설명하는 절
커밋 c66579bf의 표면 문서에서 이 규칙을 설명하는 절입니다.
적용하는 오류 코드
규칙이 Enforced by 항목에서 가리키는 진단 코드와, 레지스트리 설명에서 이 규칙을 가리키는 진단 코드입니다.
-
TS8030SYNTAX - A TypeScript parse error (an unclosed parenthesis, a missing brace, an unexpected token) in a
"use typeshade"file, carried through as a TypeShade diagnostic so acompile()caller sees it without runningtsc. -
TS8050ENABLE_NAME - A file-level
"enable <extension>";directive (§50) naming an extension outside the vocabulary the WGSL backend's capability profile carries a directive for (clip_distances,dual_source_blending,f16,primitive_index,subgroups).
함께 보기
소스
커밋 c66579bf의 규칙 원문:
docs/language-design.md:1106(설계 문서)reqs/rules/RULE-1001.md(추적 항목)