Commit graph

61 commits

Author SHA1 Message Date
oli
a1cdf722f4 Fix exhaustiveness in case a byte string literal is used at slice type 2020-11-17 09:07:23 +00:00
Nadrieril
4cd30197eb Fix #78549
Before #78430, string literals worked because `specialize_constructor`
didn't actually care too much which constructor was passed to it unless
needed. Since then, string literals are special cased and a bit hacky. I
did not anticipate patterns for the `&str` type other than string
literals, hence this bug. This makes string literals less hacky.
2020-11-01 02:04:42 +00:00
Nadrieril
5bfd3e7259 Accidentally fixed #78071 2020-10-20 00:06:00 +01:00
Nadrieril
da0ba2f645 The only remaining constant patterns are opaque 2020-10-18 14:21:20 +01:00
Oliver Scherer
bb8111069e Destructure byte array constants to array patterns instead of keeping them opaque 2020-10-18 14:21:20 +01:00
Nadrieril
3b37d941a2 Add some tests 2020-10-18 14:21:19 +01:00
Oliver Scherer
b2532a8730 Implement destructuring for all aggregates and for references 2020-09-20 13:28:18 +02:00
Dan Aloni
07e7823c01 pretty: trim paths of unique symbols
If a symbol name can only be imported from one place for a type, and
as long as it was not glob-imported anywhere in the current crate, we
can trim its printed path and print only the name.

This has wide implications on error messages with types, for example,
shortening `std::vec::Vec` to just `Vec`, as long as there is no other
`Vec` importable anywhere.

This adds a new '-Z trim-diagnostic-paths=false' option to control this
feature.

On the good path, with no diagnosis printed, we should try to avoid
issuing this query, so we need to prevent trimmed_def_paths query on
several cases.

This change also relies on a previous commit that differentiates
between `Debug` and `Display` on various rustc types, where the latter
is trimmed and presented to the user and the former is not.
2020-09-02 22:26:37 +03:00
mark
2c31b45ae8 mv std libs to library/ 2020-07-27 19:51:13 -05:00
Yuki Okushi
b93ecc1dac
Address code reviews 2020-07-05 03:43:43 +09:00
Yuki Okushi
dcbe85abad
Explain exhaustive matching on {usize,isize} maximum values 2020-07-05 02:10:57 +09:00
Oliver Scherer
819cde5dab Show the values and computation that would overflow a const evaluation or propagation 2020-06-26 10:08:52 +02:00
Lzu Tao
c755292859 Prefer the associated consts for pattern matching error 2020-06-13 01:18:18 +00:00
Nadrieril
3e8ba3a3cb Remove out-of-date comment 2020-05-23 19:39:38 +01:00
Nadrieril
7addc115eb Work around type normalization issues 2020-05-23 18:59:27 +01:00
Nadrieril
e5a2cd526a We don't use tyerr anymore
This however unearthed a bug, hence the FIXME and the workaround.
2020-05-17 17:38:23 +01:00
RoccoDev
b85c64c3ea
rustc: Add a warning count upon completion 2020-04-11 16:15:24 +02:00
Eduard-Mihai Burtescu
8deff18529 tests: remove ignore directives from tests that mention core/alloc/std spans. 2020-04-02 11:48:34 +03:00
Mazdak Farrokhzad
c858593ed0 non-exhastive diagnostic: add note re. scrutinee type 2020-03-27 06:49:07 +01:00
Aaron Hill
86b8dea5ec
Ignore tests on some platforms due to #53081 2020-03-23 02:04:43 -04:00
Aaron Hill
96e2d03d4b
Store idents for DefPathData into crate metadata
Previously, we threw away the `Span` associated with a definition's
identifier when we encoded crate metadata, causing us to lose location
and hygiene information.

We now store the identifier's `Span` in the crate metadata.
When we decode items from the metadata, we combine
the name and span back into an `Ident`.

This improves the output of several tests, which previously had messages
suppressed due to dummy spans.

This is a prerequisite for #68686, since throwing away a `Span` means
that we lose hygiene information.
2020-03-22 23:40:19 -04:00
Matthew Jasper
1ee5829575 Update tests for erasing regions in typeck 2020-03-17 09:07:56 +00:00
varkor
24a2929ed1 Normalise notes with the/is 2020-01-24 16:24:50 +00:00
Mazdak Farrokhzad
58eb03d20f check_match: simplify check_arm 2020-01-20 23:39:24 +01:00
Mazdak Farrokhzad
e3c2f8fc57 slice_patterns: organize some tests 2020-01-18 19:33:47 +01:00
Mazdak Farrokhzad
a1eadca88f slice_patterns: remove gates in tests 2020-01-18 19:33:47 +01:00
Vadim Petrochenkov
642669c74d Update tests 2020-01-09 21:23:12 +03:00
Niko Matsakis
1719337d02 Revert "Remove #![feature(never_type)] from tests."
This reverts commit 8f6197f39f.
2019-12-14 09:01:04 -05:00
Nadrieril
fbd2cd09e6 Revert a diagnostic change in the case of integer ranges 2019-12-11 18:17:58 +00:00
Nadrieril
40f434b8c5 Reuse adt_defined_here 2019-12-04 16:43:24 +00:00
Nadrieril
2216318484 Use the default code path to list missing patterns
This uses the exact same code path that would be used for
`match x { _ if false => {} }`, since in both cases the resulting matrix
is empty. Since we think the behaviour in that case is ok, then we can
remove the special case and use the default code path.
2019-12-04 16:43:24 +00:00
Nadrieril
e444346b12 List missing constructors in an almost empty match
Actually empty matches are still handled by a different code path
2019-12-04 16:43:24 +00:00
Nadrieril
5a3b7d2055 Add tests 2019-12-04 16:43:24 +00:00
Nadrieril
c0f3c06c6d Only warn about missing patterns in the case of an enum 2019-12-04 16:43:21 +00:00
Nadrieril
2099dd1aa2 Add tests 2019-12-04 16:43:21 +00:00
Nadrieril
5628d4a7c3 Make empty match lint more consistent under exhaustive_patterns 2019-12-04 16:43:21 +00:00
Nadrieril
1c77a049b9 Fix erroneous comment 2019-12-04 16:43:21 +00:00
Nadrieril
1bd97ae8a1 Tweak error on empty match 2019-12-04 16:43:21 +00:00
Nadrieril
922310d60f Add tests 2019-12-04 16:43:21 +00:00
Nadrieril
1c1bec2f6d Remove top-level or-pattern hack 2019-12-02 16:03:03 +00:00
Nadrieril
a476af22e8 Correct error on partially unreachable or-pat in if let 2019-12-02 16:03:03 +00:00
Nadrieril
00ccadf43f Add some tests 2019-12-02 16:00:24 +00:00
bors
f453d1127d Auto merge of #66603 - Nadrieril:fix-65413, r=varkor
Fix #65413

#65413 was due to an oversight in `pat_constructor` that didn't check if a particular const value was maybe a slice/array const.
2019-11-28 14:22:47 +00:00
Mazdak Farrokhzad
8f6197f39f Remove #![feature(never_type)] from tests.
Also remove `never_type` the feature-gate test.
2019-11-21 14:55:32 +01:00
Nadrieril
5510f5589e Use appropriate constructor for const slices 2019-11-21 11:20:46 +00:00
Nadrieril
fa4a4d3eda Add some tests 2019-11-21 11:20:46 +00:00
Nadrieril
daa117eab7 Small improvement to exhaustiveness diagnostics 2019-11-17 17:59:37 +00:00
Nadrieril
d93c1b320c Introduce new FixedLenSlice constructor
It is used in the case where a variable-length slice pattern is used to
match on an array of known size. This allows considering only those
entries in the array that are captured by one of the patterns.
As a side-effect, diagnostics improve a bit for those cases.
2019-11-16 16:43:20 +00:00
Nadrieril
c00ecfa8d2 Add some tests 2019-11-16 16:18:46 +00:00
Nadrieril
cde9808eaa Add regression test 2019-11-15 16:55:38 +00:00