규칙 3.8
3장, 텍스트 구조와 이름 테스트
A shader module that host code imports is named *.shade.ts, and a host import of a .ts file that begins with the directive under any other name must be refused with the rename.
규칙 본문과 그 아래 항목은 설계 문서에 적힌 컴파일러 원문이라 한국어 페이지에서도 영어로 둡니다.
근거
the bundler and the host program’s tsconfig decide what an import is before they read a statement of the file: the Vite plugin picks the modules it compiles by the name, and the host view name.shade.typeshade.ts that tsc reads in place of the source (surface §64) is named after it, as is the exclude that keeps the source out of the host program. A shader under another name would reach the host as its source, which a host program cannot type-check and a bundle would run as JavaScript.
The name decides how a host imports the file; the directive still decides what a shader is, for the compiler and the language service (Rule 3.1).
출처
change 0009 in changes/ (“The shader module is picked by its name”); docs/roadmap.md item 16.
검증 방식
테스트로 확인합니다. 테스트나 게이트 스크립트, CI 워크플로가 이 규칙을 가리키고, 아래 파일 가운데 하나라도 규칙을 더는 가리키지 않으면 추적 검사가 실패합니다.
컴파일러가 이 규칙을 적용하는 곳을 규칙이 직접 적은 내용입니다.
the Vite plugin in src/vite.ts, which refuses a project .ts that begins with the directive and is not named *.shade.ts (… begins with "use typeshade", so it is a shader module, and a host imports a shader module by the name *.shade.ts (Rule 3.8). Rename it to terrain.shade.ts and import it by that name.), and tshc sync, which writes a view for a *.shade.ts only; pinned by src/vite.test.ts.
커밋 c66579bf에서 이 규칙을 확인하는 파일입니다. 파일마다 규칙을 처음 가리키는 줄로 연결했습니다.
설명하는 절
커밋 c66579bf의 표면 문서에서 이 규칙을 설명하는 절입니다.
함께 보기
소스
커밋 c66579bf의 규칙 원문:
docs/language-design.md:180(설계 문서)reqs/rules/RULE-0308.md(추적 항목)