규칙 12.3
12장, 진단 테스트
Severity must follow the target’s role: a program WGSL refuses must be an error; a shortfall of GLSL ES 3.00 on a module with a render entry must be a warning that leaves wgsl in place; a compute-only module’s GLSL shortfall must be no diagnostic at all.
규칙 본문과 그 아래 항목은 설계 문서에 적힌 컴파일러 원문이라 한국어 페이지에서도 영어로 둡니다.
근거
an error would unsay a compile that succeeded, and a warning on a module GLSL could never serve is not news.
출처
src/compiler/ts/compile.ts; PR #165’s decision 1.
검증 방식
테스트로 확인합니다. 테스트나 게이트 스크립트, CI 워크플로가 이 규칙을 가리키고, 아래 파일 가운데 하나라도 규칙을 더는 가리키지 않으면 추적 검사가 실패합니다.
컴파일러가 이 규칙을 적용하는 곳을 규칙이 직접 적은 내용입니다.
src/compiler/ts/compile.contract.test.ts(keeps the wgsl of a render+compute module when only the GLSL backend cannot emit itandkeeps the wgsl of a vertex+fragment module whose binding the GLSL backend cannot spell), each asserting oneTS8015warning;- the same file (
yields wgsl but no glsl and no warning for a compute-only module); src/compiler/ts/reserved-names.test.ts(reports a struct field named half, on the field), which asserts oneTS8068warning,wgslcarryinghalfandglslundefined, and is a fourth pin of the same shape.
커밋 c66579bf에서 이 규칙을 확인하는 파일입니다. 파일마다 규칙을 처음 가리키는 줄로 연결했습니다.
적용하는 오류 코드
규칙이 Enforced by 항목에서 가리키는 진단 코드와, 레지스트리 설명에서 이 규칙을 가리키는 진단 코드입니다.
-
TS8015BACKEND - 프런트엔드가 받아들인 모듈을 백엔드가 출력하지 못하고 거부했습니다. 메시지는 백엔드가 쓴 그대로입니다.
-
TS8068RESERVED_NAME - A declared name that a target reserves, checked on the name the emit actually carries:
halfas a struct field, which ANGLE answers with "Illegal use of reserved word" in generated text the author never wrote.
함께 보기
소스
커밋 c66579bf의 규칙 원문:
docs/language-design.md:1261(설계 문서)reqs/rules/RULE-1203.md(추적 항목)