package cangjie_lua.errors
// ============================================================
// CompileError —— 编译/运行错误模型
// 用 Option 代替 throw 的错误传播机制的核心数据结构。
// ============================================================
/// 错误阶段:标识错误来源
public enum ErrorStage {
| LEXER
| PARSER
| RUNTIME
| IO
}
/// 编译错误:包含阶段、信息和行号
public class CompileError {
public let stage: ErrorStage
public let message: String
public let line: Int64
public init(stage: ErrorStage, message: String, line: Int64) {
this.stage = stage
this.message = message
this.line = line
}
public func toDisplayString(): String {
let stageName = match (stage) {
case ErrorStage.LEXER => "LEXER"
case ErrorStage.PARSER => "PARSER"
case ErrorStage.RUNTIME => "RUNTIME"
case ErrorStage.IO => "IO"
}
if (line > 0) {
return "[${stageName}] line ${line}: ${message}"
}
return "[${stageName}] ${message}"
}
}