Implemented type checks

This commit is contained in:
Eduard Urbach 2024-08-07 16:20:03 +02:00
parent baa2463b4b
commit cacee7260a
Signed by: eduard
GPG key ID: 49226B848C78F6C8
19 changed files with 199 additions and 79 deletions

View file

@ -31,7 +31,7 @@ func (f *Function) ExpressionToRegister(node *expression.Expression, register cp
}
if fn == nil || len(fn.ReturnTypes) == 0 {
return types.Invalid, err
return types.Any, err
}
return fn.ReturnTypes[0], err
@ -72,6 +72,10 @@ func (f *Function) ExpressionToRegister(node *expression.Expression, register cp
return types.Invalid, err
}
if typ == types.Pointer && (node.Token.Kind == token.Add || node.Token.Kind == token.Sub) && right.Token.Kind == token.Identifier && f.VariableByName(right.Token.Text(f.File.Bytes)).Type == types.Pointer {
typ = types.Int
}
err = f.Execute(node.Token, register, right)
if register != final {