From 91cb7f7804da1e4974e1e3589822e10910eeae20 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 5 Feb 2018 01:43:24 +0000 Subject: [PATCH] compiler: don't error for goto over type or const declaration We should only issue an error for a goto over a var declaration. The test case for this is already in the master repository, at test/fixedbugs/issue8042.go. It just hasn't been copied into the gccgo repository yet. Fixes golang/go#19089 Reviewed-on: https://go-review.googlesource.com/91696 From-SVN: r257375 --- gcc/go/gofrontend/MERGE | 2 +- gcc/go/gofrontend/gogo.cc | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index 257ca95199e..a89373199c0 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -2f7ac42a3f83b78d97912ce1e86296b2af4f52b7 +0c8c4fca4b52bc2323561a432436af5343e0f7b4 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. diff --git a/gcc/go/gofrontend/gogo.cc b/gcc/go/gofrontend/gogo.cc index 04edb08c031..ab0c27b7588 100644 --- a/gcc/go/gofrontend/gogo.cc +++ b/gcc/go/gofrontend/gogo.cc @@ -6199,9 +6199,15 @@ Bindings_snapshot::check_goto_defs(Location loc, const Block* block, } go_assert(p != block->bindings()->end_definitions()); - std::string n = (*p)->message_name(); - go_error_at(loc, "goto jumps over declaration of %qs", n.c_str()); - go_inform((*p)->location(), "%qs defined here", n.c_str()); + for (; p != block->bindings()->end_definitions(); ++p) + { + if ((*p)->is_variable()) + { + std::string n = (*p)->message_name(); + go_error_at(loc, "goto jumps over declaration of %qs", n.c_str()); + go_inform((*p)->location(), "%qs defined here", n.c_str()); + } + } } } -- 2.30.2