module Message = struct type t = | IllegalCharacter | SyntaxError | UnboundVariable | IllTyped | CannotInferType | Bug let default_severity : t -> Asai.Diagnostic.severity = function | IllegalCharacter -> Error | SyntaxError -> Error | UnboundVariable -> Error | IllTyped -> Error | CannotInferType -> Error | Bug -> Bug let short_code : t -> string = function (* parser errors *) | IllegalCharacter -> "E101" | SyntaxError -> "E102" (* elaboration errors *) | UnboundVariable -> "E201" | IllTyped -> "E202" | CannotInferType -> "E202" (* misc *) | Bug -> "E900" end include Asai.Reporter.Make(Message) let illegal_character ~loc char = fatalf ~loc IllegalCharacter "illegal character '%s'" (Char.escaped char) let syntax_error ~loc = fatalf ~loc SyntaxError "syntax error" let unbound_variable id = fatalf UnboundVariable "unbound variable '%a'" Ident.pp id let expected_universe fmt x = fatalf IllTyped "expected a universe but got %a" fmt x let bug msg = fatalf Bug msg