오류 진단
Wave 컴파일러는 오류를 코드(E####)와 함께, 소스 위치/맥락/해결 힌트까지 한 번에 보여줍니다.
출력 형식
기본 형식은 다음과 같습니다.
error[E3001]: semantic validation failed: use of undeclared identifier `x`
--> file.wave:2:18
1 | fun main() {
2 | println("{}", x);
| ^ not found in this scope
= context: semantic validation
= help: fix mutability, scope, and expression validity issues
출력 항목:
error[E....]: 에러 코드와 요약--> file:line:column: 문제 위치- 소스 블록 + caret(
^) 하이라이트 context,expected,found,note,help,suggestion
대표 에러 코드
E1001예상하지 못한 문자E1002닫히지 않은 블록 주석E1003닫히지 않은 문자열E1004잘못된 문자열 escapeE1005잘못된 문자 리터럴E1006잘못된 숫자 리터럴 형식E2001파서 구문 오류E3001의미 분석(semantic validation) 오류E3102null을 비포인터에 대입E3201암시적 정수 축소 금지E9001백엔드 코드생성 내부 오류
백엔드 오류도 소스 위치 표시
코드 생성(LLVM) 단 계에서 내부 panic이 발생해도, 가능한 경우 실제 호출/선언 위치를 추론해 표시합니다.
error[E9001]: compiler internal error during code generation (llvm-ir-generation)
--> test.wave:12:9
= found: Function 'foo' not found
= note: source position inferred from unresolved function name in backend panic
위치 추론이 불가능한 경우에는 fallback 위치가 사용되며, 해당 사실이 note에 함께 표시됩니다.