summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-12-25 19:33:22 +0100
committerBram Moolenaar <Bram@vim.org>2019-12-25 19:33:22 +0100
commitec57ec692eb228ee061824a190d7c451f029c430 (patch)
tree622c61f2514671ae28ac8a1b9f364f14dd0b7c56 /src
parent07a3db89b8953bd0964895badb3b662f7514bc10 (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.c21
-rw-r--r--src/version.c2
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,