compiler: determine types of Slice_{value,info} expressions
This fixes an accidental omission in the determine types pass.
Test case is https://go.dev/cl/505015.
Change-Id: I750a09bb9790b922583eaad3abb620536f9b3a66
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/504797
Reviewed-by: Than McIntosh <thanm@google.com>
Reviewed-by: Ian Lance Taylor <iant@google.com>
diff --git a/go/expressions.cc b/go/expressions.cc
index 4ac55af..2112de6 100644
--- a/go/expressions.cc
+++ b/go/expressions.cc
@@ -18307,6 +18307,16 @@
return TRAVERSE_CONTINUE;
}
+// Determine type of a slice value.
+
+void
+Slice_value_expression::do_determine_type(const Type_context*)
+{
+ this->valmem_->determine_type_no_context();
+ this->len_->determine_type_no_context();
+ this->cap_->determine_type_no_context();
+}
+
Expression*
Slice_value_expression::do_copy()
{
diff --git a/go/expressions.h b/go/expressions.h
index 3d7e787..bdb7ccd 100644
--- a/go/expressions.h
+++ b/go/expressions.h
@@ -4364,8 +4364,7 @@
{ return this->type_; }
void
- do_determine_type(const Type_context*)
- { }
+ do_determine_type(const Type_context*);
Expression*
do_copy();
@@ -4419,7 +4418,7 @@
void
do_determine_type(const Type_context*)
- { }
+ { this->slice_->determine_type_no_context(); }
Expression*
do_copy()