@@ -10647,7 +10647,8 @@ int typval_compare(
10647
10647
}
10648
10648
}
10649
10649
} else if (tv_is_func (* typ1 ) || tv_is_func (* typ2 )) {
10650
- if (type != ETYPE_EQUAL && type != ETYPE_NEQUAL ) {
10650
+ if (type != ETYPE_EQUAL && type != ETYPE_NEQUAL
10651
+ && type != ETYPE_IS && type != ETYPE_ISNOT ) {
10651
10652
EMSG (_ ("E694: Invalid operation for Funcrefs" ));
10652
10653
tv_clear (typ1 );
10653
10654
return FAIL ;
@@ -10680,15 +10681,15 @@ int typval_compare(
10680
10681
const float_T f2 = tv_get_float (typ2 );
10681
10682
n1 = false;
10682
10683
switch (type ) {
10684
+ case ETYPE_IS :
10683
10685
case ETYPE_EQUAL : n1 = f1 == f2 ; break ;
10686
+ case ETYPE_ISNOT :
10684
10687
case ETYPE_NEQUAL : n1 = f1 != f2 ; break ;
10685
10688
case ETYPE_GREATER : n1 = f1 > f2 ; break ;
10686
10689
case ETYPE_GEQUAL : n1 = f1 >= f2 ; break ;
10687
10690
case ETYPE_SMALLER : n1 = f1 < f2 ; break ;
10688
10691
case ETYPE_SEQUAL : n1 = f1 <= f2 ; break ;
10689
10692
case ETYPE_UNKNOWN :
10690
- case ETYPE_IS :
10691
- case ETYPE_ISNOT :
10692
10693
case ETYPE_MATCH :
10693
10694
case ETYPE_NOMATCH : break ; // avoid gcc warning
10694
10695
}
@@ -10699,15 +10700,15 @@ int typval_compare(
10699
10700
n1 = tv_get_number (typ1 );
10700
10701
n2 = tv_get_number (typ2 );
10701
10702
switch (type ) {
10703
+ case ETYPE_IS :
10702
10704
case ETYPE_EQUAL : n1 = n1 == n2 ; break ;
10705
+ case ETYPE_ISNOT :
10703
10706
case ETYPE_NEQUAL : n1 = n1 != n2 ; break ;
10704
10707
case ETYPE_GREATER : n1 = n1 > n2 ; break ;
10705
10708
case ETYPE_GEQUAL : n1 = n1 >= n2 ; break ;
10706
10709
case ETYPE_SMALLER : n1 = n1 < n2 ; break ;
10707
10710
case ETYPE_SEQUAL : n1 = n1 <= n2 ; break ;
10708
10711
case ETYPE_UNKNOWN :
10709
- case ETYPE_IS :
10710
- case ETYPE_ISNOT :
10711
10712
case ETYPE_MATCH :
10712
10713
case ETYPE_NOMATCH : break ; // avoid gcc warning
10713
10714
}
@@ -10724,7 +10725,9 @@ int typval_compare(
10724
10725
}
10725
10726
n1 = false;
10726
10727
switch (type ) {
10728
+ case ETYPE_IS :
10727
10729
case ETYPE_EQUAL : n1 = i == 0 ; break ;
10730
+ case ETYPE_ISNOT :
10728
10731
case ETYPE_NEQUAL : n1 = i != 0 ; break ;
10729
10732
case ETYPE_GREATER : n1 = i > 0 ; break ;
10730
10733
case ETYPE_GEQUAL : n1 = i >= 0 ; break ;
@@ -10738,8 +10741,6 @@ int typval_compare(
10738
10741
n1 = !n1 ;
10739
10742
}
10740
10743
break ;
10741
- case ETYPE_IS :
10742
- case ETYPE_ISNOT :
10743
10744
case ETYPE_UNKNOWN : break ; // avoid gcc warning
10744
10745
}
10745
10746
}
0 commit comments