diff --git a/src/evalfunc.c b/src/evalfunc.c
index 1962ccd..07f158d 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -3000,7 +3000,8 @@
     if (argvars[arg_off + 1].v_type != VAR_UNKNOWN)
     {
 	char_u	buf[NUMBUFLEN];
-	char_u  *s = tv_get_string_buf_chk(&argvars[arg_off + 1], buf);
+	char_u  *s = tv_get_string_buf_chk_strict(&argvars[arg_off + 1], buf,
+							      in_vim9script());
 
 	if (s == NULL)
 	    return;
@@ -8897,7 +8898,7 @@
     static void
 f_strwidth(typval_T *argvars, typval_T *rettv)
 {
-    char_u	*s = tv_get_string(&argvars[0]);
+    char_u	*s = tv_get_string_strict(&argvars[0]);
 
     rettv->vval.v_number = (varnumber_T)(mb_string2cells(s, -1));
 }
diff --git a/src/filepath.c b/src/filepath.c
index e81eeb1..69bc8b5 100644
--- a/src/filepath.c
+++ b/src/filepath.c
@@ -1301,7 +1301,9 @@
     void
 f_glob2regpat(typval_T *argvars, typval_T *rettv)
 {
-    char_u	*pat = tv_get_string_chk(&argvars[0]);
+    char_u	buf[NUMBUFLEN];
+    char_u	*pat = tv_get_string_buf_chk_strict(&argvars[0], buf,
+							      in_vim9script());
 
     rettv->v_type = VAR_STRING;
     rettv->vval.v_string = (pat == NULL)
diff --git a/src/findfile.c b/src/findfile.c
index 4f69c47..a72fe45 100644
--- a/src/findfile.c
+++ b/src/findfile.c
@@ -2848,7 +2848,7 @@
 {
     char_u	*p;
 
-    p = tv_get_string(&argvars[0]);
+    p = tv_get_string_strict(&argvars[0]);
     rettv->vval.v_string = vim_strsave(p);
     simplify_filename(rettv->vval.v_string);	// simplify in place
     rettv->v_type = VAR_STRING;
diff --git a/src/float.c b/src/float.c
index 1361a36..7c02044 100644
--- a/src/float.c
+++ b/src/float.c
@@ -417,7 +417,7 @@
     void
 f_str2float(typval_T *argvars, typval_T *rettv)
 {
-    char_u *p = skipwhite(tv_get_string(&argvars[0]));
+    char_u *p = skipwhite(tv_get_string_strict(&argvars[0]));
     int     isneg = (*p == '-');
 
     if (*p == '+' || *p == '-')
diff --git a/src/json.c b/src/json.c
index db25b70..d0a087a 100644
--- a/src/json.c
+++ b/src/json.c
@@ -607,7 +607,7 @@
     cur_item = res;
     init_tv(&item);
     if (res != NULL)
-    	init_tv(res);
+	init_tv(res);
 
     fill_numbuflen(reader);
     p = reader->js_buf + reader->js_used;
@@ -920,6 +920,15 @@
 	    if (top_item != NULL && top_item->jd_type == JSON_OBJECT_KEY
 		    && cur_item != NULL)
 	    {
+#ifdef FEAT_FLOAT
+		if (cur_item->v_type == VAR_FLOAT)
+		{
+		    // cannot use a float as a key
+		    emsg(_(e_float_as_string));
+		    retval = FAIL;
+		    goto theend;
+		}
+#endif
 		top_item->jd_key = tv_get_string_buf_chk(cur_item, key_buf);
 		if (top_item->jd_key == NULL)
 		{
diff --git a/src/testdir/test_eval_stuff.vim b/src/testdir/test_eval_stuff.vim
index 4549f48..0c1e75d 100644
--- a/src/testdir/test_eval_stuff.vim
+++ b/src/testdir/test_eval_stuff.vim
@@ -144,7 +144,7 @@
   if has('float')
     let a = 'A'
     let b = 1.234
-    call assert_fails('echo a .. b', 'E806:')
+    call assert_equal('A1.234', a .. b)
   endif
 endfunc
 
diff --git a/src/testdir/test_execute_func.vim b/src/testdir/test_execute_func.vim
index 0363717..c08b239 100644
--- a/src/testdir/test_execute_func.vim
+++ b/src/testdir/test_execute_func.vim
@@ -2,6 +2,7 @@
 
 source view_util.vim
 source check.vim
+source vim9.vim
 
 func NestedEval()
   let nested = execute('echo "nested\nlines"')
@@ -37,8 +38,9 @@
   call assert_equal("\nsomething", execute('echo "something"', 'silent!'))
   call assert_equal("", execute('burp', 'silent!'))
   if has('float')
-    call assert_fails('call execute(3.4)', 'E806:')
-    call assert_fails('call execute("echo \"x\"", 3.4)', 'E806:')
+    call assert_fails('call execute(3.4)', 'E492:')
+    call assert_equal("\nx", execute("echo \"x\"", 3.4))
+    call CheckDefExecAndScriptFailure(['execute("echo \"x\"", 3.4)'], 'E806:')
   endif
 endfunc
 
diff --git a/src/testdir/test_float_func.vim b/src/testdir/test_float_func.vim
index 17b5cda..b10bffd 100644
--- a/src/testdir/test_float_func.vim
+++ b/src/testdir/test_float_func.vim
@@ -2,6 +2,7 @@
 
 source check.vim
 CheckFeature float
+source vim9.vim
 
 func Test_abs()
   call assert_equal('1.23', string(abs(1.23)))
@@ -238,7 +239,9 @@
   call assert_equal('nan', string(str2float('NaN')))
   call assert_equal('nan', string(str2float('  nan  ')))
 
-  call assert_fails("call str2float(1.2)", 'E806:')
+  call assert_equal(1.2, str2float(1.2))
+  call CheckDefExecFailure(['str2float(1.2)'], 'E1013:')
+  call CheckScriptFailure(['vim9script', 'str2float(1.2)'], 'E806:')
   call assert_fails("call str2float([])", 'E730:')
   call assert_fails("call str2float({})", 'E731:')
   call assert_fails("call str2float(function('string'))", 'E729:')
diff --git a/src/testdir/test_functions.vim b/src/testdir/test_functions.vim
index bc96491..023da66 100644
--- a/src/testdir/test_functions.vim
+++ b/src/testdir/test_functions.vim
@@ -165,11 +165,13 @@
     call assert_fails('call strwidth({->0})', 'E729:')
     call assert_fails('call strwidth([])', 'E730:')
     call assert_fails('call strwidth({})', 'E731:')
-    if has('float')
-      call assert_fails('call strwidth(1.2)', 'E806:')
-    endif
   endfor
 
+  if has('float')
+    call assert_equal(3, strwidth(1.2))
+    call CheckDefExecAndScriptFailure(['echo strwidth(1.2)'], 'E806:')
+  endif
+
   set ambiwidth&
 endfunc
 
@@ -233,7 +235,9 @@
   call assert_fails('call str2nr([])', 'E730:')
   call assert_fails('call str2nr({->2})', 'E729:')
   if has('float')
-    call assert_fails('call str2nr(1.2)', 'E806:')
+    call assert_equal(1, str2nr(1.2))
+    call CheckDefExecFailure(['echo str2nr(1.2)'], 'E1013:')
+    call CheckScriptFailure(['vim9script', 'echo str2nr(1.2)'], 'E806:')
   endif
   call assert_fails('call str2nr(10, [])', 'E745:')
 endfunc
@@ -494,7 +498,8 @@
   call assert_fails('call simplify([])', 'E730:')
   call assert_fails('call simplify({})', 'E731:')
   if has('float')
-    call assert_fails('call simplify(1.2)', 'E806:')
+    call assert_equal('1.2', simplify(1.2))
+    call CheckDefExecAndScriptFailure(['echo simplify(1.2)'], 'E806:')
   endif
 endfunc
 
diff --git a/src/testdir/test_glob2regpat.vim b/src/testdir/test_glob2regpat.vim
index 2907b28..ab459bb 100644
--- a/src/testdir/test_glob2regpat.vim
+++ b/src/testdir/test_glob2regpat.vim
@@ -1,8 +1,11 @@
 " Test glob2regpat()
 
+source vim9.vim
+
 func Test_glob2regpat_invalid()
   if has('float')
-    call assert_fails('call glob2regpat(1.33)', 'E806:')
+    call assert_equal('^1\.33$', glob2regpat(1.33))
+    call CheckDefExecAndScriptFailure(['echo glob2regpat(1.33)'], 'E806:')
   endif
   call assert_fails('call glob2regpat("}")', 'E219:')
   call assert_fails('call glob2regpat("{")', 'E220:')
diff --git a/src/testdir/test_listdict.vim b/src/testdir/test_listdict.vim
index 46b030b..8351acb 100644
--- a/src/testdir/test_listdict.vim
+++ b/src/testdir/test_listdict.vim
@@ -859,7 +859,7 @@
   call assert_fails("call extend(d, {'b': 0, 'c':'C'}, 'error')", 'E737:')
   call assert_fails("call extend(d, {'b': 0, 'c':'C'}, 'xxx')", 'E475:')
   if has('float')
-    call assert_fails("call extend(d, {'b': 0, 'c':'C'}, 1.2)", 'E806:')
+    call assert_fails("call extend(d, {'b': 0, 'c':'C'}, 1.2)", 'E475:')
   endif
   call assert_equal({'a': 'A', 'b': 'B'}, d)
 
@@ -1022,9 +1022,9 @@
   call assert_fails("let l = insert([1,2,3], 4, [])", 'E745:')
   let l = [1, 2, 3]
   call assert_fails("let l[i] = 3", 'E121:')
-  call assert_fails("let l[1.1] = 4", 'E806:')
+  call assert_fails("let l[1.1] = 4", 'E805:')
   call assert_fails("let l[:i] = [4, 5]", 'E121:')
-  call assert_fails("let l[:3.2] = [4, 5]", 'E806:')
+  call assert_fails("let l[:3.2] = [4, 5]", 'E805:')
   let t = test_unknown()
   call assert_fails("echo t[0]", 'E685:')
 endfunc
diff --git a/src/version.c b/src/version.c
index b9df688..94a4cfb 100644
--- a/src/version.c
+++ b/src/version.c
@@ -751,6 +751,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2949,
+/**/
     2948,
 /**/
     2947,
