Mercurial > vim
diff src/vim9type.c @ 31551:67d9fbe516a3 v9.0.1108
patch 9.0.1108: type error when using "any" type and adding to float
Commit: https://github.com/vim/vim/commit/c6951a76a58663ef8a773d340f2260da7455643c
Author: Bram Moolenaar <Bram@vim.org>
Date: Thu Dec 29 20:56:24 2022 +0000
patch 9.0.1108: type error when using "any" type and adding to float
Problem: Type error when using "any" type and adding a number to a float.
Solution: Accept both a number and a float. (closes https://github.com/vim/vim/issues/11753)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Thu, 29 Dec 2022 22:00:04 +0100 |
parents | 0c0ecf489f05 |
children | c467d6e70972 |
line wrap: on
line diff
--- a/src/vim9type.c +++ b/src/vim9type.c @@ -813,6 +813,11 @@ check_type_maybe( && (actual->tt_flags & TTFLAG_BOOL_OK)) // Using number 0 or 1 for bool is OK. return OK; + if (expected->tt_type == VAR_FLOAT + && (expected->tt_flags & TTFLAG_NUMBER_OK) + && actual->tt_type == VAR_NUMBER) + // Using number where float is expected is OK here. + return OK; if (give_msg) type_mismatch_where(expected, actual, where); return FAIL; @@ -848,7 +853,8 @@ check_type_maybe( { int i; - for (i = 0; i < expected->tt_argcount && i < actual->tt_argcount; ++i) + for (i = 0; i < expected->tt_argcount + && i < actual->tt_argcount; ++i) // Allow for using "any" argument type, lambda's have them. if (actual->tt_args[i] != &t_any && check_type( expected->tt_args[i], actual->tt_args[i], FALSE,