diff options
| author | Mel <einebeere@gmail.com> | 2022-05-28 20:56:10 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-05-28 20:56:10 +0000 |
| commit | a8e90423a6d29d7241b7d1f5ab60d607edffef9f (patch) | |
| tree | 5580f186ba5ac1283a0fce97654d633ddf63beff /pkg/lang/vm/mem/errors.go | |
| parent | 2ddb215e3b0d3818b3fac8f315d97d8020eb699f (diff) | |
| download | jinx-a8e90423a6d29d7241b7d1f5ab60d607edffef9f.tar.zst jinx-a8e90423a6d29d7241b7d1f5ab60d607edffef9f.zip | |
Harden Mem further and add tests
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) } |
