diff options
Diffstat (limited to 'pkg/lang/vm/mem/errors.go')
| -rw-r--r-- | pkg/lang/vm/mem/errors.go | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/pkg/lang/vm/mem/errors.go b/pkg/lang/vm/mem/errors.go index e7a3f8f..f5dcc86 100644 --- a/pkg/lang/vm/mem/errors.go +++ b/pkg/lang/vm/mem/errors.go @@ -1,17 +1,36 @@ package mem -import "errors" +import ( + "errors" + "fmt" +) var ( ErrMemOverflow = errors.New("memory overflow, cannot allocate more than 10000 memory cells") - - ErrFatalNonFreeCell = errors.New("non-free cell marked as free") ) +type ErrInvalidCellKind struct { + Kind CellKind +} + +func (e ErrInvalidCellKind) Error() string { + return fmt.Sprintf("cannot allocate cell of kind %s", e.Kind) +} + type ErrInvalidMemAccess struct { Ptr Ptr } func (e ErrInvalidMemAccess) Error() string { - return "invalid memory access at " + e.Ptr.String() + return fmt.Sprintf("invalid memory access at %d", e.Ptr) +} + +type ErrDifferingCellKind struct { + Ptr Ptr + Expected CellKind + Got CellKind +} + +func (e ErrDifferingCellKind) Error() string { + return fmt.Sprintf("tried assigning %v to mem cell of type %v at %d", e.Got, e.Expected, e.Ptr) } |
