patch 9.0.0156: giving E1170 only in an expression is confusing

Problem:    Giving E1170 only in an expression is confusing.
Solution:   Give E1170 for any "#{ comment". (closes #10855)
diff --git a/src/vim9script.c b/src/vim9script.c
index e3cb992..e9c9b2c 100644
--- a/src/vim9script.c
+++ b/src/vim9script.c
@@ -176,16 +176,18 @@
 }
 
 /*
- * Give an error message if "p" points at "#{" and return TRUE.
+ * Return TRUE if "p" points at "#{", not "#{{".
+ * Give an error message if not done already.
  * This avoids that using a legacy style #{} dictionary leads to difficult to
  * understand errors.
  */
     int
 vim9_bad_comment(char_u *p)
 {
-    if (!did_emsg && p[0] == '#' && p[1] == '{' && p[2] != '{')
+    if (p[0] == '#' && p[1] == '{' && p[2] != '{')
     {
-	emsg(_(e_cannot_use_hash_curly_to_start_comment_in_an_expression));
+	if (!did_emsg)
+	    emsg(_(e_cannot_use_hash_curly_to_start_comment));
 	return TRUE;
     }
     return FALSE;
@@ -194,12 +196,13 @@
 
 /*
  * Return TRUE if "p" points at a "#" not followed by one '{'.
+ * Gives an error for using "#{", not for "#{{".
  * Does not check for white space.
  */
     int
 vim9_comment_start(char_u *p)
 {
-    return p[0] == '#' && (p[1] != '{' || p[2] == '{');
+    return p[0] == '#' && !vim9_bad_comment(p);
 }
 
 #if defined(FEAT_EVAL) || defined(PROTO)