규칙 7.3
7장, 표현식과 문 테스트
An empty switch case directly above a case with a body is one clause with several selectors (case 0: case 1: is WGSL’s case 0, 1:); an empty case with no case below it or directly above default:, and an empty default: with a case after it, must be refused; a case body must not fall through into the body of a case below it.
규칙 본문과 그 아래 항목은 설계 문서에 적힌 컴파일러 원문이라 한국어 페이지에서도 영어로 둡니다.
근거
WGSL’s switch has no fall-through, but a clause may carry several selectors, which is what stacked empty cases mean in TypeScript; the three refused shapes have no clause the compiler can join them to (surface §52; #168 changed this rule, which refused every empty case).
출처
검증 방식
테스트로 확인합니다. 테스트나 게이트 스크립트, CI 워크플로가 이 규칙을 가리키고, 아래 파일 가운데 하나라도 규칙을 더는 가리키지 않으면 추적 검사가 실패합니다.
컴파일러가 이 규칙을 적용하는 곳을 규칙이 직접 적은 내용입니다.
src/compiler/ts/switch-array.test.ts (shares one body between two selectors, on both targets); TS8017 SWITCH_CASE for the three refused shapes (switch case 1 has no body: …, switch case 1 sits above "default:" with no body of its own. …, "default:" has no body of its own and a clause follows it. …); TS8017 SWITCH_CASE at the label of a case or default: whose end is reachable and below which a clause has a body (switch case 0 falls through into the next case: …), by TypeScript’s own reachability (src/compiler/ts/fallthrough.ts), in src/compiler/ts/operators-statements.test.ts (a case body does not fall through, #202). A case that runs on only into empty clauses at the end of the switch runs nothing more in TypeScript either, and is not refused.
커밋 c66579bf에서 이 규칙을 확인하는 파일입니다. 파일마다 규칙을 처음 가리키는 줄로 연결했습니다.
설명하는 절
커밋 c66579bf의 표면 문서에서 이 규칙을 설명하는 절입니다.
적용하는 오류 코드
규칙이 Enforced by 항목에서 가리키는 진단 코드와, 레지스트리 설명에서 이 규칙을 가리키는 진단 코드입니다.
-
TS8017SWITCH_CASE - Invalid
switchcase: a label that is not an integer constant, does not fit the selector, or repeats another; an empty clause with no body below it to share (a trailing one, or one abovedefault:); a body whose end is reachable above a clause with a body, which TypeScript would run on into and WGSL does not (Rule 7.3); orcontinuein a switch no loop encloses.
함께 보기
소스
커밋 c66579bf의 규칙 원문:
docs/language-design.md:551(설계 문서)reqs/rules/RULE-0703.md(추적 항목)