Auto merge of #86866 - nikomatsakis:issue-84841, r=oli-obk
Hack: Ignore inference variables in certain queries Fixes #84841 Fixes #86753 Some queries are not built to accept types with inference variables, which can lead to ICEs. These queries probably ought to be converted to canonical form, but as a quick workaround, we can return conservative results in the case that inference variables are found. We should file a follow-up issue (and update the FIXMEs...) to do the proper refactoring. cc `@arora-aman` r? `@oli-obk`
This commit is contained in:
@@ -816,6 +816,15 @@ impl<'tcx> ty::TyS<'tcx> {
|
||||
[component_ty] => component_ty,
|
||||
_ => self,
|
||||
};
|
||||
|
||||
// FIXME(#86868): We should be canonicalizing, or else moving this to a method of inference
|
||||
// context, or *something* like that, but for now just avoid passing inference
|
||||
// variables to queries that can't cope with them. Instead, conservatively
|
||||
// return "true" (may change drop order).
|
||||
if query_ty.needs_infer() {
|
||||
return true;
|
||||
}
|
||||
|
||||
// This doesn't depend on regions, so try to minimize distinct
|
||||
// query keys used.
|
||||
let erased = tcx.normalize_erasing_regions(param_env, query_ty);
|
||||
|
||||
Reference in New Issue
Block a user