부록 E: 진단 색인
이 표는 최종 컴파일러의 오류 레지스트리에서 생성됩니다. 코드는 안정적인 식별자입니다. 메시지와 보조 레이블은 소스 프로그램에 대한 맥락을 덧붙입니다. 주 레이블은 진단을 일으킨 위치를 가리킵니다.
| 코드 | 의미 |
|---|---|
E0001 | 잘못된 토큰 |
E0002 | 잘못된 구문 |
E0003 | 잘못된 레이아웃 |
E0004 | 잘못된 프로젝션 점 |
E0101 | 바인딩되지 않은 변수 |
E0102 | 중복 정의 |
E0103 | 바인딩되지 않은 생성자 또는 타입 |
E0104 | 중복 필드 |
E0110 | 예약된 연산자의 재정의 |
E0111 | Prelude 밖의 프리미티브 |
E0120 | 함수가 아닌 재귀 바인딩 |
E0130 | 정의 없는 결합성 |
E0201 | 타입 불일치 |
E0202 | 무한 타입 |
E0203 | 시그니처가 너무 일반적임 |
E0210 | 인스턴스 없음 |
E0211 | 잘못된 인스턴스 메서드 또는 중복 인스턴스 |
E0230 | 모호한 타입 |
E0240 | 레코드는 생성자를 하나만 가져야 함 |
E0241 | 필드 누락 |
E0242 | 중복된 필드 바인딩 |
E0243 | 알 수 없는 필드 |
E0244 | 타입이 필드를 선언하지 않음 |
E0245 | 모호한 필드 접근 |
E0250 | Main은 IO () 타입이어야 함 |
E0301 | 카인드 불일치 |
E0302 | 부분 적용된 동의어 |
E0303 | 순환 동의어 |
W0001 | 비망라적 매치 |
W0002 | 중복된 절 |
어휘 분석, 레이아웃, 파싱은 E00xx를 사용합니다. 이름 변환은 E01xx, 타입 검사는 E02xx, 카인드 검사는 E03xx를 사용합니다. 한 패스가 여러 진단을 보고할 수 있지만, 드라이버는 오류가 발생한 뒤에는 이후 패스를 실행하지 않습니다.
W0001은 누락되었을 수 있는 매치를 보고하며, 가능한 경우 증인(witness) 패턴을 함께 제시합니다. W0002는 도달할 수 없는 절을 식별합니다. 경고는 프로그램을 거부하지 않습니다. 실행이 실제로 도달한 누락된 매치는 런타임 오류를 일으킵니다.
런타임 오류에는 컴파일러 코드 대신 메시지가 있습니다. 런타임 오류 메시지는 fun:으로 시작하며 상태 1로 종료합니다. exitWith는 요청된 상태를 사용합니다. 컴파일러 덤프와 내부 린트 실패는 개발자 도구이지, 진단 API를 대신하는 수단이 아닙니다.
레코드 필드가 모호하면 수신자의 타입을 명시하십시오. 클래스 제약이 모호하면 제약된 타입이 결과에 드러나게 하거나 명시적으로 선택하십시오. Fun은 해소되지 않은 수치 제약에 기본 타입을 지정하지 않습니다.