patch 8.2.0288: Vim9: some float and blob operators not tested

Problem:    Vim9: some float and blob operators not tested.
Solution:   Add float and blob tests.  Fix addition.
diff --git a/src/vim9compile.c b/src/vim9compile.c
index 45dbf43..912f8ca 100644
--- a/src/vim9compile.c
+++ b/src/vim9compile.c
@@ -374,6 +374,8 @@
     switch (*op)
     {
 	case '+': if (vartype != VAR_LIST && vartype != VAR_BLOB
+			  && type1->tt_type != VAR_UNKNOWN
+			  && type2->tt_type != VAR_UNKNOWN
 			  && check_number_or_float(
 				   type1->tt_type, type2->tt_type, op) == FAIL)
 		      return FAIL;
@@ -1074,9 +1076,16 @@
 	return FAIL;
     isn->isn_arg.string = vim_strnsave(name, (int)len);
 
-    // change dict type to dict member type
+    // check for dict type
     type = ((type_T **)stack->ga_data)[stack->ga_len - 1];
-    ((type_T **)stack->ga_data)[stack->ga_len - 1] = type->tt_member;
+    if (type->tt_type != VAR_DICT && type != &t_any)
+    {
+	emsg(_(e_dictreq));
+	return FAIL;
+    }
+    // change dict type to dict member type
+    if (type->tt_type == VAR_DICT)
+	((type_T **)stack->ga_data)[stack->ga_len - 1] = type->tt_member;
 
     return OK;
 }
@@ -2370,7 +2379,8 @@
 		emsg(_(e_listreq));
 		return FAIL;
 	    }
-	    *typep = (*typep)->tt_member;
+	    if ((*typep)->tt_type == VAR_LIST)
+		*typep = (*typep)->tt_member;
 	}
 	else if (**arg == '.' && (*arg)[1] != '.')
 	{
@@ -2387,7 +2397,6 @@
 		semsg(_(e_syntax_at), *arg);
 		return FAIL;
 	    }
-	    // TODO: check type is dict
 	    if (generate_MEMBER(cctx, *arg, p - *arg) == FAIL)
 		return FAIL;
 	    *arg = p;
@@ -4964,6 +4973,10 @@
 
 	    default:
 		    // Not recognized, execute with do_cmdline_cmd().
+		    // TODO:
+		    // CMD_echomsg
+		    // CMD_execute
+		    // etc.
 		    generate_EXEC(&cctx, line);
 		    line = (char_u *)"";
 		    break;