patch 8.2.0226: compiling for loop not tested

Problem:    Compiling for loop not tested.
Solution:   Add a test.  Make variable initialization work for more types.
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 1c76c8a..0c72168 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -3427,13 +3427,51 @@
     else
     {
 	// variables are always initialized
-	// TODO: support more types
 	if (ga_grow(instr, 1) == FAIL)
 	    goto theend;
-	if (type->tt_type == VAR_STRING)
-	    generate_PUSHS(cctx, vim_strsave((char_u *)""));
-	else
-	    generate_PUSHNR(cctx, 0);
+	switch (type->tt_type)
+	{
+	    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);
+#endif
+		break;
+	    case VAR_STRING:
+		generate_PUSHS(cctx, NULL);
+		break;
+	    case VAR_BLOB:
+		generate_PUSHBLOB(cctx, NULL);
+		break;
+	    case VAR_FUNC:
+		// generate_PUSHS(cctx, NULL); TODO
+		break;
+	    case VAR_PARTIAL:
+		// generate_PUSHS(cctx, NULL); TODO
+		break;
+	    case VAR_LIST:
+		generate_NEWLIST(cctx, 0);
+		break;
+	    case VAR_DICT:
+		generate_NEWDICT(cctx, 0);
+		break;
+	    case VAR_JOB:
+		// generate_PUSHS(cctx, NULL); TODO
+		break;
+	    case VAR_CHANNEL:
+		// generate_PUSHS(cctx, NULL); TODO
+		break;
+	    case VAR_NUMBER:
+	    case VAR_UNKNOWN:
+	    case VAR_VOID:
+		generate_PUSHNR(cctx, 0);
+		break;
+	}
     }
 
     if (oplen > 0 && *op != '=')