aboutsummaryrefslogtreecommitdiff
path: root/Sil/Error.dcl
diff options
context:
space:
mode:
Diffstat (limited to 'Sil/Error.dcl')
-rw-r--r--Sil/Error.dcl28
1 files changed, 28 insertions, 0 deletions
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