Added Value type

This commit is contained in:
Eduard Urbach 2025-02-27 14:16:25 +01:00
parent a905710982
commit da6dcc4433
Signed by: eduard
GPG key ID: 49226B848C78F6C8
8 changed files with 65 additions and 34 deletions

View file

@ -30,31 +30,31 @@ func (f *Function) CompileAssignArray(node *ast.Assign) error {
Length: byte(1),
}
index := left.Children[1]
indexExpr := left.Children[1]
if index.Token.IsNumeric() {
offset, err := f.ToNumber(index.Token)
if indexExpr.Token.IsNumeric() {
index, err := f.ToNumber(indexExpr.Token)
if err != nil {
return err
}
memory.Offset = int8(offset)
memory.Offset = int8(index)
} else {
typ, indexRegister, isTemporary, err := f.Evaluate(index)
index, isTemporary, err := f.Evaluate(indexExpr)
if err != nil {
return err
}
if !types.Is(typ, types.AnyInt) {
return errors.New(&errors.TypeMismatch{Encountered: typ.Name(), Expected: types.AnyInt.Name()}, f.File, index.Token.Position)
if !types.Is(index.Type, types.AnyInt) {
return errors.New(&errors.TypeMismatch{Encountered: index.Type.Name(), Expected: types.AnyInt.Name()}, f.File, indexExpr.Token.Position)
}
memory.OffsetRegister = indexRegister
memory.OffsetRegister = index.Register
if isTemporary {
defer f.FreeRegister(indexRegister)
defer f.FreeRegister(index.Register)
}
}