Implemented Value interface
This commit is contained in:
parent
fbcadae268
commit
9cfca57111
36 changed files with 194 additions and 153 deletions
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue