From cd5362c7bb0b207f484a8dfb8db229fd2bffef09 Mon Sep 17 00:00:00 2001 From: Chris Manghane Date: Thu, 20 Aug 2015 10:26:23 -0700 Subject: [PATCH] compiler: Don't crash on invalid arithmetic ops. The gofrontend would crash after hitting an unreachable state while trying to determine the type of an arithmetic expression involving non-numeric values. Instead of crashing, it should fail gracefully if the relevant error is already reported. Fixes golang/go#11537. Change-Id: I84ec06bb944b8af34ec5e5864a5149c11c782919 Reviewed-on: https://go-review.googlesource.com/13793 Reviewed-by: Ian Lance Taylor --- go/expressions.cc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/go/expressions.cc b/go/expressions.cc index c9323f562..79b772e20 100644 --- a/go/expressions.cc +++ b/go/expressions.cc @@ -15150,7 +15150,11 @@ Numeric_constant::set_type(Type* type, bool issue_error, Location loc) else if (type->complex_type() != NULL) ret = this->check_complex_type(type->complex_type(), issue_error, loc); else - go_unreachable(); + { + ret = false; + if (issue_error) + go_assert(saw_errors()); + } if (ret) this->type_ = type; return ret;