diff options
| -rw-r--r-- | gcc/go/gofrontend/expressions.cc | 13 | ||||
| -rw-r--r-- | gcc/go/gofrontend/expressions.h | 3 |
2 files changed, 14 insertions, 2 deletions
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index 8592ef5..23f6e2b 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -894,6 +894,19 @@ Expression::make_type(Type* type, source_location location) return new Type_expression(type, location); } +// Class Parser_expression. + +Type* +Parser_expression::do_type() +{ + // We should never really ask for the type of a Parser_expression. + // However, it can happen, at least when we have an invalid const + // whose initializer refers to the const itself. In that case we + // may ask for the type when lowering the const itself. + gcc_assert(saw_errors()); + return Type::make_error_type(); +} + // Class Var_expression. // Lower a variable expression. Here we just make sure that the diff --git a/gcc/go/gofrontend/expressions.h b/gcc/go/gofrontend/expressions.h index 4780a8b..fe4ade2 100644 --- a/gcc/go/gofrontend/expressions.h +++ b/gcc/go/gofrontend/expressions.h @@ -873,8 +873,7 @@ class Parser_expression : public Expression do_lower(Gogo*, Named_object*, int) = 0; Type* - do_type() - { gcc_unreachable(); } + do_type(); void do_determine_type(const Type_context*) |
