{
rettv->v_type = VAR_BOOL;
rettv->vval.v_number = VVAL_TRUE;
+ ret = OK;
}
else if (len == 5 && in_vim9script()
&& STRNCMP(s, "false", 4) == 0)
{
rettv->v_type = VAR_BOOL;
rettv->vval.v_number = VVAL_FALSE;
+ ret = OK;
}
else
ret = eval_variable(s, len, rettv, NULL, TRUE, FALSE);
int ret = OK;
int error = FALSE;
varnumber_T val = 0;
+ vartype_T type = rettv->v_type;
#ifdef FEAT_FLOAT
float_T f = 0.0;
f = !f;
else
#endif
+ {
val = !val;
+ type = VAR_BOOL;
+ }
}
else if (*end_leader == '-')
{
f = -f;
else
#endif
+ {
val = -val;
+ type = VAR_NUMBER;
+ }
}
}
#ifdef FEAT_FLOAT
#endif
{
clear_tv(rettv);
- rettv->v_type = VAR_NUMBER;
+ if (in_vim9script())
+ rettv->v_type = type;
+ else
+ rettv->v_type = VAR_NUMBER;
rettv->vval.v_number = val;
}
}
assert_equal(g:special_false, false)
assert_equal(g:special_true, v:true)
assert_equal(g:special_false, v:false)
+
+ assert_equal(true, !false)
+ assert_equal(false, !true)
+ assert_equal(true, !0)
+ assert_equal(false, !1)
+ assert_equal(false, !!false)
+ assert_equal(true, !!true)
+ assert_equal(false, !!0)
+ assert_equal(true, !!1)
+
assert_equal(g:special_null, v:null)
assert_equal(g:special_none, v:none)
assert_equal(true, t)
assert_equal(v:false, false)
assert_equal(false, f)
+ assert_equal(true, !false)
+ assert_equal(false, !true)
+ assert_equal(true, !0)
+ assert_equal(false, !1)
+ assert_equal(false, !!false)
+ assert_equal(true, !!true)
+ assert_equal(false, !!0)
+ assert_equal(true, !!1)
END
CheckScriptSuccess(lines)
enddef