]> git.lizzy.rs Git - rust.git/commit
Auto merge of #13840 - lowr:fix/hir-callable-sig-escaping-boundvars, r=lowr
authorbors <bors@rust-lang.org>
Sun, 25 Dec 2022 14:53:16 +0000 (14:53 +0000)
committerbors <bors@rust-lang.org>
Sun, 25 Dec 2022 14:53:16 +0000 (14:53 +0000)
commit74ae2dd3039cd80fc77e4ed0c0a206be6660dd9a
tree0fdb766c3330fee976d49ec5dcdf5c7bc954cc9f
parent2872e0558982360d499bdba79cf1a3ed06f1ae82
parenta1a408367e5c4d8b4a323d5e65d8df4d3d9c44cc
Auto merge of #13840 - lowr:fix/hir-callable-sig-escaping-boundvars, r=lowr

fix: handle lifetime variables in `CallableSig` query

Fixes #13838

The problem is similar to #13223: we've been skipping non-empty binders, letting lifetime bound variables escape.

I ended up refactoring `hir_ty::callable_sig_from_fnonce()`. Like #13223, I chose to make use of `InferenceTable` which is capable of handling variables (I feel we should always use it when we solve trait-related stuff instead of manually building obligations/queries).

I couldn't make up a test that crashes without this patch (since the function I'm fixing is only used *outside* `hir-ty`, simple `hir-ty` test wouldn't cause crash), but at least I tested with my local build and made sure it doesn't crash with the code in the original issue. I'd appreciate any help to find a regression test.
crates/hir-ty/src/lib.rs