diff options
| author | Aaron Hill <aa1ronham@gmail.com> | 2021-12-31 16:55:34 -0500 |
|---|---|---|
| committer | Aaron Hill <aa1ronham@gmail.com> | 2021-12-31 18:42:54 -0500 |
| commit | e3a048c3c9da3ad6faa2b576de044cc52dee2c62 (patch) | |
| tree | 4023e3ee26c8f6dc70da77d8d37a440c18b7561a /compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp | |
| parent | 984a6bf9c11b7356f696c685a145d7136fff051c (diff) | |
| download | rust-e3a048c3c9da3ad6faa2b576de044cc52dee2c62.tar.gz rust-e3a048c3c9da3ad6faa2b576de044cc52dee2c62.zip | |
Ensure that early-bound function lifetimes are always 'local'
During borrowchecking, we treat any free (early-bound) regions on the 'defining type' as `RegionClassification::External`. According to the doc comments, we should only have 'external' regions when checking a closure/generator. However, a plain function can also have some if its regions be considered 'early bound' - this occurs when the region is constrained by an argument, appears in a `where` clause, or in an opaque type. This was causing us to incorrectly mark these regions as 'external', which caused some diagnostic code to act as if we were referring to a 'parent' region from inside a closure. This PR marks all instantiated region variables as 'local' when we're borrow-checking something other than a closure/generator/inline-const.
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/CoverageMappingWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
