From 5d227bcd0055d02e1d49a3dcd27e80a756923d5b Mon Sep 17 00:00:00 2001 From: Malte Voos Date: Sun, 23 Jun 2024 23:31:59 +0200 Subject: split code into smaller libraries and make a better repl --- src/reporter/Reporter.ml | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/reporter/Reporter.ml (limited to 'src/reporter/Reporter.ml') diff --git a/src/reporter/Reporter.ml b/src/reporter/Reporter.ml new file mode 100644 index 0000000..ee04c23 --- /dev/null +++ b/src/reporter/Reporter.ml @@ -0,0 +1,40 @@ +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 -- cgit 1.4.1