Commit Graph

124263 Commits

Author SHA1 Message Date
Bastian Kauschke 104cb878e3 add `PredicateKint`, because who doesn't like bodging 2020-07-27 20:15:46 +02:00
bors efc02b03d1 Auto merge of #74831 - Manishearth:rollup-ugw4pt4, r=Manishearth
Rollup of 4 pull requests

Successful merges:

 - #73858 (Make more primitive integer methods const)
 - #74487 (Forbid generic parameters in anon consts inside of type defaults)
 - #74803 (rustbuild: fix bad usage of UNIX exec() in rustc wrapper)
 - #74822 (More ensure stack to avoid segfault with increased `recursion_limit`)

Failed merges:

r? @ghost
2020-07-27 16:21:09 +00:00
Manish Goregaokar 539ba96c18
Rollup merge of #74822 - JohnTitor:no-sigsegv, r=oli-obk
More ensure stack to avoid segfault with increased `recursion_limit`

Fixes #74711
I do not add the test here since the limit value depends on the machine and it's hard to test the output.
r? @oli-obk
2020-07-27 09:20:20 -07:00
Manish Goregaokar c9cdc87d8b
Rollup merge of #74803 - infinity0:fix-exec, r=nagisa
rustbuild: fix bad usage of UNIX exec() in rustc wrapper

exec never returns, it replaces the current process. so anything after it is unreachable. that's not how exec_cmd() is used in the surrounding code

We use `--on-fail env` on Debian. `env` always returns exit code 0. This means that the `rustc` bootstrap wrapper always returns exit code 0 even when it fails. However, the crossbeam-utils build process (due to autocfg) relies on `rustc` returning error exit codes when detecting CPU features, and ends up writing `cargo:rustc-cfg=has_atomic_u128` even when it's not detected, because the `rustc` wrapper is always giving exit code 0.

(This separately is causing our builds to try to compile rustc 40+ times, due to #74801.)
2020-07-27 09:20:18 -07:00
Manish Goregaokar e0543409d5
Rollup merge of #74487 - lcnr:const-in-ty-default, r=varkor
Forbid generic parameters in anon consts inside of type defaults

Emit a resolution error for `struct Foo<T, U = [u8; std::mem::size_of::<T>()]>`.
We are unable to support this with the way `ty::Generics` is currently used,
so let's just forbid it entirely for now.

Fixes some ICE on stable, e.g.
```rust
struct Foo<T, U = [u8; std::mem::size_of::<*mut T>()]>(T, U);
```

r? @varkor @eddyb
2020-07-27 09:20:16 -07:00
Manish Goregaokar 7864c3f5fa
Rollup merge of #73858 - tspiteri:const-methods, r=oli-obk
Make more primitive integer methods const

Now that #72437 has been merged and `const_if_match` is stable, these methods can be stabilized const. The methods are grouped in commits according to feature names:

* `const_nonzero_int_methods`
    - `NonZero*::new`
* some `const_checked_int_methods`
    - `{i*,u*}::checked_add`
    - `{i*,u*}::checked_sub`
    - `{i*,u*}::checked_mul`
    - `{i*,u*}::checked_neg`
    - `{i*,u*}::checked_shl`
    - `{i*,u*}::checked_shr`
    - `i*::checked_abs`
* `const_saturating_int_methods`
    - `{i*,u*}::saturating_add`
    - `{i*,u*}::saturating_sub`
    - `{i*,u*}::saturating_mul`
    - `i*::saturating_neg`
    - `i*::saturating_abs`
* `const_int_sign`
    - `i*::signum`
* `const_ascii_ctype_on_intrinsics`
    - `{char,u8}::is_ascii_alphabetic`
    - `{char,u8}::is_ascii_uppercase`
    - `{char,u8}::is_ascii_lowercase`
    - `{char,u8}::is_ascii_alphanumeric`
    - `{char,u8}::is_ascii_digit`
    - `{char,u8}::is_ascii_hexdigit`
    - `{char,u8}::is_ascii_punctuation`
    - `{char,u8}::is_ascii_graphic`
    - `{char,u8}::is_ascii_whitespace`
    - `{char,u8}::is_ascii_control`
2020-07-27 09:20:15 -07:00
Bastian Kauschke 952fd0ce58 update tests 2020-07-27 16:41:27 +02:00
Bastian Kauschke 33a05b40f7 forbid generic params inside of anon consts in ty defaults 2020-07-27 16:33:23 +02:00
Bastian Kauschke cb19cdb711 name `ParamInTyOfConstArg` 2020-07-27 16:33:23 +02:00
bors 4a90e36c85 Auto merge of #74775 - RalfJung:miri-alloc-ids, r=oli-obk
Miri: replace canonical_alloc_id mechanism by extern_static_alloc_id

We only have to call `extern_static_alloc_id` when a `Pointer` is "imported" from the `tcx` to the machine, not on each access. Also drop the old hook for TLS handling, it is not needed any more.

The Miri side of this is at https://github.com/rust-lang/miri/pull/1489.

Fixes https://github.com/rust-lang/rust/issues/71194
r? @oli-obk
2020-07-27 13:07:46 +00:00
Yuki Okushi 00b380b8ca
More ensure stack to avoid segfault with increased `recursion_limit` 2020-07-27 21:03:42 +09:00
bors 52d2c7ac94 Auto merge of #74817 - JohnTitor:rollup-0fchdye, r=JohnTitor
Rollup of 6 pull requests

Successful merges:

 - #74088 (Avoid writes without any data in `Write::write_all_vectored`)
 - #74598 (Fix sync_once_cell_does_not_leak_partially_constructed_boxes)
 - #74750 (Clean up some uses of logging in ui tests)
 - #74783 (python codes cleanup)
 - #74790 (Don't italicize comments in ayu theme)
 - #74799 (Fixed typo in `closure`)

Failed merges:

r? @ghost
2020-07-27 11:07:32 +00:00
Ralf Jung b8fd0f6a13 rename eval_const_to_op -> const_to_op 2020-07-27 13:01:01 +02:00
Yuki Okushi 7df242dd09
Rollup merge of #74799 - Dhs92:master, r=joshtriplett
Fixed typo in `closure`
2020-07-27 19:32:02 +09:00
Yuki Okushi 0042e41181
Rollup merge of #74790 - Cldfire:ayu-no-italic-comments, r=GuillaumeGomez
Don't italicize comments in ayu theme

Closes #74770.

Before:

![image](https://user-images.githubusercontent.com/13814214/88486217-2bf18700-cf4a-11ea-896d-e7787b94e7a7.png)

After:

![image](https://user-images.githubusercontent.com/13814214/88486225-3a3fa300-cf4a-11ea-929f-90461799dc01.png)
2020-07-27 19:32:00 +09:00
Yuki Okushi 807d221ddd
Rollup merge of #74783 - jnozsc:python_cleanup, r=Mark-Simulacrum
python codes cleanup
2020-07-27 19:31:58 +09:00
Yuki Okushi 72aad35649
Rollup merge of #74750 - oli-obk:logging_and_test_cleanups, r=JohnTitor
Clean up some uses of logging in ui tests

The removed test can't possibly trigger anything today as we don't have logging in libstd.

The `exec-env` flag was mistakenly used for adding env vars to rustc invocations both in test and in the test suite and there were some accidental renames from RUST_LOG to RUSTC_LOG that I reverted.
2020-07-27 19:31:56 +09:00
Yuki Okushi ba3c245227
Rollup merge of #74598 - mzohreva:mz/fix-test, r=KodrAus
Fix sync_once_cell_does_not_leak_partially_constructed_boxes

Spinning multiple threads in this test causes a deadlock in
SGX where thread scheduling is not preemptive.

cc @jethrogb @AdrianCX
2020-07-27 19:31:55 +09:00
Yuki Okushi 1361b02c9f
Rollup merge of #74088 - tmiasko:write-all-vectored-empty, r=KodrAus
Avoid writes without any data in `Write::write_all_vectored`

Previously, when non-empty sequence of empty IoSlices have been provided
to `Write::write_all_vectored`, the buffers would be written as is with
`Write::write_vectored` and subsequently the return value `Ok(0)` would
be misinterpreted as an error.

Avoid writes without any data by advancing the buffers first. This
matches the documented behaviour of `Write::write_all_vectored`
and is analogous to what happens in `Write::write_all`.
2020-07-27 19:31:53 +09:00
bors 9af6b3d4e7 Auto merge of #74737 - smmalis37:astconv-factor, r=davidtwco
Pull out some duplicated code into a new function

I debated pulling the actual struct_span_err calls into the new method, but I felt like having to pass in multiple arguments for it and wiring up string formatting outweighed the benefits.

Viewing the diff with whitespace ignored is recommended.
2020-07-27 09:22:09 +00:00
bors 1841fb97e1 Auto merge of #74653 - petrochenkov:pmenv, r=dtolnay
proc_macro: Add API for tracked access to environment variables

Continuation of https://github.com/rust-lang/rust/pull/71858.

`proc_macro::tracked_env::var` is similar to regular `env::var` called from a proc macro, except that it also adds the accessed variable to depinfo.
2020-07-27 05:50:29 +00:00
bors f721fb5933 Auto merge of #74784 - anp:track-vtables, r=eddyb
Fix #[track_caller] shims for trait objects.

We were missing an Instance::resolve_for_fn_ptr in resolve_for_vtable.

Closes #74764.
2020-07-27 03:47:17 +00:00
Ximin Luo b99668bd22 rustbuild: rename exec_cmd -> status_code for clarity 2020-07-27 03:00:28 +01:00
bors fa36f96068 Auto merge of #72121 - Aaron1011:final-hygiene-rebase, r=petrochenkov
Serialize span hygiene data

Fixes #68686
Fixes #70963

This PR serializies global hygiene data into both the incremental compilation cache and the crate metadata. This allows hygiene information to be preserved across compilation sessions (both incremental and cross-crate).

When serializing a `SyntaxContext`, we simply write out the raw id from the current compilation session. Whenever we deserialize a `SyntaxContext`, we 'remap' the id to a fresh id in our current compilation session, and load the associated `SyntaxContextData`.

As a result, some 'upstream' `SyntaxContextData` will end up getting duplicated in 'downstream' crates. This only happens when we actually need to use an 'upstream' `SyntaxContext`, which occurs when we deserialize a `Span` that requires it.

We serialize an `ExpnData` into the metadata of the crate which generated it. An `ExpnId` is serialized as a reference into the crate which 'owns' the corresponding `ExpnData`, which avoids duplication in downstream crates.

I've included a macros 2.0 test which requires hygiene serialization to compile successfully.

TODO:

- [x] <strike>Determine how many additional `DefId`s we end up creating for `ExpnId`s - this may be significant for `libcore`, which uses macros heavily. Alternatively, we could try to compute a `DefPathHash` without making a corresponding `DefId` - however, this might significantly complicate the implementation.</strike> (We no longer create `DefId`s)
- [x] Investigate the overhead of duplicating `SyntaxContextData` in crate metadata.
- [x] Investigate how `resolve_crate_root` behaves with deserialized hygiene data - the current logic may be wrong.
- [x] Add additional tests. The effects of this PR are usually only noticeable when working with headache-inducing macro expansions (e.g. macros expanding to macros), so there are lots of corner cases to test.
- [x] Determine what to do about this:

4774f9b523/src/librustc_resolve/build_reduced_graph.rs (L892)

- [x] Determine if we need to do anything here - I think the fact that `src/test/ui/hygiene/cross_crate_hygiene.rs` passes means that this is working.

3d5d0f898c/src/librustc_resolve/imports.rs (L1389-L1392)
2020-07-27 01:54:27 +00:00
Ximin Luo 0cf17e750d rustbuild: fix bad usage of UNIX exec() in rustc wrapper
exec never returns, it replaces the current process. so anything after it is
unreachable. that's not how exec_cmd() is used in the surrounding code
2020-07-27 02:43:47 +01:00
Alex 06cc666197
Fixed typo in `closure` 2020-07-26 17:05:49 -07:00
Aaron Hill f7235a898a
Normalize the test output of hygiene-related tests
A raw SyntaxContext id is implicitly dependent on the target platform,
since libstd and libcore have platform-dependent #[cfg]s which affect
which macros are invoked. As a result, we must strip out any
SyntaxContext ids from test output to ensure that the captured stdout is
not platform-dependent.
2020-07-26 20:05:02 -04:00
Aaron Hill 768803cbb5
Remove explicit `extern crate` from proc-macro test
We only want to load this auxiliary crate from a proc-macro, so that it
only ever needs to get built for the host platform.
2020-07-26 18:37:03 -04:00
Aaron Hill f622f45afd
Share serialization optimization between incr and metadata 2020-07-26 18:37:03 -04:00
Aaron Hill cf7bef302a
Properly reset `orig_id` when loading from incremental cache 2020-07-26 18:37:02 -04:00
Aaron Hill 7e0d3fdd88
Add test for hygiene caching issue 2020-07-26 18:37:02 -04:00
Aaron Hill dc21612383
Ignore `orig_id` for stable hashing
This does not affect semantic equality, and was causing an enormous
number of Span hash invalidations.
2020-07-26 18:37:02 -04:00
Aaron Hill 979dd77c5d
Add test for serializing hygiene *into* a proc-macro crate
This is a very obscure corner case, and should never be hit in practice.
2020-07-26 18:37:02 -04:00
Aaron Hill 5cd1b5dd79
Add test for use of $crate in nested foreign macro_rules! 2020-07-26 18:37:02 -04:00
Aaron Hill 0caebfabe6
Hygiene serialization implementation 2020-07-26 18:37:02 -04:00
bors c70986264b Auto merge of #74708 - kanru:issue-74564, r=davidtwco
Ensure stack when type checking and building MIR for large if expressions

Fixes #74564
2020-07-26 22:35:13 +00:00
Ximin Luo 1f25a4b3ae config.toml.example: Update remap-debuginfo doc to be more general & accurate 2020-07-26 23:14:17 +01:00
bors 6c8927b0cf Auto merge of #74792 - flip1995:clippyup, r=Manishearth
Update Clippy

Biweekly Clippy Sync

r? @Manishearth
2020-07-26 20:08:45 +00:00
flip1995 e4e1b8c6b7
Merge commit 'da5a6fb1b65ec6581a67e942a3850f6bc15a552c' into clippyup 2020-07-26 21:07:07 +02:00
Jarek Samic 51b99d48fa Don't italicize comments in ayu theme 2020-07-26 14:11:10 -04:00
bors da5a6fb1b6 Auto merge of #5845 - giraffate:fix_fp_useless_conversion, r=yaahc
Fix FP `useless_conversion`

Fix #5833.

changelog: none
2020-07-26 17:50:54 +00:00
Adam Perry 4c710e72c4 Fix #[track_caller] shims for trait objects.
We were missing an Instance::resolve_for_fn_ptr in resolve_for_vtable.

Closes #74764.
2020-07-26 10:12:12 -07:00
jnozsc db4e9722bf python codes cleanup 2020-07-26 09:56:12 -07:00
Oliver Scherer 86ac65c887 Bless you 2020-07-26 17:03:38 +02:00
bors 62392966a3 Auto merge of #74772 - JohnTitor:add-tests, r=lcnr
Add some regression tests

cc #56445
Fixes #72911
2020-07-26 14:09:36 +00:00
Ralf Jung 1df9f44db7 typos + fmt 2020-07-26 15:45:09 +02:00
Oliver Scherer b663892e54 Remove more obsolete test flags 2020-07-26 13:24:19 +02:00
Vadim Petrochenkov 62c9fa939d proc_macro: Add API for tracked access to environment variables 2020-07-26 13:37:37 +03:00
Tomasz Miąsko 7a5d3abfb1 Avoid writes without any data in `Write::write_all_vectored`
Previously, when non-empty sequence of empty IoSlices have been provided
to `Write::write_all_vectored`, the buffers would be written as is with
`Write::write_vectored` and subsequently the return value `Ok(0)` would
be misinterpreted as an error.

Avoid writes without any data by advancing the buffers first. This
matches the documented behaviour of `Write::write_all_vectored`
and is analogous to what happens in `Write::write_all`.
2020-07-26 12:25:02 +02:00
Ralf Jung 069e84a118 move getting the initial value of a static into helper function 2020-07-26 12:02:03 +02:00