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()