+
+ pub fn need_type_info_err_in_generator(
+ &self,
+ span: Span,
+ ty: Ty<'tcx>
+ ) -> DiagnosticBuilder<'gcx> {
+ let ty = self.resolve_vars_if_possible(&ty);
+ let name = self.extract_type_name(&ty, None);
+
+ let mut err = struct_span_err!(self.tcx.sess,
+ span,
+ E0698,
+ "type inside generator must be known in this context");
+ err.span_label(span, InferCtxt::missing_type_msg(&name));
+ err
+ }
+
+ fn missing_type_msg(type_name: &str) -> String {
+ if type_name == "_" {
+ "cannot infer type".to_owned()
+ } else {
+ format!("cannot infer type for `{}`", type_name)
+ }
+ }