Module Check.Error

type operation =
| Op_Loc of Syntax.permission * IR.source
| Op_Assign of IR.source
| Op_Scope of IR.source
type loc_invalid_reason = operation
type error =
| PermissionDenied of operation
| AccessDeadLoc of IR.source * loc_invalid_reason
| LetResultInvalid of loc_invalid_reason
| FuncArgInvalid of IR.source * loc_invalid_reason
| FuncRetInvalid of string * loc_invalid_reason
exception Error of error