<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/src/test/ui/pattern/usefulness, branch 1.58.0</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.58.0</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.58.0'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2021-11-23T22:07:11+00:00</updated>
<entry>
<title>Fix stack overflow in `usefulness.rs`</title>
<updated>2021-11-23T22:07:11+00:00</updated>
<author>
<name>Badel2</name>
<email>2badel2@gmail.com</email>
</author>
<published>2021-11-23T21:55:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=6955afe8fd16d51b2c617d69f89a9eac5b7fd150'/>
<id>urn:sha1:6955afe8fd16d51b2c617d69f89a9eac5b7fd150</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Filter unstable and doc hidden variants in usefulness checking</title>
<updated>2021-10-12T12:22:25+00:00</updated>
<author>
<name>Devin Ragotzy</name>
<email>devin.ragotzy@gmail.com</email>
</author>
<published>2021-09-18T20:52:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=2a042d61055263e404d9588d39046ed51e96a560'/>
<id>urn:sha1:2a042d61055263e404d9588d39046ed51e96a560</id>
<content type='text'>
Add test cases for unstable variants
Add test cases for doc hidden variants
Move is_doc_hidden to method on TyCtxt
Add unstable variants test to reachable-patterns ui test
Rename reachable-patterns -&gt; omitted-patterns
</content>
</entry>
<entry>
<title>Rollup merge of #89441 - Nadrieril:fix-89393, r=tmandry</title>
<updated>2021-10-01T21:46:52+00:00</updated>
<author>
<name>Manish Goregaokar</name>
<email>manishsmail@gmail.com</email>
</author>
<published>2021-10-01T21:46:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=5ab1245303c26d3ae33b1adaa89fef2b8d9fb9ca'/>
<id>urn:sha1:5ab1245303c26d3ae33b1adaa89fef2b8d9fb9ca</id>
<content type='text'>
Normalize after substituting via `field.ty()`

Back in https://github.com/rust-lang/rust/issues/72476 I hadn't understood where the problem was coming from, and only worked around the issue. What happens is that calling `field.ty()` on a field of a generic struct substitutes the appropriate generics but doesn't normalize the resulting type.
As a consumer of types I'm surprised that one would substitute without normalizing, feels like a footgun, so I added a comment.

Fixes https://github.com/rust-lang/rust/issues/89393.
</content>
</entry>
<entry>
<title>Normalize after substituting via `field.ty()`</title>
<updated>2021-10-01T18:45:19+00:00</updated>
<author>
<name>Nadrieril</name>
<email>nadrieril+git@gmail.com</email>
</author>
<published>2021-10-01T18:09:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=68b76a48358e611e31de8e96c56b9e50862a960e'/>
<id>urn:sha1:68b76a48358e611e31de8e96c56b9e50862a960e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Auto merge of #88950 - Nadrieril:deconstruct-pat, r=oli-obk</title>
<updated>2021-09-29T00:16:17+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2021-09-29T00:16:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=6df1d82869d06b88ff413e63a1e8efbb311e3b5c'/>
<id>urn:sha1:6df1d82869d06b88ff413e63a1e8efbb311e3b5c</id>
<content type='text'>
Add an intermediate representation to exhaustiveness checking

The exhaustiveness checking algorithm keeps deconstructing patterns into a `Constructor` and some `Fields`, but does so a bit all over the place. This PR introduces a new representation for patterns that already has that information, so we only compute it once at the start.
I find this makes code easier to follow. In particular `DeconstructedPat::specialize` is a lot simpler than what happened before, and more closely matches the description of the algorithm. I'm also hoping this could help for the project of librarifying exhaustiveness for rust_analyzer since it decouples the algorithm from `rustc_middle::Pat`.
</content>
</entry>
<entry>
<title>Remove box syntax from most places in src/test outside of the issues dir</title>
<updated>2021-09-26T02:07:44+00:00</updated>
<author>
<name>est31</name>
<email>MTest31@outlook.com</email>
</author>
<published>2021-08-25T00:39:40+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=6550021124451628b1efc60c59284465b109e3aa'/>
<id>urn:sha1:6550021124451628b1efc60c59284465b109e3aa</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Replace `Pat` with a new intermediate representation</title>
<updated>2021-09-25T23:30:38+00:00</updated>
<author>
<name>Nadrieril</name>
<email>nadrieril+git@gmail.com</email>
</author>
<published>2021-09-25T23:00:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=71abc9565f037c3c9da5814c23857545abb0aaab'/>
<id>urn:sha1:71abc9565f037c3c9da5814c23857545abb0aaab</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rework `Fields` internals.</title>
<updated>2021-09-25T23:05:52+00:00</updated>
<author>
<name>Nadrieril</name>
<email>nadrieril+git@gmail.com</email>
</author>
<published>2021-09-22T17:16:07+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=3175409682e8c2e66b04ed25169a36ab716e71d9'/>
<id>urn:sha1:3175409682e8c2e66b04ed25169a36ab716e71d9</id>
<content type='text'>
Now `Fields` is just a `Vec` of patterns, with some extra info on the
side to reconstruct patterns when needed. This emphasizes that this
extra info is not central to the algorithm.
</content>
</entry>
<entry>
<title>Add tests</title>
<updated>2021-09-22T16:38:46+00:00</updated>
<author>
<name>Nadrieril</name>
<email>nadrieril+git@gmail.com</email>
</author>
<published>2021-08-25T20:58:49+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=bf1848d8a58e5ed70b016bc1039ca26e9941b6e8'/>
<id>urn:sha1:bf1848d8a58e5ed70b016bc1039ca26e9941b6e8</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Handle irrufutable or unreachable let-else</title>
<updated>2021-08-31T01:18:43+00:00</updated>
<author>
<name>Cameron Steffen</name>
<email>cam.steffen94@gmail.com</email>
</author>
<published>2021-07-30T22:14:34+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=df9a2e0687895731e12f4a2651e8d70acd08872d'/>
<id>urn:sha1:df9a2e0687895731e12f4a2651e8d70acd08872d</id>
<content type='text'>
</content>
</entry>
</feed>
