patch 8.2.2017: missing part of the dict change

Problem:    Missing part of the dict change.
Solution:   Also change the script level dict.
diff --git a/src/dict.c b/src/dict.c
index b3ef35a..3b965d0 100644
--- a/src/dict.c
+++ b/src/dict.c
@@ -111,6 +111,7 @@
 
 /*
  * Clear hashtab "ht" and dict items it contains.
+ * If "ht" is not freed then you should call hash_init() next!
  */
     void
 hashtab_free_contents(hashtab_T *ht)
@@ -850,10 +851,32 @@
     *arg = skipwhite_and_linebreak(*arg + 1, evalarg);
     while (**arg != '}' && **arg != NUL)
     {
-	if ((literal
-		? get_literal_key(arg, &tvkey)
-		: eval1(arg, &tvkey, evalarg)) == FAIL)	// recursive!
-	    goto failret;
+	char_u *p = to_name_end(*arg, FALSE);
+
+	if (literal || (vim9script && *p == ':'))
+	{
+	    if (get_literal_key(arg, &tvkey) == FAIL)
+		goto failret;
+	}
+	else
+	{
+	    int		has_bracket = vim9script && **arg == '[';
+
+	    if (has_bracket)
+		*arg = skipwhite(*arg + 1);
+	    if (eval1(arg, &tvkey, evalarg) == FAIL)	// recursive!
+		goto failret;
+	    if (has_bracket)
+	    {
+		*arg = skipwhite(*arg);
+		if (**arg != ']')
+		{
+		    emsg(_(e_missing_matching_bracket_after_dict_key));
+		    return FAIL;
+		}
+		++*arg;
+	    }
+	}
 
 	// the colon should come right after the key, but this wasn't checked
 	// previously, so only require it in Vim9 script.