diff options
| author | Mel <einebeere@gmail.com> | 2022-08-22 23:41:49 +0000 |
|---|---|---|
| committer | Mel <einebeere@gmail.com> | 2022-08-22 23:41:49 +0000 |
| commit | e22df631c4428f8dea4d5784a8a7840d2f84c6be (patch) | |
| tree | 084c233741374cdabde8d70b49988b3dca686719 /pkg/lang/vm/vm.go | |
| parent | 24183cd5363b96d83292df17d44fa79d8b47a89f (diff) | |
| download | jinx-e22df631c4428f8dea4d5784a8a7840d2f84c6be.tar.zst jinx-e22df631c4428f8dea4d5784a8a7840d2f84c6be.zip | |
Generate runtime debug info with source locations
Diffstat (limited to 'pkg/lang/vm/vm.go')
| -rw-r--r-- | pkg/lang/vm/vm.go | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/pkg/lang/vm/vm.go b/pkg/lang/vm/vm.go index 4d4d5ca..b18e7cb 100644 --- a/pkg/lang/vm/vm.go +++ b/pkg/lang/vm/vm.go @@ -121,10 +121,16 @@ func (vm *VM) executeModule(moduleID int) error { vm.advancePC(advance) if decision, err := vm.step(code, op); err != nil { + loc, ok := code.Debug().PCToLoc(vm.pc()) + line := loc.Row + if !ok { + line = -1 + } + return Error{ Pos: vm.pos, Module: module.Name(), - Line: code.Debug().PCToLine(vm.pc()), + Line: line, Err: err, } } else if decision == stepDecisionHalt { |
