// 08. 파서가 거부해야 하는 코드 // // 05와 목적이 다르다. 05는 구문은 맞지만 검사기가 거부해야 하는 파일이고, // 이 파일은 파서가 거부해야 하는 파일이다. // 아직 오류 복구가 없으므로 파서는 첫 오류에서 멈춘다 — 한 번에 하나씩 확인한다. // [E-syntax-effect-union] 파라미터 위치의 합집합은 문법에 존재하지 않는다. // 검사기가 아니라 파서가 거부한다 (eff_param 프로덕션에 "|"가 없다). pub fn peel[a, e: effects]( f: fn(a) effects e | {Logger.write}, ) effects e -> fn(a) // ERROR (parse): 파라미터 위치의 effects 절은 변수 단독 또는 리터럴 집합만 허용 // [E-syntax-match-guard] match 가드는 v0 문법에 없다 pub fn classify(e: PayError) -> String { match e { Network(r) if r.retryable => "retry", // ERROR (parse): match 가드는 지원되지 않음. 분기 본문에서 if를 쓸 것 _ => "other", } }