From c23b7cd159af38f588ce4214d6ad37ceadf3c1a6 Mon Sep 17 00:00:00 2001 From: Camil Staps Date: Thu, 27 Jul 2017 23:32:59 +0200 Subject: Centralise errors (needed for positional errors #5) --- Sil/Error.dcl | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 Sil/Error.dcl (limited to 'Sil/Error.dcl') diff --git a/Sil/Error.dcl b/Sil/Error.dcl new file mode 100644 index 0000000..b953f60 --- /dev/null +++ b/Sil/Error.dcl @@ -0,0 +1,28 @@ +definition module Sil.Error + +from StdOverloaded import class toString + +from Sil.Syntax import :: Expression +from Sil.Types import :: Type + +:: Error + // Parser errors + = E.a: P_Invalid String a & toString a + | P_Expected String + // Type errors + | T_IllegalApplication Type Type + | T_IllegalField String Type + | T_TooHighTupleArity Int + // Compile errors + | C_UndefinedName String + | C_UndefinedField String + | C_VariableLabel + | C_FunctionOnStack + | C_TypeError Error Expression + | C_CouldNotDeduceType Expression + | C_TypeMisMatch Type Expression + | C_BasicInitWithoutValue String + // Miscellaneous + | UnknownError String + +instance toString Error -- cgit v1.2.3