Commit Graph

108798 Commits

Author SHA1 Message Date
Pietro Albini
94ed0719f7
Rollup merge of #70116 - pietroalbini:ci-fix-windows-python-path, r=Mark-Simulacrum
ci: use python from the correct path

Apparently the old path we were using for Python 2 on Windows was not documented, and eventually got removed. This switches our CI to use the correct path.

See https://github.com/rust-lang/rust/pull/70112#issuecomment-600760786 for the actual failure.
2020-03-18 21:11:11 +01:00
Pietro Albini
11053bafac
Rollup merge of #70112 - Centril:rollup-gpi5tbq, r=Centril
Rollup of 10 pull requests

Successful merges:

 - #67749 (keyword docs for else and inkeyword docs for else and in.)
 - #69139 (clean up E0308 explanation)
 - #69189 (Erase regions in writeback)
 - #69837 (Use smaller discriminants for generators)
 - #69838 (Expansion-driven outline module parsing)
 - #69839 (Miri error reform)
 - #69899 (Make methods declared by `newtype_index` macro `const`)
 - #69920 (Remove some imports to the rustc crate)
 - #70075 (Fix repr pretty display)
 - #70106 (Tidy: fix running rustfmt twice)

Failed merges:

 - #70051 (Allow `hir().find` to return `None`)
 - #70074 (Expand: nix all fatal errors)

r? @ghost
2020-03-18 21:11:07 +01:00
DutchGhost
4c363e3e8a Move the const-forget test into ui tests 2020-03-18 21:08:52 +01:00
Pietro Albini
779e5922ee
ci: use python from the correct path
Apparently the old path we were using for Python 2 on Windows was not
documented, and eventually got removed. This switches our CI to use the
correct path.
2020-03-18 21:07:44 +01:00
rojamd
50c0562319 Remove -ffreestanding from libprofiler_builtins because we do need the standard library 2020-03-18 15:55:26 -04:00
Mazdak Farrokhzad
b6f61a1f51
Rollup merge of #70106 - ehuss:fix-tidy-fmt-twice, r=Mark-Simulacrum
Tidy: fix running rustfmt twice

`./x.py test tidy` runs rustfmt twice. This is because `Build::build` runs `execute_cli` twice (once dry, once not). This can be quite slow (and prints a bunch of things twice).

I'm not sure if this is really the best place to check the dry_run status.
2020-03-18 18:03:49 +01:00
Mazdak Farrokhzad
60a2d063a9
Rollup merge of #70075 - GuillaumeGomez:fix-repr-display, r=petrochenkov
Fix repr pretty display

Fixes #70027.

r? @varkor
2020-03-18 18:03:47 +01:00
Mazdak Farrokhzad
292c538265
Rollup merge of #69920 - Centril:hir-cleanup, r=Zoxc
Remove some imports to the rustc crate

- When we have `NestedVisitorMap::None`, we use `type Map = dyn intravisit::Map<'v>;` instead of the actual map. This doesn't actually result in dynamic dispatch (in the future we may want to use an associated type default to simplify the code).

- Use `rustc_session::` imports instead of `rustc::{session, lint}`.

r? @Zoxc
2020-03-18 18:03:44 +01:00
Mazdak Farrokhzad
252184969b
Rollup merge of #69899 - ecstatic-morse:const-idx-methods, r=oli-obk
Make methods declared by `newtype_index` macro `const`

Crates that use the macro to define an `Idx` type need to enable `#![feature(const_if_match, const_panic)]`.
2020-03-18 18:03:42 +01:00
Mazdak Farrokhzad
a958314472
Rollup merge of #69839 - RalfJung:miri-error-cleanup, r=oli-obk
Miri error reform

Some time ago we started moving Miri errors into a few distinct categories, but we never classified all the old errors. That's what this PR does.

~~This is on top of https://github.com/rust-lang/rust/pull/69762; [relative diff](https://github.com/RalfJung/rust/compare/validity-errors...RalfJung:miri-error-cleanup).~~

r? @oli-obk

Fixes https://github.com/rust-lang/const-eval/issues/4
2020-03-18 18:03:40 +01:00
Mazdak Farrokhzad
23b79d83f2
Rollup merge of #69838 - Centril:expand-module, r=petrochenkov
Expansion-driven outline module parsing

After this PR, the parser will not do any conditional compilation or loading of external module files when `mod foo;` is encountered. Instead, the parser only leaves `mod foo;` in place in the AST, with no items filled in. Expansion later kicks in and will load the actual files and do the parsing. This entails that the following is now valid:

```rust
#[cfg(FALSE)]
mod foo {
    mod bar {
        mod baz; // `foo/bar/baz.rs` doesn't exist, but no error!
    }
}
```

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

r? @petrochenkov
2020-03-18 18:03:38 +01:00
Mazdak Farrokhzad
4118ff61ec
Rollup merge of #69837 - jonas-schievink:gen-discr-opt, r=tmandry
Use smaller discriminants for generators

Closes https://github.com/rust-lang/rust/issues/69815

I'm not yet sure about the runtime performance impact of this, so I'll try running this on some benchmarks (if I can find any). (Update: No impact on the benchmarks I've measured on)

* [x] Add test with a generator that has exactly 256 total states
* [x] Add test with a generator that has more than 256 states so that it needs to use a u16 discriminant
* [x] Add tests for the size of `Option<[generator]>`
* [x] Add tests for the `discriminant_value` intrinsic in all cases
2020-03-18 18:03:37 +01:00
Mazdak Farrokhzad
3f583fc270
Rollup merge of #69189 - matthewjasper:erase-the-world, r=nikomatsakis
Erase regions in writeback

Regions in `TypeckTables` (except canonicalized user annotations) are now erased. Further, we no longer do lexical region solving on item bodies with `-Zborrowck=mir`.

cc #68261
r? @nikomatsakis
2020-03-18 18:03:35 +01:00
Mazdak Farrokhzad
8188b2163d
Rollup merge of #69139 - GuillaumeGomez:cleanup-e0308, r=Dylan-DPC
clean up E0308 explanation

r? @Dylan-DPC
2020-03-18 18:03:33 +01:00
Mazdak Farrokhzad
56106847da
Rollup merge of #67749 - gilescope:keyword-in, r=Dylan-DPC
keyword docs for else and inkeyword docs for else and in.

First cut of else and in keyword docs. Comments and suggestions more than welcome.
2020-03-18 18:03:31 +01:00
Eric Huss
287c4eb094 Tidy: fix running rustfmt twice 2020-03-18 08:15:29 -07:00
Mazdak Farrokhzad
8caf688844 --bless windows test 2020-03-18 15:11:35 +01:00
Mazdak Farrokhzad
e301291cb6 fix rebase fallout 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
5ee4f6f660 fix pre-expansion linting infra 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
41a0b3ec53 use pretty-compare-only in a test 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
fe71342091 tweak outline module parsing spans 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
7d0e5bbb67 parser/expand: minor cleanup 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
a6cb04ff23 add test for stripped nested outline module 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
31ee8e0a43 {rustc_parse -> rustc_expand}::config 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
3796faefb1 {rustc_parse::parser -> rustc_expand}::module 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
ddcc8ec89d move Directory -> parser::module 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
f1ca9969bf parse: module parsing -> item.rs 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
83a757a9ca outline modules: parse -> expand. 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
59bf8a07f9 extract error_on_circular_module 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
463995fe29 extract parse_external_module 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
8bab88f2d9 de-fatalize outline module parsing 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
b9e1b26611 expand: use push_directory 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
98e71cd5d7 decouple eval_src_mod from Parser 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
53a633fb44 decouple push_directory from Parser 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
ca098b16a4 detach submod_path from Parser 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
dfcefa49ed extract error_on_circular_module 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
7108b7fbfe extract parse_mod 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
803de3188c submod_path: use id.span 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
2db5d49d47 simplify submod_path 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
185c1d340c extract error_decl_mod_in_block 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
2899a58cab extract error_cannot_declare_mod_here 2020-03-18 15:08:25 +01:00
Mazdak Farrokhzad
bc75cba23f submod_path_from_attr: simplify & document 2020-03-18 15:08:25 +01:00
Alex Crichton
d5b6a20557 std: Don't abort process when printing panics in tests
This commit fixes an issue when using `set_print` and friends, notably
used by libtest, to avoid aborting the process if printing panics. This
previously panicked due to borrowing a mutable `RefCell` twice, and this
is worked around by borrowing these cells for less time, instead
taking out and removing contents temporarily.

Closes #69558
2020-03-18 07:06:13 -07:00
Ralf Jung
c95f08affa increase stack slack for x86_64-pc-windows-gnu 2020-03-18 13:35:46 +01:00
Waffle
d36d3fa5a6 fixes to Option::{zip,zip_with}
- remove `#[inline]` attributes (see https://github.com/rust-lang/rust/pull/69997#discussion_r393942617)
- fill tracking issue in `#[unstable]` attributes
- slightly improve the docs
2020-03-18 11:26:04 +03:00
Waffle
a5206f9749 add Option::{zip,zip_with} methods under "option_zip" gate
This commit introduces 2 methods - `Option::zip` and `Option::zip_with` with
respective signatures:
- zip: `(Option<T>, Option<U>) -> Option<(T, U)>`
- zip_with: `(Option<T>, Option<U>, (T, U) -> R) -> Option<R>`
Both are under the feature gate "option_zip".

I'm not sure about the name "zip", maybe we can find a better name for this.
(I would prefer `union` for example, but this is a keyword :( )

--------------------------------------------------------------------------------

Recently in a russian rust begginers telegram chat a newbie asked (translated):
> Are there any methods for these conversions:
>
> 1. `(Option<A>, Option<B>) -> Option<(A, B)>`
> 2. `Vec<Option<T>> -> Option<Vec<T>>`
>
> ?

While second (2.) is clearly `vec.into_iter().collect::<Option<Vec<_>>()`, the
first one isn't that clear.

I couldn't find anything similar in the `core` and I've come to this solution:
```rust
let tuple: (Option<A>, Option<B>) = ...;
let res: Option<(A, B)> = tuple.0.and_then(|a| tuple.1.map(|b| (a, b)));
```

However this solution isn't "nice" (same for just `match`/`if let`), so I thought
that this functionality should be in `core`.
2020-03-18 10:25:58 +03:00
bors
f509b26a77 Auto merge of #69907 - ehuss:update-cargo, r=ehuss
Update cargo

Update cargo

21 commits in bda50510d1daf6e9c53ad6ccf603da6e0fa8103f..7019b3ed3d539db7429d10a343b69be8c426b576
2020-03-02 18:05:34 +0000 to 2020-03-17 21:02:00 +0000
- Run through clippy (rust-lang/cargo#8015)
- Fix config profiles using "dev" in `cargo test`. (rust-lang/cargo#8012)
- Run CI on all PRs. (rust-lang/cargo#8011)
- Add unit-graph JSON output. (rust-lang/cargo#7977)
- Split workspace/validate() into multiple functions (rust-lang/cargo#8008)
- Use Option::as_deref (rust-lang/cargo#8005)
- De-duplicate edges (rust-lang/cargo#7993)
- Revert "Disable preserving mtimes on archives" (rust-lang/cargo#7935)
- Close the front door for clippy but open the back (rust-lang/cargo#7533)
- Fix CHANGELOG.md typos (rust-lang/cargo#7999)
- Update changelog note about crate-versions flag. (rust-lang/cargo#7998)
- Bump to 0.45.0, update changelog (rust-lang/cargo#7997)
- Bump libgit2 dependencies (rust-lang/cargo#7996)
- Avoid buffering large amounts of rustc output. (rust-lang/cargo#7838)
- Add "Updating" status for git submodules. (rust-lang/cargo#7989)
- WorkspaceResolve: Use descriptive lifetime label. (rust-lang/cargo#7990)
- Support old html anchors in manifest chapter. (rust-lang/cargo#7983)
- Don't create hardlink for library test and integrations tests, fixing rust-lang/cargo#7960 (rust-lang/cargo#7965)
- Partially revert change to filter debug_assertions. (rust-lang/cargo#7970)
- Try to better handle restricted crate names. (rust-lang/cargo#7959)
- Fix bug with new feature resolver and required-features. (rust-lang/cargo#7962)
2020-03-18 06:31:24 +00:00
Eric Huss
d79c1d3428 Update cargo 2020-03-17 20:33:07 -07:00
bors
d939f708d9 Auto merge of #68915 - timvermeulen:non_fused_iter, r=Amanieu
Fix bugs in Peekable and Flatten when using non-fused iterators

I fixed a couple of bugs with regard to the `Peekable` and `Flatten`/`FlatMap` iterators when the underlying iterator isn't fused. For testing, I also added a `NonFused` iterator wrapper that panics when `next` or `next_back` is called on an iterator that has returned `None` before, which will hopefully make it easier to spot these mistakes in the future.

### Peekable

`Peekable::next_back` was implemented as
```rust
self.iter.next_back().or_else(|| self.peeked.take().and_then(|x| x))
```
which is incorrect because when the `peeked` field is `Some(None)`, then `None` has already been returned from the inner iterator and what it returns from `next_back` can no longer be relied upon. `test_peekable_non_fused` tests this.

### Flatten

When a `FlattenCompat` instance only has a `backiter` remaining (i.e. `self.frontiter` is `None` and `self.iter` is empty), then `next` will call `self.iter.next()` every time, so the `iter` field needs to be fused. I fixed it by giving it the type `Fuse<I>` instead of `I`, I think this is the only way to fix it. `test_flatten_non_fused_outer` tests this.

Furthermore, previously `FlattenCompat::next` did not set `self.frontiter` to `None` after it returned `None`, which is incorrect when the inner iterator type isn't fused. I just delegated it to `try_fold` because that already handles it correctly. `test_flatten_non_fused_inner` tests this.

r? @scottmcm
2020-03-18 03:08:52 +00:00
Eduard-Mihai Burtescu
63811bc38f rustc_infer: remove InferCtxt::closure_sig as the FnSig is always shallowly known. 2020-03-18 02:16:01 +02:00