Commit graph

29041 commits

Author SHA1 Message Date
Mazdak Farrokhzad
6a8683fcd0
Rollup merge of #69896 - petrochenkov:reqname2, r=Centril
parse: Tweak the function parameter edition check

Follow-up to https://github.com/rust-lang/rust/pull/69801.

Edition of a code fragment is inferred from "the place where the code is written".
For individual tokens like edition-specific keywords it may be the span of the token itself ("uninterpolated" span), but for larger code fragments it's probably not, in the test example the trait method is obviously written in "2015 edition code".

r? @Centril
2020-03-11 10:36:33 +01:00
Mazdak Farrokhzad
a05bab5925
Rollup merge of #69891 - Centril:fix-69875, r=varkor
Exhaustiveness checking, `Matrix::push`: recursively expand or-patterns

> There's an implicit invariant that there should be no or-patterns directly in the first column of the matrix, but this invariant is broken exactly when an or-pattern has a child that is itself an or-pattern.

Here we preserve this broken invariant by recursively expanding `PatKind::Or`s in `Matrix::push`.
Fixes https://github.com/rust-lang/rust/issues/69875.

r? @varkor
cc @Nadrieril
cc https://github.com/rust-lang/rust/issues/54883
2020-03-11 10:36:31 +01:00
Mazdak Farrokhzad
62e3daee3f
Rollup merge of #69859 - contrun:fix-62456, r=matthewjasper
fix #62456

closes https://github.com/rust-lang/rust/issues/62456
2020-03-11 10:36:29 +01:00
Mazdak Farrokhzad
dfbbd5d6ea
Rollup merge of #69825 - lcnr:discriminant, r=oli-obk
make `mem::discriminant` const

implements #69821, which could be used as a tracking issue for `const_discriminant`.

Should this be added to the meta tracking issue #57563?
@Lokathor
2020-03-11 10:36:28 +01:00
Mazdak Farrokhzad
d7f0b88ade
Rollup merge of #69591 - matthewjasper:query-response-relate, r=nikomatsakis
Use TypeRelating for instantiating query responses

`eq` can add constraints to `RegionConstraintData`, which isn't allowed during borrow checking outside of a `CustomTypeOp`. Use `TypeRelating` instead to always push constraints to the obligations list.

closes #69490
2020-03-11 10:36:19 +01:00
Mazdak Farrokhzad
43079147f4
Rollup merge of #69373 - tspiteri:const_int_conversion, r=oli-obk
Stabilize const for integer {to,from}_{be,le,ne}_bytes methods

All of these functions can be implemented simply and naturally as const functions, e.g. `u32::from_le_bytes` can be implemented as
```rust
(bytes[0] as u32)
    | (bytes[1] as u32) << 8
    | (bytes[2] as u32) << 16
    | (bytes[3] as u32) << 24
```
So stabilizing the constness will not expose that internally they are implemented using transmute which is not const in stable.
2020-03-11 10:36:18 +01:00
Mazdak Farrokhzad
a7c2eef2ae
Rollup merge of #66059 - RalfJung:panic-on-non-zero, r=eddyb
mem::zeroed/uninit: panic on types that do not permit zero-initialization

r? @eddyb @oli-obk

Cc https://github.com/rust-lang/rust/issues/62825

Also see [this summary comment](https://github.com/rust-lang/rust/pull/66059#issuecomment-586734747)
2020-03-11 10:36:16 +01:00
Vadim Petrochenkov
6b27e8d2a6 parse: Tweak the function parameter edition check
Move anon-params tests to ui/anon-params.
2020-03-10 22:35:01 +03:00
bors
1581278534 Auto merge of #66364 - Centril:cleanup-macro-def, r=petrochenkov,eddyb
Cleanup `rmeta::MacroDef`

Avoid using rountrip parsing in the encoder and in `fn load_macro_untracked`.

The main reason I was interested in this was to remove `rustc_parse` as a dependency of `rustc_metadata` but it seems like this had other benefits as well.

Fixes #49511.

r? @eddyb
cc @matthewjasper @estebank @petrochenkov
2020-03-10 17:12:48 +00:00
Mazdak Farrokhzad
4d16c217b8 Matrix::push: recursively expand or-patterns 2020-03-10 17:46:19 +01:00
Bastian Kauschke
7b3e3ff39a explain the use of a custom identity function 2020-03-10 12:46:22 +01:00
Mazdak Farrokhzad
bafa5cc9ba macros/unknown-builtin: use hack for musl problems 2020-03-10 08:30:07 +01:00
Mazdak Farrokhzad
87b6bc3518 span-api-tests: leave FIXME 2020-03-10 07:26:27 +01:00
Ana-Maria Mihalache
4809be0137 rustc_errors: Use ensure_source_file_source_present where necessary. 2020-03-10 07:26:27 +01:00
Mazdak Farrokhzad
cf2d4236eb --bless some tests 2020-03-10 07:26:27 +01:00
Mazdak Farrokhzad
b3bc427228 adjust span-api-tests.rs 2020-03-10 07:26:27 +01:00
Mazdak Farrokhzad
192d134e80 pacify rustdoc by using better url 2020-03-10 07:26:27 +01:00
Mazdak Farrokhzad
436f2ec58c
Rollup merge of #69836 - JohnTitor:immediate-outputs, r=nagisa
Check if output is immediate value

Fixes #62046

r? @nagisa
2020-03-10 06:47:55 +01:00
Mazdak Farrokhzad
08095f4978
Rollup merge of #69817 - thekuom:test/borrow-checking-pattern-features, r=Centril
test(patterns): add patterns feature tests to borrowck test suite

Addresses request here: https://github.com/rust-lang/rust/pull/69690#issuecomment-595763571

Fixes https://github.com/rust-lang/rust/issues/67311.

r? @Centril
2020-03-10 06:47:53 +01:00
Mazdak Farrokhzad
61150353bf
Rollup merge of #69514 - GuillaumeGomez:remove-spotlight, r=kinnison
Remove spotlight

I had a few comments saying that this feature was at best misunderstood or not even used so I decided to organize a poll about on [twitter](https://twitter.com/imperioworld_/status/1232769353503956994). After 87 votes, the result is very clear: it's not useful. Considering the amount of code we have just to run it, I think it's definitely worth it to remove it.

r? @kinnison

cc @ollie27
2020-03-10 06:47:47 +01:00
YI
0a0c850d73 fix test failure due to earlier emitted error 2020-03-10 10:54:48 +08:00
YI
906bb8d0e8 fix #62456 2020-03-10 09:30:24 +08:00
Matthew Kuo
b974d6fc30 test(patterns): add borrowck tests for combination of pattern features
Adds borrowck tests for the following features:
- bindings_after_at
- or_patterns
- slice_patterns
- box_patterns
2020-03-09 08:27:45 -05:00
Mazdak Farrokhzad
7e903f82ff
Rollup merge of #69842 - JohnTitor:more-tests, r=Centril
Add more regression tests

Closes #54239
Closes #57200
Closes #57201
Closes #60473
Closes #64620
Closes #67166

r? @Centril
2020-03-09 12:57:54 +01:00
Mazdak Farrokhzad
c9bbfb9474
Rollup merge of #69762 - RalfJung:validity-errors, r=oli-obk
Ensure that validity only raises validity errors

For now, only as a debug-assertion (similar to const-prop detecting errors that allocate).

Now includes https://github.com/rust-lang/rust/pull/69646.
[Relative diff](https://github.com/RalfJung/rust/compare/layout-visitor...RalfJung:validity-errors).

r? @oli-obk
2020-03-09 12:57:50 +01:00
Mazdak Farrokhzad
eaf6905c55
Rollup merge of #69685 - cuviper:soft-segv, r=sfackler
unix: Don't override existing SIGSEGV/BUS handlers

Although `stack_overflow::init` runs very early in the process, even
before `main`, there may already be signal handlers installed for things
like the address sanitizer. In that case, just leave it alone, and don't
bother trying to allocate our own signal stacks either.

Fixes #69524.
2020-03-09 12:57:48 +01:00
Mazdak Farrokhzad
4ec997503c
Rollup merge of #69201 - Aaron1011:feature/permit-if-attr, r=Centril
Permit attributes on 'if' expressions

Previously, attributes on 'if' expressions (e.g. `#[attr] if true {}`)
were disallowed during parsing. This made it impossible for macros to
perform any custom handling of such attributes (e.g. stripping them
away), since a compilation error would be emitted before they ever had a
chance to run.

This PR permits attributes on 'if' expressions ('if-attrs' from here on).
Both built-in attributes (e.g. `#[allow]`, `#[cfg]`) and proc-macro attributes are supported.

We still do *not* accept attributes on 'other parts' of an if-else
chain. That is, the following code snippet still fails to parse:

```rust
if true {} #[attr] else if false {} else #[attr] if false {} #[attr]
else {}
```

Closes https://github.com/rust-lang/rust/issues/68618
2020-03-09 12:57:44 +01:00
Bastian Kauschke
314da73797 discrimant test must not be inlined! 2020-03-09 10:12:44 +01:00
Yuki Okushi
ef98ec055e
Add FIXMEs 2020-03-09 16:50:46 +09:00
Josh Stone
676b9bc477 unix: Don't override existing SIGSEGV/BUS handlers
Although `stack_overflow::init` runs very early in the process, even
before `main`, there may already be signal handlers installed for things
like the address sanitizer. In that case, just leave it alone, and don't
bother trying to allocate our own signal stacks either.
2020-03-08 18:44:12 -07:00
Yuki Okushi
579ce86d4b
Add test for issue-67166 2020-03-09 09:12:53 +09:00
Yuki Okushi
95d478546f
Add test for issue-64620 2020-03-09 09:12:41 +09:00
Yuki Okushi
0005f29d89
Add test for issue-60473 2020-03-09 09:12:25 +09:00
Yuki Okushi
437c07f662
Add test for issue-57201 2020-03-09 09:12:06 +09:00
Yuki Okushi
fc8be08a8e
Add test for issue-57200 2020-03-09 09:11:58 +09:00
Yuki Okushi
af0c44cb29
Add test for issue-54239 2020-03-09 09:11:40 +09:00
Yuki Okushi
d32924f89d
Check if output is immediate value 2020-03-09 07:48:08 +09:00
Ralf Jung
4971d03ccf fix some cases of unexpected exceptions leaving validation 2020-03-08 22:04:54 +01:00
Mazdak Farrokhzad
cfb2f95450
Rollup merge of #69800 - tmiasko:address-g, r=nikic
Compile address sanitizer test with debuginfo

This makes error-pattern to match regardless of current
configuration of `rust.debuginfo-level-tests` in `config.toml`.
2020-03-08 20:54:33 +01:00
Mazdak Farrokhzad
e2617a98c0
Rollup merge of #69734 - tmiasko:di-enumerator, r=ecstatic-morse
Change DIBuilderCreateEnumerator signature to match LLVM 9

* Change DIBuilderCreateEnumerator signature to match LLVM 9 C API.
* Use provided is unsigned flag when emitting enumerators.
2020-03-08 20:54:31 +01:00
Mazdak Farrokhzad
85241b5aa6
Rollup merge of #69120 - spunit262:invalid-sugar-suggest, r=matthewjasper
Don't give invalid suggestion on desugared span.
2020-03-08 20:54:26 +01:00
Bastian Kauschke
4b724e82d2 allow dead code in discriminant test 2020-03-08 18:56:15 +01:00
Bastian Kauschke
6bbb9b86c4 test discriminant of enum with uninhabited variant 2020-03-08 17:04:02 +01:00
Mazdak Farrokhzad
c31b7044c1
Rollup merge of #69646 - RalfJung:layout-visitor, r=eddyb
Miri visitor: detect primitive types based on type, not layout (also, more tests)

I also converted the union-based transmutes to use `mem::transmute` for increased readability.

r? @eddyb @oli-obk
2020-03-08 16:53:36 +01:00
Bastian Kauschke
22f2385a73 prevent potential promotion in const_discriminant 2020-03-08 15:12:46 +01:00
Bastian Kauschke
6d03bbd480 constify mem::discriminant 2020-03-08 14:24:32 +01:00
Ralf Jung
a95f00fe1b fix type size mismatch on 32bit 2020-03-08 12:41:59 +01:00
Mazdak Farrokhzad
49c82d1170
Rollup merge of #69810 - thekuom:test/67523-dynamic-semantics-bindings-after-at, r=Centril
test(bindings_after_at): add dynamic drop tests for bindings_after_at

Fixes https://github.com/rust-lang/rust/issues/67523.
Working towards https://github.com/rust-lang/rust/issues/65490.
2020-03-08 11:51:20 +01:00
Mazdak Farrokhzad
17b77913f9
Rollup merge of #69805 - petrochenkov:importname, r=Centril
resolve: Modernize some naming

`ImportDirective` -> `Import`
`ImportDirectiveSubclass` -> `ImportKind`
`ImportKind::SingleImport` -> `ImportKind::Single`
`ImportKind::GlobImport` -> `ImportKind::Glob`
2020-03-08 11:51:18 +01:00
Mazdak Farrokhzad
c717721c1b
Rollup merge of #69599 - Centril:typeck-tweak-wording, r=davidtwco
check_binding_alt_eq_ty: improve precision wrt. `if let`

Follow up to https://github.com/rust-lang/rust/pull/69452 -- this tweaks the `check_binding_alt_eq_ty` logic wrt. wording so that `if let` doesn't include "in this arm" (because there can only ever be one arm).

r? @estebank
2020-03-08 11:51:14 +01:00