규칙 3.6
이 페이지에서

규칙 3.6

3장, 텍스트 구조와 이름 테스트

A type name an author writes must be lowercase when WGSL declares it and capitalized when TypeShade declares it, so the case of a name says where its meaning comes from.

규칙 본문과 그 아래 항목은 설계 문서에 적힌 컴파일러 원문이라 한국어 페이지에서도 영어로 둡니다.

근거

f32, vec3, mat4x4, array, atomic, texture_2d, sampler, storage and uniform are WGSL’s own words, and an author who reads them in the WGSL specification finds the same word here; Vec64Any, MatColumn, LaneKeys, TextureElem, TexelCoord2 and VecFor3 are names TypeScript needed and WGSL does not have, and the capital says so. TypeScript’s own convention, lowercase for a primitive and capitalized for an interface, points the other way for array, and it loses for a reason the ambient library already shows: SHADE_DTS is compiled as the whole library (lib: [] in src/language-service/host.ts, noLib: true in src/compiler/ts/diagnostic.ts), so it declares the minimal globals TypeScript demands itself, and interface Array<T> is already one of them, carrying length and an index signature so that a list literal has a type at all. The capitalized Array<T> is therefore the checker’s array, the one the standard library would have supplied, and the lowercase array<T, N> is the author’s, the one WGSL spells with a size. Raising the author’s name to Array would collide with that, and would have to raise vec3 and f32 with it, which is the whole WGSL vocabulary this surface exists to spell. What a TypeScript author expects of an array is bought with behaviour instead: the aggregate operations get member forms on that same interface Array<T>, which array<T, N> picks from by name (Pick<Array<T>, ArrayOps>, #177), and a read-only view is ReadView<T> mapping the surface’s own index signature to a readonly one rather than a borrowed ReadonlyArray.

출처

WGSL Types, whose type names are lowercase; src/language-service/ambient.ts’s own interface Array<T> and the lib: [] compiler options beside it.

검증 방식

테스트로 확인합니다. 테스트나 게이트 스크립트, CI 워크플로가 이 규칙을 가리키고, 아래 파일 가운데 하나라도 규칙을 더는 가리키지 않으면 추적 검사가 실패합니다.

컴파일러가 이 규칙을 적용하는 곳을 규칙이 직접 적은 내용입니다.

surface-names.test.ts, whose WGSL source check passes only for a name the fixture carries under WGSL’s spelling, so a capitalized WGSL name would be reported as unsourced and a lowercase TypeShade name needs a §9.3 row that review reads.

커밋 c66579bf에서 이 규칙을 확인하는 파일입니다. 파일마다 규칙을 처음 가리키는 줄로 연결했습니다.

설명하는 절

커밋 c66579bf의 표면 문서에서 이 규칙을 설명하는 절입니다.

함께 보기

소스

커밋 c66579bf의 규칙 원문:

이 페이지 편집 문제 보고