122965 Commits

Author SHA1 Message Date
Manish Goregaokar
33f8ce287a
Rollup merge of #72369 - Lucretiel:socketaddr-parse, r=dtolnay
Bring net/parser.rs up to modern up to date with modern rust patterns

The current implementation of IP address parsing is very unidiomatic; it's full of `if` / `return` / `is_some` / `is_none` instead of `?`, `loop` with manual index tracking; etc. Went through and did and cleanup to try to bring it in line with modern sensibilities.

The obvious concern with making changes like this is "make sure you understand why it's written that way before changing it". Looking through the commit history for this file, there are several much smaller commits that make similar changes (For instance, 3024c1434a, 4f3ab4986e, 79f876495b), and there don't seem to be any commits in the history that indicate that this lack of idiomaticity is related to specific performance needs (ie, there aren't any commits that replace a `for` loop with a `loop` and a manual index count). In fact, the basic shape of the file is essentially unchanged from its initial commit back in 2015.

Made the following changes throughout the IP address parser:
- Replaced all uses of `is_some()` / `is_none()` with `?`.
- "Upgraded" loops wherever possible; ie, replace `while` with `for`, etc.
    - Removed all cases of manual index tracking / incrementing.
- Renamed several single-character variables with more expressive names.
- Replaced several manual control flow segments with equivalent adapters (such as `Option::filter`).
- Removed `read_seq_3`; replaced with simple sequences of `?`.
- Parser now reslices its state when consuming, rather than carrying a separate state and index variable.
- `read_digit` now uses `char::to_digit`.
- Added comments throughout, especially in the complex IPv6 parsing logic.
- Added comprehensive local unit tests for the parser to validate these changes.
2020-07-01 07:42:32 -07:00
Manish Goregaokar
128fa2b981
Rollup merge of #72071 - PankajChaudhary5:ErrorCode-E0687, r=davidtwco
Added detailed error code explanation for issue E0687 in Rust compiler.

Added proper error explanation for issue E0687 in the Rust compiler.
Error Code E0687

Sub Part of Issue #61137

r? @GuillaumeGomez
2020-07-01 07:42:27 -07:00
Mark Rousskov
562e0151d1 Verify UI tests work in pass=check mode
We do not test cross-compilation here as the PR builder lacks a sufficiently
recent LLVM to cross-compile to 32-bit linux. Once we bump the minimum LLVM
version to LLVM 9, this can use normal 32-bit linux.
2020-07-01 10:07:52 -04:00
Lzu Tao
cd9d8334bd Implement slice_strip feature 2020-07-01 12:36:42 +00:00
Vadim Petrochenkov
b37434ef31 Remove token::FlattenGroup 2020-07-01 13:40:46 +03:00
bors
1505c12395 Auto merge of #73863 - pietroalbini:revert-8bc3122311d, r=Mark-Simulacrum
Revert "ci: allow gating gha on everything but macOS"

The macOS issue on GHA's side seems to be fixed, so this is not needed anymore.

r? @Mark-Simulacrum
2020-07-01 10:17:39 +00:00
Vadim Petrochenkov
a5764de00b expand: Stop using nonterminals for passing tokens to attribute and derive macros 2020-07-01 13:13:21 +03:00
David Hewitt
1a0343217d Amend wording of note 2020-07-01 07:39:56 +01:00
Adam Perry
f07d10db7c Stabilize #[track_caller].
Does not yet make its constness stable, though. Use of
`Location::caller` in const contexts is still gated by
`#![feature(const_caller_location)]`.
2020-06-30 22:22:32 -07:00
Elton Law
b438811029 enable unsafe_op_in_unsafe_fn lint 2020-06-30 23:09:06 -04:00
Elton Law
7616cd9ee9 #[deny(unsafe_op_in_unsafe_fn)] in libstd/fs.rs 2020-06-30 22:51:28 -04:00
bors
d462551a86 Auto merge of #73706 - Aaron1011:fix/proc-macro-foreign-span, r=petrochenkov
Serialize all foreign `SourceFile`s into proc-macro crate metadata

Normally, we encode a `Span` that references a foreign `SourceFile` by
encoding information about the foreign crate. When we decode this
`Span`, we lookup the foreign crate in order to decode the `SourceFile`.

However, this approach does not work for proc-macro crates. When we load
a proc-macro crate, we do not deserialzie any of its dependencies (since
a proc-macro crate can only export proc-macros). This means that we
cannot serialize a reference to an upstream crate, since the associated
metadata will not be available when we try to deserialize it.

This commit modifies foreign span handling so that we treat all foreign
`SourceFile`s as local `SourceFile`s when serializing a proc-macro.
All `SourceFile`s will be stored into the metadata of a proc-macro
crate, allowing us to cotinue to deserialize a proc-macro crate without
needing to load any of its dependencies.

Since the number of foreign `SourceFile`s that we load during a
compilation session may be very large, we only serialize a `SourceFile`
if we have also serialized a `Span` which requires it.
2020-07-01 01:04:31 +00:00
Josh Stone
47425e476b Rewrite a few manual index loops with while-let
There were a few instances of this pattern:

```rust
while index < vec.len() {
    let item = &vec[index];
    // ...
}
```

These can be indexed at once:

```rust
while let Some(item) = vec.get(index) {
    // ...
}
```

Particularly in `ObligationForest::process_obligations`, this mitigates
a codegen regression found with LLVM 11 (#73526).
2020-06-30 17:53:45 -07:00
Wesley Wiser
b4d045719d Use exhaustive match in const_prop.rs 2020-06-30 20:50:47 -04:00
Yuki Okushi
0d26512964
Add missing backtick in ty_error_with_message 2020-07-01 09:33:21 +09:00
Caleb Zulawski
51858dae1e Make #[target_feature] Fn trait error message less confusing 2020-06-30 18:42:55 -04:00
aspen
5f3dbd83af
Don't break on iOS Simulator builds. 2020-06-30 18:18:19 -04:00
aspen
c22bcb0381
Only set the flag in LLVM builds. 2020-06-30 17:56:31 -04:00
aspen
e191358788
Changes required for rustc/cargo to build for iOS targets 2020-06-30 17:21:49 -04:00
Aaron Hill
37a48fa838
Add force-host to test aux file used by proc-macro 2020-06-30 16:10:56 -04:00
LeSeulArtichaut
6a7a6528f6 Bless failing tests 2020-06-30 21:03:34 +02:00
CAD97
aed88e1804 Clarify when rc::data_offset is safe 2020-06-30 15:03:04 -04:00
CAD97
0aecf3c74b Fix invalid pointer deref in Weak::as_ptr 2020-06-30 15:02:21 -04:00
CAD97
fc3dc723da Clarify safety comment for A|Rc::as_ptr 2020-06-30 15:01:48 -04:00
Nathan West
3ab7ae39ec
Bring net/parser.rs up to modern up to date with modern rust patterns
Made the following changes throughout the IP address parser:
- Replaced all uses of `is_some()` / `is_none()` with `?`.
- "Upgraded" loops wherever possible; ie, replace `while` with `for`, etc.
    - Removed all cases of manual index tracking / incrementing.
- Renamed several single-character variables with more expressive names.
- Replaced several manual control flow segments with equivalent adapters (such as `Option::filter`).
- Removed `read_seq_3`; replaced with simple sequences of `?`.
- Parser now reslices its state when consuming, rather than carrying a separate state and index variable.
- `read_digit` now uses `char::to_digit`.
- Removed unnecessary casts back and forth between u8 and u32
- Added comments throughout, especially in the complex IPv6 parsing logic.
- Added comprehensive local unit tests for the parser to validate these changes.
2020-06-30 11:44:14 -07:00
Dylan MacKenzie
eb4d28bce0 Bless mir-opt tests 2020-06-30 11:31:00 -07:00
Bastian Kauschke
0889d79050 remove duplicate tests 2020-06-30 20:19:31 +02:00
Dylan MacKenzie
ca8678b23e Handle inactive enum variants in MaybeUninitializedPlaces 2020-06-30 11:02:30 -07:00
LeSeulArtichaut
a1623ff3b6 Deny unsafe ops in unsafe fns, part 6
And final part!!!
2020-06-30 19:28:51 +02:00
Eric Huss
1b3ef66026 Switch crate_extern_paths to a query, and tweak wording. 2020-06-30 09:10:44 -07:00
bors
16957bd4d3 Auto merge of #73456 - tmiasko:musl-libdir, r=Mark-Simulacrum
bootstrap: Configurable musl libdir

Make it possible to customize the location of musl libdir using
musl-libdir in config.toml, e.g., to use lib64 instead of lib.
2020-06-30 15:41:50 +00:00
LeSeulArtichaut
b3652337a9 Deny unsafe ops in unsafe fns, part 5 2020-06-30 17:37:53 +02:00
Eric Huss
c225e5c5cb Provide more information on duplicate lang item error. 2020-06-30 08:35:11 -07:00
LeSeulArtichaut
c68f478131 Deny unsafe ops in unsafe fns, part 4 2020-06-30 17:06:33 +02:00
LeSeulArtichaut
ac7539c6d1 Deny unsafe ops in unsafe fns, part 3 2020-06-30 17:06:16 +02:00
LeSeulArtichaut
8a515e963c Deny unsafe ops in unsafe fns, part 2 2020-06-30 16:42:58 +02:00
LeSeulArtichaut
8ee1dec77b Deny unsafe ops in unsafe fns, part 1 2020-06-30 16:42:57 +02:00
Guillaume Gomez
f74a7d3ff1 Clean up E0712 explanation 2020-06-30 13:36:33 +02:00
bors
e070765f6e Auto merge of #73888 - RalfJung:miri, r=RalfJung
update Miri

Fixes https://github.com/rust-lang/rust/issues/73773
Cc @rust-lang/miri r? @ghost
2020-06-30 11:35:40 +00:00
Ralf Jung
2d9ed15c07 update Miri 2020-06-30 11:00:51 +02:00
Tshepang Lekhonkhobe
f3645ca6ca remove rustdoc warnings 2020-06-30 10:58:23 +02:00
Bastian Kauschke
69e49908f9 update equal_up_to_regions 2020-06-30 09:20:08 +02:00
Bastian Kauschke
f632bd1a50 remove unused TypeError::ProjectionBoundsLength 2020-06-30 09:13:56 +02:00
Bastian Kauschke
71b45b97d3 change skip_binder to use T by value 2020-06-30 09:13:56 +02:00
Bastian Kauschke
1d7ba5fcb4 stop taking references in Relate 2020-06-30 09:13:56 +02:00
Pietro Albini
844dc31494
ci: fix wasm32 broken due to a NodeJS version bump
Emscripten's SDK recently bumped the version of NodeJS they shipped, but
our Dockerfile for the wasm32 builder hardcoded the version number. This
will cause consistent CI failures once the currently cached image is
rebuilt (either due to a change or due to the cache expiring).

This commit fixes the problem by finding the latest version of NodeJS in
the Emscripten SDK and symlinking it to a "latest" directory, which is
then added to the PATH.
2020-06-30 09:13:15 +02:00
bors
665190b346 Auto merge of #73658 - dylanmckay:avr-update-llvm-submodule-with-picks, r=cuviper
[AVR] Update the rust-lang/llvm-project submodule to include AVR fixes recently merged

This PR updates rustc's LLVM submodule to include new AVR-specific
fixes recently merged on the Rust LLVM 'rustc/10.0-2020-05-05' branch.

All of these cherry-picked commits exist in upstream LLVM and were
cherry-picked into Rust's LLVM fork in commit 6c040dd86ed.

Relates to https://github.com/rust-lang/llvm-project/pull/66

```
  |- 6c040dd86ed Merge pull request #66 from dylanmckay/avr-pick-upstream-llvm-fixes
    |- 12dfdd3aed7 [AVR] Rewrite the function calling convention.
    |- 118ac53f12b [AVR] Don't adjust for instruction size
    |- bc27c282e13 [AVR] Fix miscompilation of zext + add
    |- cfbe205a7e8 [AVR] Remove faulty stack pushing behavior
    |- 143e1469e96 [AVR] Fix stack size in functions with a frame pointer
    |- 6b2445d841e [LLVM][AVR] Support for R_AVR_6 fixup
    |- 93ee4da19cf [AVR]  Fix I/O instructions on XMEGA
    |- 962c2415ffb [AVR] Do not place functions in .progmem.data
    |- 65b8b170aef [AVR] Do not use divmod calls for bigger integers
    |- 93a3b595d1c [AVR] Generalize the previous interrupt bugfix to signal
    |- handlers too
    |- cc4286349b4 [AVR] Respect the 'interrupt' function attribute
    |- 954d0a92205 [AVR] Fix reads of uninitialized variables from constructor of AVRSubtarget
    |- 1c0ddae73c9 [AVR] Fix read of uninitialized variable AVRSubtarget:::ELFArch
    |- 0ed0823fe60 [AVR] Fix incorrect register state for LDRdPtr
    |- 96075fc433d [AVR] Don't adjust addresses by 2 for absolute values
    |- 6dfc55ba53b [AVR] Use correct register class for mul instructions
```

These changes include both correctness fixes and LLVM assertion error
fixes. Once all of these commits have been cherry-picked, all of the
LLVM plumbing for rust-lang/master to compile the AVR blink program will
be in place. Once this commit is merged, only PR rust-lang/rust#73270 will
be blocking successful compilation and emission of the AVR LED blink program.
2020-06-30 06:12:21 +00:00
Eric Huss
9154863647 Compile rustdoc less often. 2020-06-29 22:35:02 -07:00
Nicholas Nethercote
3f79d2f33e Avoid unwrap_or_else in RawVec::allocate_in.
This reduces the amount of LLVM IR generated by up to 1 or 2%.
2020-06-30 14:38:57 +10:00
Aaron Hill
a7c408d6ac
Normalize symbol ids to 0 in test stdout
The number of symbols we allocate (even early on) seems to be platform
dependent. We only care about hygiene for the purposes of this test,
so just set all of the symbol ids to zero
2020-06-29 22:04:10 -04:00