From b281000393220c7ce754f42c8d73b4ea9efe5657 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 27 Aug 2015 23:09:37 +0000 Subject: [PATCH] compiler: Report unused variables initialized to function literals. Fixes golang/go#12317. Reviewed-on: https://go-review.googlesource.com/13908 From-SVN: r227285 --- gcc/go/gofrontend/MERGE | 2 +- gcc/go/gofrontend/gogo.cc | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index dc519b28402..beb095a5557 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -9ae5835a010a55fba875103be5f4e61485a97099 +3aa2ea272e475010da8b480fc3095d0cd7254d12 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 ea9104fc3c3..233ee274cf0 100644 --- a/gcc/go/gofrontend/gogo.cc +++ b/gcc/go/gofrontend/gogo.cc @@ -3156,6 +3156,7 @@ Check_types_traverse::variable(Named_object* named_object) error_at(var->location(), "incompatible type in initialization (%s)", reason.c_str()); + init = Expression::make_error(named_object->location()); var->clear_init(); } else if (init != NULL @@ -3180,13 +3181,13 @@ Check_types_traverse::variable(Named_object* named_object) no->message_name().c_str()); } } - else if (!var->is_used() - && !var->is_global() - && !var->is_parameter() - && !var->is_receiver() - && !var->type()->is_error() - && (init == NULL || !init->is_error_expression()) - && !Lex::is_invalid_identifier(named_object->name())) + if (!var->is_used() + && !var->is_global() + && !var->is_parameter() + && !var->is_receiver() + && !var->type()->is_error() + && (init == NULL || !init->is_error_expression()) + && !Lex::is_invalid_identifier(named_object->name())) error_at(var->location(), "%qs declared and not used", named_object->message_name().c_str()); } -- 2.30.2