Implemented Value interface

This commit is contained in:
Eduard Urbach 2025-02-28 12:15:19 +01:00
parent fbcadae268
commit 9cfca57111
Signed by: eduard
GPG key ID: 49226B848C78F6C8
36 changed files with 194 additions and 153 deletions

View file

@ -75,11 +75,11 @@ func (f *Function) CompileCondition(condition *expression.Expression, successLab
return err
}
if !types.Is(value.Type, types.Bool) {
return errors.New(&errors.TypeMismatch{Encountered: value.Type.Name(), Expected: types.Bool.Name()}, f.File, condition.Token.Position)
if !types.Is(value.Type(), types.Bool) {
return errors.New(&errors.TypeMismatch{Encountered: value.Type().Name(), Expected: types.Bool.Name()}, f.File, condition.Token.Position)
}
switch value.Kind {
switch value := value.(type) {
case eval.Number:
if value.Number == 0 {
f.Jump(asm.JUMP, failLabel)
@ -89,7 +89,7 @@ func (f *Function) CompileCondition(condition *expression.Expression, successLab
f.FreeRegister(value.Register)
f.Jump(asm.JE, failLabel)
default:
panic(fmt.Errorf("%s: not implemented: %d", f.UniqueName, value.Kind))
panic(fmt.Errorf("%s: not implemented: %v", f.UniqueName, value))
}
return nil