diff --git a/src/if_py_both.h b/src/if_py_both.h
index 45bfeec..3da87cc 100644
--- a/src/if_py_both.h
+++ b/src/if_py_both.h
@@ -6357,8 +6357,8 @@
 					    ? "" : (char *)tv->vval.v_string);
 	case VAR_NUMBER:
 	    return PyLong_FromLong((long) tv->vval.v_number);
-#ifdef FEAT_FLOAT
 	case VAR_FLOAT:
+#ifdef FEAT_FLOAT
 	    return PyFloat_FromDouble((double) tv->vval.v_float);
 #endif
 	case VAR_LIST:
diff --git a/src/json.c b/src/json.c
index 6d7b193..da0ba4b 100644
--- a/src/json.c
+++ b/src/json.c
@@ -761,9 +761,9 @@
 		    break;
 
 		default:
-		    if (VIM_ISDIGIT(*p) || (*p == '-' && VIM_ISDIGIT(p[1])))
+		    if (VIM_ISDIGIT(*p) || (*p == '-'
+					&& (VIM_ISDIGIT(p[1]) || p[1] == NUL)))
 		    {
-#ifdef FEAT_FLOAT
 			char_u  *sp = p;
 
 			if (*sp == '-')
@@ -782,6 +782,7 @@
 			    }
 			}
 			sp = skipdigits(sp);
+#ifdef FEAT_FLOAT
 			if (*sp == '.' || *sp == 'e' || *sp == 'E')
 			{
 			    if (cur_item == NULL)
@@ -889,7 +890,8 @@
 		    }
 #endif
 		    // check for truncated name
-		    len = (int)(reader->js_end - (reader->js_buf + reader->js_used));
+		    len = (int)(reader->js_end
+					 - (reader->js_buf + reader->js_used));
 		    if (
 			    (len < 5 && STRNICMP((char *)p, "false", len) == 0)
 #ifdef FEAT_FLOAT
diff --git a/src/testdir/test_method.vim b/src/testdir/test_method.vim
index b82dbb4..978e5f5 100644
--- a/src/testdir/test_method.vim
+++ b/src/testdir/test_method.vim
@@ -1,5 +1,7 @@
 " Tests for ->method()
 
+source check.vim
+
 func Test_list_method()
   let l = [1, 2, 3]
   call assert_equal([1, 2, 3, 4], [1, 2, 3]->add(4))
@@ -118,6 +120,7 @@
 endfunc
 
 func Test_method_float()
+  CheckFeature float
   eval 1.234->string()->assert_equal('1.234')
   eval -1.234->string()->assert_equal('-1.234')
 endfunc
diff --git a/src/version.c b/src/version.c
index 19a5c0d..dc531be 100644
--- a/src/version.c
+++ b/src/version.c
@@ -743,6 +743,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    155,
+/**/
     154,
 /**/
     153,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 6690622..29595cc 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -1217,8 +1217,13 @@
 	case 'f':
 	    if (len == 5 && STRNCMP(*arg, "float", len) == 0)
 	    {
+#ifdef FEAT_FLOAT
 		*arg += len;
 		return &t_float;
+#else
+		emsg(_("E1055: This Vim is not compiled with float support"));
+		return &t_any;
+#endif
 	    }
 	    if (len == 4 && STRNCMP(*arg, "func", len) == 0)
 	    {
diff --git a/src/vim9execute.c b/src/vim9execute.c
index a738aa1..f8efa1d 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -1095,6 +1095,7 @@
 	    // Computation with two float arguments
 	    case ISN_OPFLOAT:
 	    case ISN_COMPAREFLOAT:
+#ifdef FEAT_FLOAT
 		{
 		    typval_T	*tv1 = STACK_TV_BOT(-2);
 		    typval_T	*tv2 = STACK_TV_BOT(-1);
@@ -1127,6 +1128,7 @@
 		    else
 			tv1->vval.v_float = res;
 		}
+#endif
 		break;
 
 	    case ISN_COMPARELIST:
@@ -1618,7 +1620,9 @@
 				   get_var_special_name(iptr->isn_arg.number));
 		break;
 	    case ISN_PUSHF:
+#ifdef FEAT_FLOAT
 		smsg("%4d PUSHF %g", current, iptr->isn_arg.fnumber);
+#endif
 		break;
 	    case ISN_PUSHS:
 		smsg("%4d PUSHS \"%s\"", current, iptr->isn_arg.string);
diff --git a/src/vim9script.c b/src/vim9script.c
index fb19258..9aa33d0 100644
--- a/src/vim9script.c
+++ b/src/vim9script.c
@@ -323,6 +323,7 @@
 		    *arg = cc;
 		    return NULL;
 		}
+		ufunc = NULL;
 	    }
 	    else
 	    {
@@ -355,6 +356,7 @@
 		    *arg = cc;
 		    return NULL;
 		}
+		sv = NULL;
 	    }
 
 	    imported = new_imported(gap != NULL ? gap
