compiler: better error for x, x := 1, 2
authorIan Lance Taylor <iant@golang.org>
Thu, 26 Nov 2020 21:15:41 +0000 (13:15 -0800)
committerIan Lance Taylor <iant@golang.org>
Sat, 28 Nov 2020 14:57:06 +0000 (06:57 -0800)
Was
    assign.go:59:28: error: multiple assignments to x
Now
    assign.go:59:28: error: ‘x’ repeated on left side of :=

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/273546

gcc/go/gofrontend/MERGE
gcc/go/gofrontend/parse.cc

index c14ee7e7b142f617595eceebb81f7f1d19a8e091..59648326fcc27d05549dc4ed34b58d174ad6f3e7 100644 (file)
@@ -1,4 +1,4 @@
-8cbe18aff99dbf79bd1adb9c025418e84505ffd5
+66669bb6cae475eda6666a94f6ff4f616ffa77d7
 
 The first line of this file holds the git revision number of the last
 merge done from the gofrontend repository.
index ef5941522cf936e065f8c8da8de96c3ba9119079..aa157e86cb2c4a62c1b23f1cf3eecbe1e762afbe 100644 (file)
@@ -2165,8 +2165,12 @@ Parse::simple_var_decl_or_assignment(const std::string& name,
                  id = this->gogo_->pack_hidden_name(id, is_id_exported);
                  ins = uniq_idents.insert(id);
                  if (!ins.second && !Gogo::is_sink_name(id))
-                   go_error_at(id_location, "multiple assignments to %s",
-                               Gogo::message_name(id).c_str());
+                   {
+                     // Use %s to print := to avoid -Wformat-diag warning.
+                     go_error_at(id_location,
+                                 "%qs repeated on left side of %s",
+                                 Gogo::message_name(id).c_str(), ":=");
+                   }
                  til.push_back(Typed_identifier(id, NULL, location));
                }
              else
@@ -2219,7 +2223,11 @@ Parse::simple_var_decl_or_assignment(const std::string& name,
   const Token* token = this->advance_token();
 
   if (!dup_name.empty())
-    go_error_at(dup_loc, "multiple assignments to %s", dup_name.c_str());
+    {
+      // Use %s to print := to avoid -Wformat-diag warning.
+      go_error_at(dup_loc, "%qs repeated on left side of %s",
+                 dup_name.c_str(), ":=");
+    }
 
   if (p_range_clause != NULL && token->is_keyword(KEYWORD_RANGE))
     {