diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-12-25 19:33:22 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-12-25 19:33:22 +0100 |
commit | ec57ec692eb228ee061824a190d7c451f029c430 (patch) | |
tree | 622c61f2514671ae28ac8a1b9f364f14dd0b7c56 /src | |
parent | 07a3db89b8953bd0964895badb3b662f7514bc10 (diff) |
patch 8.2.0045: script test failsv8.2.0045
Problem: Script test fails.
Solution: For numbers "is" and "isnot" work like "==" and "!=".
Diffstat (limited to 'src')
-rw-r--r-- | src/eval.c | 21 | ||||
-rw-r--r-- | src/version.c | 2 |
2 files changed, 13 insertions, 10 deletions
diff --git a/src/eval.c b/src/eval.c index 41ebeb6f5b..c03372d1c9 100644 --- a/src/eval.c +++ b/src/eval.c @@ -6261,7 +6261,8 @@ typval_compare( else if (typ1->v_type == VAR_FUNC || typ2->v_type == VAR_FUNC || typ1->v_type == VAR_PARTIAL || typ2->v_type == VAR_PARTIAL) { - if (type != ETYPE_EQUAL && type != ETYPE_NEQUAL) + if (type != ETYPE_EQUAL && type != ETYPE_NEQUAL + && type != ETYPE_IS && type != ETYPE_ISNOT) { emsg(_("E694: Invalid operation for Funcrefs")); clear_tv(typ1); @@ -6306,15 +6307,15 @@ typval_compare( n1 = FALSE; switch (type) { + case ETYPE_IS: case ETYPE_EQUAL: n1 = (f1 == f2); break; + case ETYPE_ISNOT: case ETYPE_NEQUAL: n1 = (f1 != f2); break; case ETYPE_GREATER: n1 = (f1 > f2); break; case ETYPE_GEQUAL: n1 = (f1 >= f2); break; case ETYPE_SMALLER: n1 = (f1 < f2); break; case ETYPE_SEQUAL: n1 = (f1 <= f2); break; case ETYPE_UNKNOWN: - case ETYPE_IS: - case ETYPE_ISNOT: case ETYPE_MATCH: case ETYPE_NOMATCH: break; // avoid gcc warning } @@ -6322,9 +6323,9 @@ typval_compare( #endif /* - * If one of the two variables is a number, compare as a number. - * When using "=~" or "!~", always compare as string. - */ + * If one of the two variables is a number, compare as a number. + * When using "=~" or "!~", always compare as string. + */ else if ((typ1->v_type == VAR_NUMBER || typ2->v_type == VAR_NUMBER) && type != ETYPE_MATCH && type != ETYPE_NOMATCH) { @@ -6332,15 +6333,15 @@ typval_compare( n2 = tv_get_number(typ2); switch (type) { + case ETYPE_IS: case ETYPE_EQUAL: n1 = (n1 == n2); break; + case ETYPE_ISNOT: case ETYPE_NEQUAL: n1 = (n1 != n2); break; case ETYPE_GREATER: n1 = (n1 > n2); break; case ETYPE_GEQUAL: n1 = (n1 >= n2); break; case ETYPE_SMALLER: n1 = (n1 < n2); break; case ETYPE_SEQUAL: n1 = (n1 <= n2); break; case ETYPE_UNKNOWN: - case ETYPE_IS: - case ETYPE_ISNOT: case ETYPE_MATCH: case ETYPE_NOMATCH: break; // avoid gcc warning } @@ -6356,7 +6357,9 @@ typval_compare( n1 = FALSE; switch (type) { + case ETYPE_IS: case ETYPE_EQUAL: n1 = (i == 0); break; + case ETYPE_ISNOT: case ETYPE_NEQUAL: n1 = (i != 0); break; case ETYPE_GREATER: n1 = (i > 0); break; case ETYPE_GEQUAL: n1 = (i >= 0); break; @@ -6370,8 +6373,6 @@ typval_compare( n1 = !n1; break; - case ETYPE_IS: - case ETYPE_ISNOT: case ETYPE_UNKNOWN: break; // avoid gcc warning } } diff --git a/src/version.c b/src/version.c index 103174dc96..4e77878595 100644 --- a/src/version.c +++ b/src/version.c @@ -743,6 +743,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 45, +/**/ 44, /**/ 43, |