Commit Graph

100935 Commits

Author SHA1 Message Date
Trevor Spiteri 08a7fa6dd8 update stable-since version for const_int_conversion 2020-03-13 14:25:35 +01:00
Mazdak Farrokhzad 9463cf3361 Rollup merge of #69945 - contrun:fix-outdated-comment, r=petrochenkov
update outdated comment
2020-03-12 16:32:27 +01:00
Mazdak Farrokhzad 841f212b50 Rollup merge of #69921 - matthiaskrgr:rustdoc_import, r=Centril
rustdoc: remove unused import

```
    Checking rustdoc v0.0.0 (/home/matthias/vcs/github/rust/src/librustdoc)
warning: unused import: `rustc_span::symbol::sym`
  --> src/librustdoc/clean/inline.rs:15:5
   |
15 | use rustc_span::symbol::sym;
   |     ^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: `#[warn(unused_imports)]` on by default
```
2020-03-12 16:32:25 +01:00
Mazdak Farrokhzad fac7122682 Rollup merge of #69830 - RalfJung:miri-invalid-terminator, r=oli-obk
miri: ICE on invalid terminators

We've run a lot of MIR in Miri (including some generators) and never seen these.

@tmandry is it correct that `Yield` and `GeneratorDrop` get lowered away?

@eddyb @oli-obk what's with this `Abort` that does not seem to ever actually exist? Codegen *does* seem to handle it, so I wonder why Miri can get away without that. In fact, codegen handles it twice:

https://github.com/rust-lang/rust/blob/1d5241c96208ca7d925442b1a5fa45ad18717a6f/src/librustc_codegen_ssa/mir/block.rs#L796

https://github.com/rust-lang/rust/blob/1d5241c96208ca7d925442b1a5fa45ad18717a6f/src/librustc_codegen_ssa/mir/mod.rs#L296
2020-03-12 16:32:23 +01:00
Mazdak Farrokhzad d21320cbd9 Rollup merge of #69792 - LenaWil:try_reserve_error/impl-error, r=sfackler
Implement Error for TryReserveError

I noticed that the Error trait wasn't implemented for TryReserveError. (#48043)

Not sure if the error messages and code style are 100% correct, it's my first time contributing to the Rust std.
2020-03-12 16:32:21 +01:00
Mazdak Farrokhzad 39c6405097 Rollup merge of #69747 - spastorino:rename-rustc-guide, r=pietroalbini
Rename rustc guide

This is in preparation for https://github.com/rust-lang/rustc-guide/issues/470
Needs to be merged after we actually rename the guide.

Have used this to rename:

`git grep -l 'rustc_guide' | xargs sed -i 's/rustc_guide/rustc_dev_guide/g'`
`git grep -l 'rustc-guide' | xargs sed -i 's/rustc-guide/rustc-dev-guide/g'`
`git grep -l 'rustc guide' | xargs sed -i 's/rustc guide/rustc dev guide/g'`
2020-03-12 16:32:19 +01:00
Mazdak Farrokhzad 4f7fc5ad67 Rollup merge of #69722 - estebank:negative-impl-span-ast, r=Centril
Tweak output for invalid negative impl AST errors

Use more accurate spans for negative `impl` errors.

r? @Centril
2020-03-12 16:32:17 +01:00
Mazdak Farrokhzad 3d23de7baf Rollup merge of #69705 - ehuss:toolstate-remove-redundant-beta, r=Mark-Simulacrum
Toolstate: remove redundant beta-week check.

I made a bit of a mistake in #69624.  The "beta regression" doesn't need to be checked twice.

I also rolled up #69693 to avoid merge conflicts.
2020-03-12 16:32:15 +01:00
Mazdak Farrokhzad 9bc7386970 Rollup merge of #69674 - mark-i-m:assoc-fn, r=matthewjasper
Rename DefKind::Method and TraitItemKind::Method

r? @eddyb, @Centril, or @matthewjasper

cc #69498 #60163
2020-03-12 16:32:13 +01:00
Mazdak Farrokhzad 156a05a2e7 Rollup merge of #69011 - foeb:document-unsafe-core-fmt, r=Mark-Simulacrum
Document unsafe blocks in core::fmt

r? @RalfJung
CC: @rust-lang/wg-unsafe-code-guidelines
#66219

Sorry for the hiatus, but here's a few more files with the unsafe blocks documented! I think working on it smaller chunks like this will be easier for everyone.
2020-03-12 16:32:11 +01:00
Mazdak Farrokhzad 703dcff081 Rollup merge of #68899 - kinseytamsin:lexerror-error-impl, r=Centril
Add Display and Error impls for proc_macro::LexError

This should allow LexError to play much nicer with the `?` operator.

Fixes #68896.

(I'm not sure if I did the stability attributes right, so if I need to change them, please let me know!)
2020-03-12 16:32:07 +01:00
YI d7100d6099 update outdated comment 2020-03-12 18:43:51 +08:00
bors 23de8275c9 Auto merge of #68551 - Marwes:allocations_mir, r=ecstatic-morse
perf: Reuse a Vec in mir simplification

Just moves the vec out of the outer loop so it is reused every iteration
2020-03-12 09:16:53 +00:00
bors e5e8ba4edc Auto merge of #68191 - simlay:add-tvSO-target, r=nagisa
Added tvOS as targets

This is a first attempt of adding support tvOS as described in #48862. It's got a lot of overlap with [src/librustc_target/spec/apple_ios_base.rs](https://github.com/rust-lang/rust/blob/31dd4f4acbcbdb02b0745d2136399ed664a28050/src/librustc_target/spec/apple_ios_base.rs).

I thought about refactoring `apple_ios_base.rs` to include this as well but that would require each of the ios and tvos targets to be of the something like the form `let base = opts(AppleOS::TV, Arch::Arm64)?;` I also did the same thing for watchOS because from what I can tell, all three targets (iOS, tvOS, and watchOS) have the same logic but have different parameters being sent to `xcrun`. Thoughts?

As far as the `data_layout` and other parameters to `Target`, I did as much research as I could but it really seems that processor in the [iPhone 11 is the same as the apple TV](https://en.wikipedia.org/wiki/Apple-designed_processors) so I didn't change any of those parameters.

I did get this to build and tested that it's actually running the the below logic (because the parameter to `xcrun` is `appletvos` not `tvos`).

I didn't manage to get it to actually compile a file with `fn main(){}` because I don't have the stdlib for `aarch64-apple-tvos` compiled it seems. Is there documentation for this?

Similar to the ending of https://github.com/rust-lang/rust/pull/63467, I'm not sure what to do next.
2020-03-12 04:01:02 +00:00
Kinsey Favre 5099ab6e6b Give LexError more descriptive Display impl 2020-03-11 11:57:58 -05:00
Kinsey Favre f2b22a136c Correct stability attribute for new LexError impls 2020-03-11 11:57:58 -05:00
Lena Wildervanck 2c90a37969 Reformat match statement to make the check pass 2020-03-11 17:55:14 +01:00
Lena Wildervanck 599cd683ea Format the match statement 2020-03-11 17:30:04 +01:00
Kinsey Favre c0c526951c Add Display and Error impls for proc_macro::LexError
This should allow LexError to play much nicer with the `?` operator.
2020-03-11 11:28:59 -05:00
Esteban Küber 7ee1b47092 review comments 2020-03-11 09:17:55 -07:00
Matthias Krüger 3244c84363 rustdoc: remove unused import 2020-03-11 14:24:07 +01:00
Mazdak Farrokhzad a77206fa4a Rollup merge of #69893 - tmiasko:cstr, r=petrochenkov
librustc_codegen_llvm: Use slices instead of 0-terminated strings

Changed functions:
* LLVMRustGetOrInsertFunction
* LLVMRustGetNamedValue
* LLVMRustBuildCall (removed unused name argument)
* LLVMRustInlineAsm
* LLVMRustInlineAsmVerify
* LLVMRustAppendModuleInlineAsm
2020-03-11 14:03:54 +01:00
Mazdak Farrokhzad b1471e0a26 Rollup merge of #69888 - wesleywiser:miri_exception_env_var_to_session_var, r=RalfJung
[Miri] Use a session variable instead of checking for an env var always

In CTFE heavy code, checking the env var everytime is inefficient. We
can do a lot better by using a `Session` variable instead.

r? @RalfJung

Part of #69297
2020-03-11 14:03:53 +01:00
Mazdak Farrokhzad e838383ff8 Rollup merge of #69876 - ayushmishra2005:doc/61137-add-long-error-code-e0739, r=Dylan-DPC
Add long error explanation for E0739

Add long explanation for the E0739 error code
Part of #61137

r? @GuillaumeGomez
2020-03-11 14:03:51 +01:00
Mazdak Farrokhzad 3853da75cb Rollup merge of #69850 - RalfJung:panic-bounds-check, r=eddyb
panic_bounds_check: use caller_location, like PanicFnLangItem

The `PanicFnLangItem` got switched to using `#[caller_location]` at some point, but `PanicBoundsCheckFnLangItem` was kept in the old style. For consistency, switch that one over to use `#[caller_location]` as well.

This is also helpful for Miri as it means the `assert_panic` machine hook never needs to know the current `Span`.
2020-03-11 14:03:49 +01:00
Mazdak Farrokhzad 080d41391d Rollup merge of #69828 - RalfJung:vec-leak, r=kennytm
fix memory leak when vec::IntoIter panics during drop

Fixes https://github.com/rust-lang/rust/issues/69770
2020-03-11 14:03:47 +01:00
Mazdak Farrokhzad 9674c09ae9 Rollup merge of #69760 - Centril:parse-expr-improve, r=estebank
Improve expression & attribute parsing

This PR includes misc improvements to expression and attribute parsing.

1. Some code simplifications
2. Better recovery for various block forms, e.g. `loop statements }` (missing `{` after `loop`). (See e.g., `block-no-opening-brace.rs` among others for examples.)
3. Added recovery for e.g., `unsafe $b` where `$b` refers to a `block` macro fragment. (See `bad-interpolated-block.rs` for examples.)
4. ^--- These are done so that code sharing in block parsing is increased.
5. Added recovery for e.g., `'label: loop { ... }` (See `labeled-no-colon-expr.rs`.)
6. Added recovery for e.g., `&'lifetime expr` (See `regions-out-of-scope-slice.rs`.)
7. Added recovery for e.g., `fn foo() = expr;` (See `fn-body-eq-expr-semi.rs`.)
8. Simplified attribute parsing code & slightly improved diagnostics.
9. Added recovery for e.g., `Box<('a) + Trait>`.
10. Added recovery for e.g, `if true #[attr] {} else #[attr] {} else #[attr] if true {}`.

r? @estebank
2020-03-11 14:03:45 +01:00
Mazdak Farrokhzad dde2484fce Rollup merge of #69603 - chrissimpkins:tidy-docs-update, r=petrochenkov
tidy: replace `make check` with `./x.py test` in documentation

This PR includes a minor documentation update for tidy.  It replaces the `make check` approach with `./x.py test` and describes how to execute the tidy checks (only) with ~~`./x.py test src/tools/tidy`~~ `./x.py test tidy`.
2020-03-11 14:03:44 +01:00
Mazdak Farrokhzad 741d4ff713 Rollup merge of #66472 - GuillaumeGomez:show-coverage-json, r=ollie27
--show-coverage json

The purpose of this change is to be able to use it as a tool in docs.rs in order to provide some more stats to crates' owners. Eventually even create a badge or something along the line.

r? @QuietMisdreavus
2020-03-11 14:03:42 +01:00
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 452c147fba Rollup merge of #69766 - skade:make-point-copy-in-add-documentation, r=shepmaster
Make Point `Copy` in arithmetic documentation

Small composite types like `Point { x: i32, y: i32}` are plain
old data and we should encourage users to derive `Copy` on them.

This changes the semantics of the edited examples slightly: instead
of consuming the operands during addition, it will copy them. This
is desired behaviour.
2020-03-11 10:36:26 +01:00
Mazdak Farrokhzad ae122721dc Rollup merge of #69645 - DutchGhost:const-forget-tests, r=Dylan-DPC
const forget tests

Adds tests for https://github.com/rust-lang/rust/pull/69617
2020-03-11 10:36:24 +01:00
Mazdak Farrokhzad 25091ed9b7 Rollup merge of #69625 - Stebalien:feat/iter-copy-specialize, r=KodrAus
Implement nth, last, and count for iter::Copied

Implement nth, last and count for iter::Copied.
2020-03-11 10:36:22 +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
Tomasz Miąsko 1106579c78 librustc_codegen_llvm: Use slices instead of 0-terminated strings
Changed functions:
* LLVMRustGetOrInsertFunction
* LLVMRustGetNamedValue
* LLVMRustBuildCall (removed unused name argument)
* LLVMRustInlineAsm
* LLVMRustInlineAsmVerify
* LLVMRustAppendModuleInlineAsm
2020-03-11 08:10:21 +01:00
Esteban Küber 29be741c9c review comments 2020-03-10 17:59:32 -07:00
Wesley Wiser 5357f83ee8 [Miri] Use a session variable instead of checking for an env var always
In CTFE heavy code, checking the env var everytime is inefficient. We
can do a lot better by using a `Session` variable instead.
2020-03-10 18:18:04 -04:00
Santiago Pastorino b3b32b74bc rust-lang.github.io/rustc-dev-guide -> rustc-dev-guide.rust-lang.org 2020-03-10 17:08:18 -03:00
Santiago Pastorino d00b2696d8 Rename Rustc Guide to Rustc Dev Guide 2020-03-10 17:08:18 -03:00
Santiago Pastorino 1ddcea3422 Rename rustc_guide to rustc_dev_guide 2020-03-10 17:08:17 -03:00
Santiago Pastorino 9d4fdba8be Rename rustc guide to rustc dev guide 2020-03-10 17:08:16 -03:00
Santiago Pastorino 0037f4e37c Rename rustc-guide to rustc-dev-guide 2020-03-10 17:08:10 -03: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
Florian Gilcher 69aaed872c Make Point Copy in arithmetic documentation
Small composite types like `Point { x: i32, y: i32}` are plain
old data and we should encourage users to derive `Copy` on them.

This changes the semantics of the edited examples slightly: instead
of consuming the operands during addition, it will copy them. This
is desired behaviour.

Co-Authored-By: Jake Goulding <shepmaster@mac.com>
2020-03-10 18:11:36 +01:00