diff --git a/src/eval.c b/src/eval.c
index 975afe5..7867375 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -3849,8 +3849,12 @@
 	    return tv1->vval.v_channel == tv2->vval.v_channel;
 #endif
 
-	case VAR_FUNC:
 	case VAR_PARTIAL:
+	    return tv1->vval.v_partial == tv2->vval.v_partial;
+
+	case VAR_FUNC:
+	    return tv1->vval.v_string == tv2->vval.v_string;
+
 	case VAR_UNKNOWN:
 	case VAR_VOID:
 	    break;
diff --git a/src/evalfunc.c b/src/evalfunc.c
index 5f290aa..6832bf1 100644
--- a/src/evalfunc.c
+++ b/src/evalfunc.c
@@ -290,7 +290,8 @@
 {
     return &t_string;
 }
-    static type_T * ret_list_any(int argcount UNUSED, type_T **argtypes UNUSED)
+    static type_T *
+ret_list_any(int argcount UNUSED, type_T **argtypes UNUSED)
 {
     return &t_list_any;
 }
@@ -330,9 +331,14 @@
     return &t_blob;
 }
     static type_T *
-ret_partial_void(int argcount UNUSED, type_T **argtypes UNUSED)
+ret_func_any(int argcount UNUSED, type_T **argtypes UNUSED)
 {
-    return &t_partial_void;
+    return &t_func_any;
+}
+    static type_T *
+ret_partial_any(int argcount UNUSED, type_T **argtypes UNUSED)
+{
+    return &t_partial_any;
 }
     static type_T *
 ret_channel(int argcount UNUSED, type_T **argtypes UNUSED)
@@ -558,7 +564,7 @@
     {"foldtext",	0, 0, 0,	  ret_string,	f_foldtext},
     {"foldtextresult",	1, 1, FEARG_1,	  ret_string,	f_foldtextresult},
     {"foreground",	0, 0, 0,	  ret_void,	f_foreground},
-    {"funcref",		1, 3, FEARG_1,	  ret_partial_void, f_funcref},
+    {"funcref",		1, 3, FEARG_1,	  ret_partial_any, f_funcref},
     {"function",	1, 3, FEARG_1,	  ret_f_function, f_function},
     {"garbagecollect",	0, 1, 0,	  ret_void,	f_garbagecollect},
     {"get",		2, 3, FEARG_1,	  ret_any,	f_get},
@@ -952,9 +958,10 @@
     {"test_null_blob",	0, 0, 0,	  ret_blob,	f_test_null_blob},
     {"test_null_channel", 0, 0, 0,	  ret_channel,	JOB_FUNC(f_test_null_channel)},
     {"test_null_dict",	0, 0, 0,	  ret_dict_any,	f_test_null_dict},
+    {"test_null_function", 0, 0, 0,	  ret_func_any,	f_test_null_function},
     {"test_null_job",	0, 0, 0,	  ret_job,	JOB_FUNC(f_test_null_job)},
     {"test_null_list",	0, 0, 0,	  ret_list_any,	f_test_null_list},
-    {"test_null_partial", 0, 0, 0,	  ret_partial_void, f_test_null_partial},
+    {"test_null_partial", 0, 0, 0,	  ret_partial_any, f_test_null_partial},
     {"test_null_string", 0, 0, 0,	  ret_string,	f_test_null_string},
     {"test_option_not_set", 1, 1, FEARG_1,ret_void,	 f_test_option_not_set},
     {"test_override",	2, 2, FEARG_2,	  ret_void,	f_test_override},
diff --git a/src/proto/testing.pro b/src/proto/testing.pro
index 7542ccb..b812c2a 100644
--- a/src/proto/testing.pro
+++ b/src/proto/testing.pro
@@ -26,6 +26,7 @@
 void f_test_null_dict(typval_T *argvars, typval_T *rettv);
 void f_test_null_job(typval_T *argvars, typval_T *rettv);
 void f_test_null_list(typval_T *argvars, typval_T *rettv);
+void f_test_null_function(typval_T *argvars, typval_T *rettv);
 void f_test_null_partial(typval_T *argvars, typval_T *rettv);
 void f_test_null_string(typval_T *argvars, typval_T *rettv);
 void f_test_unknown(typval_T *argvars, typval_T *rettv);
diff --git a/src/testdir/test_vim9_script.vim b/src/testdir/test_vim9_script.vim
index 0c0bf83..1449017 100644
--- a/src/testdir/test_vim9_script.vim
+++ b/src/testdir/test_vim9_script.vim
@@ -117,6 +117,48 @@
   assert_equal('aregadd', @a)
   call CheckDefFailure(['@a += "more"'], 'E1013:')
   call CheckDefFailure(['@a += 123'], 'E1013:')
+
+  v:errmsg = 'none'
+  v:errmsg ..= 'again'
+  assert_equal('noneagain', v:errmsg)
+  call CheckDefFailure(['v:errmsg += "more"'], 'E1013:')
+  call CheckDefFailure(['v:errmsg += 123'], 'E1013:')
+
+  " Test default values.
+  let thebool: bool
+  assert_equal(v:false, thebool)
+
+  let thenumber: number
+  assert_equal(0, thenumber)
+
+  if has('float')
+    let thefloat: float
+    assert_equal(0.0, thefloat)
+  endif
+
+  let thestring: string
+  assert_equal('', thestring)
+
+  let theblob: blob
+  assert_equal(0z, theblob)
+
+  let thefunc: func
+  assert_equal(test_null_function(), thefunc)
+
+  let thepartial: partial
+  assert_equal(test_null_partial(), thepartial)
+
+  let thelist: list<any>
+  assert_equal([], thelist)
+
+  let thedict: dict<any>
+  assert_equal({}, thedict)
+
+  let thejob: job
+  assert_equal(test_null_job(), thejob)
+
+  let thechannel: channel
+  assert_equal(test_null_channel(), thechannel)
 enddef
 
 func Test_assignment_failure()
@@ -129,6 +171,7 @@
 
   call CheckDefFailure(['let [a; b; c] = g:list'], 'E452:')
 
+  call CheckDefFailure(['let somevar'], "E1022:")
   call CheckDefFailure(['let &option'], 'E1052:')
   call CheckDefFailure(['&g:option = 5'], 'E113:')
 
diff --git a/src/testing.c b/src/testing.c
index 8a64ce8..81e1762 100644
--- a/src/testing.c
+++ b/src/testing.c
@@ -883,6 +883,13 @@
 }
 
     void
+f_test_null_function(typval_T *argvars UNUSED, typval_T *rettv)
+{
+    rettv->v_type = VAR_FUNC;
+    rettv->vval.v_string = NULL;
+}
+
+    void
 f_test_null_partial(typval_T *argvars UNUSED, typval_T *rettv)
 {
     rettv->v_type = VAR_PARTIAL;
diff --git a/src/version.c b/src/version.c
index 5fc599c..3686a1d 100644
--- a/src/version.c
+++ b/src/version.c
@@ -739,6 +739,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    493,
+/**/
     492,
 /**/
     491,
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 2726e38..ce1ca76 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -766,7 +766,7 @@
 
 /*
  * Generate an ISN_PUSHPARTIAL instruction with partial "part".
- * Consumes "name".
+ * Consumes "part".
  */
     static int
 generate_PUSHPARTIAL(cctx_T *cctx, partial_T *part)
@@ -3808,9 +3808,6 @@
 	    case VAR_BOOL:
 		generate_PUSHBOOL(cctx, VVAL_FALSE);
 		break;
-	    case VAR_SPECIAL:
-		generate_PUSHSPEC(cctx, VVAL_NONE);
-		break;
 	    case VAR_FLOAT:
 #ifdef FEAT_FLOAT
 		generate_PUSHF(cctx, 0.0);
@@ -3843,6 +3840,7 @@
 	    case VAR_NUMBER:
 	    case VAR_UNKNOWN:
 	    case VAR_VOID:
+	    case VAR_SPECIAL:  // cannot happen
 		generate_PUSHNR(cctx, 0);
 		break;
 	}
diff --git a/src/vim9execute.c b/src/vim9execute.c
index 89e4f05..54f95bf 100644
--- a/src/vim9execute.c
+++ b/src/vim9execute.c
@@ -920,7 +920,9 @@
 			break;
 		    default:
 			tv->v_type = VAR_STRING;
-			tv->vval.v_string = vim_strsave(iptr->isn_arg.string);
+			tv->vval.v_string = vim_strsave(
+				iptr->isn_arg.string == NULL
+					? (char_u *)"" : iptr->isn_arg.string);
 		}
 		break;
 
