Rollup merge of #71145 - pfmooney:illumos-triple, r=nagisa
Add illumos triple
This fixes rust-lang/rust#55553 and adds support for `illumos` as a `target_os` on `x86_64`. In addition to the compile spec and libstd additions, several library dependencies have been bumped in order to permit working builds of cargo and rustup for the new target.
Work originally started by @jasonbking, with subsequent additions by @pfmooney and @jclulow.
Rollup merge of #71116 - marmeladema:dummy-hir-id-removal, r=eddyb
Entirely remove `DUMMY_HIR_ID`
Some helpers functions have been introduced to deal with (buggy) cases
where either a `NodeId` or a `DefId` do not have a corresponding `HirId`.
Those cases are tracked in issue #71104.
Rollup merge of #71030 - petrochenkov:linkorder2, r=nagisa
rustc_target: Refactor target specifications related to Windows and UEFI
- LLD support is improved.
- Code is cleaned up.
- Target specs are organized in a more hierarchical way.
- Possible issues in UWP and UEFI platforms are identified (see FIXMEs).
Patrick Mooney [Wed, 15 Apr 2020 00:44:06 +0000 (00:44 +0000)]
Use fcntl() to set nonblock for solarish sockets
The ioctl(FIONBIO) method of setting a file descriptor to be
non-blocking does not notify the underlying resource in the same way
that fcntl(F_SETFL, O_NONBLOCK) does on illumos and Solaris.
Auto merge of #71151 - Dylan-DPC:rollup-6rt4h7b, r=Dylan-DPC
Rollup of 8 pull requests
Successful merges:
- #70657 (Allow `try`-blocks in places where an open delim is expected)
- #70947 (tighten CTFE safety net for accesses to globals)
- #70949 (simplify `vec!` macro)
- #71002 (fix target & runtool args order)
- #71082 (ptr: introduce len() method on raw slices)
- #71128 (Remove unused single_step flag)
- #71133 (Tighten time complexity on the doc of sort_by_key)
- #71135 (Update books)
Rollup merge of #71135 - ehuss:update-books, r=ehuss
Update books
## reference
13 commits in 89dd146154474559536d5d4049a03831c501deea..3ce94caed4cf967106c51ae86be5e098f7875f11
2020-03-31 09:42:10 -0700 to 2020-04-11 17:00:27 +0200
- UB definition: mention size_of_val for determining a reference's span (rust-lang-nursery/reference#793)
- Emphasize that `#[inline]` in all shapes is a hint. (rust-lang-nursery/reference#791)
- Added missing comma to Unions reference (rust-lang-nursery/reference#790)
- Attributes are now allowed on `if` and `if let` (rust-lang-nursery/reference#783)
- `enum`s can now be `#[repr(transparent)]` (rust-lang-nursery/reference#741)
- Undocument `use` paths. (rust-lang-nursery/reference#665)
- Clarify pub(restricted) a bit (rust-lang-nursery/reference#481)
- Add information about || and && to grammar describing `while let`. (rust-lang-nursery/reference#772)
- Document the `automatically_derived` attribute. (rust-lang-nursery/reference#555)
- Fix unstable check. (rust-lang-nursery/reference#743)
- Use common script for link checking. (rust-lang-nursery/reference#765)
- Add a basic style guide. (rust-lang-nursery/reference#787)
- Size fo empty structs in C is zero byte. (rust-lang-nursery/reference#782)
## book
14 commits in c8841f2841a2d26124319ddadd1b6a245f9a1856..f5db319e0b19c22964398d56bc63103d669e1bba
2020-03-22 09:07:01 -0500 to 2020-04-13 08:06:03 -0500
- Update ch01-01-installation.md to require TLS 1.2 (rust-lang/book#2301)
- traits as parameters: Use references instead of moving the values (rust-lang/book#2239)
- Fix a broken link
- Update go docs link (rust-lang/book#2285)
- Add the farsi translation repo link (rust-lang/book#2283)
- Add the missing word to the sentence (ch06-2) (rust-lang/book#2278)
- Fixes hardcoded output (rust-lang/book#2276)
- Use rust-lang/rust linkchecker on CI. (rust-lang/book#2272)
- Add union to the list of keywords (rust-lang/book#2271)
- Clarify the wording (rust-lang/book#2256)
- Improve sentence flow (rust-lang/book#2255)
- Add missing apostrophe (rust-lang/book#2247)
- Update cargo profiles link. (rust-lang/book#2245)
- Add note about chapter 18 in chapter 6 (rust-lang/book#2238)
Rollup merge of #71128 - Mark-Simulacrum:clean-expansion, r=petrochenkov
Remove unused single_step flag
This appears to have never been used ever since its introduction in 61c7569d4 --
the plugin discussed on the PR introducing that commit, 34811, never
materialized.
It's also simple to re-add in the current scheme, but given that macro expansion
is already quite complicated, additional useless state seems good to remove
while we're not using it.
Rollup merge of #71082 - NeoRaider:ptr_slice_len, r=oli-obk,SimonSapin
ptr: introduce len() method on raw slices
It is already possible to extract the pointer part of a raw slice by a
simple cast, but retrieving the length is not possible without relying
on the representation of the raw slice when it is not valid to convert
the raw slice into a slice reference (i.e. the pointer is null or
unaligned).
~Introduce a new function ptr::slice_len() to add this missing feature.~
Introduce a len() method on raw slices to add this missing feature.
Rollup merge of #71002 - Freax13:fix-target, r=ollie27
fix target & runtool args order
- `TargetTripple::to_string` converts "path triples" to `<target>-<hash>`, but in this case we need the path. Afaict there is no method to get the real triple other than manually matching
- the order of the runtools arguments is inconsistent with the way tests usually pass arguments ie using `runner` key in `.cargo/config`
Rollup merge of #70947 - RalfJung:ctfe-no-read-mut-global, r=oli-obk
tighten CTFE safety net for accesses to globals
Previously, we only rejected reading from all statics. Now we also reject reading from any mutable global. Mutable globals are the true culprit here as their run-time value might be different from their compile-time values. Statics are just the approximation we use for that so far.
Also refactor the code a bit to make it clearer what is being checked and allowed.
Auto merge of #70452 - eddyb:repeat-expr-correct-generics-parent, r=nikomatsakis
typeck: always expose repeat count `AnonConst`s' parent in `generics_of`.
This should reduce some of the confusion around #43408, although, if you look at the changed test outputs (for the last commit), they all hit #68436, so nothing new will start compiling.
We can let counts of "repeat expressions" (`N` in `[x; N]`) always have the correct generics parenting, because they're always in a body, so nothing in the `where` clauses or `impl` trait/type of the parent can use it, and therefore no query cycles can occur.
<hr/>
Other potential candidates we might want to apply the same approach to, are:
* ~~(easy) `enum` discriminants (see also #70453)~~ opened #70825
* (trickier) array *type* (not *expression*) lengths nested in:
* bodies
* types of (associated or not) `const`/`static`
* RHS of `type` aliases and associated `type`s
* `fn` signatures
We should've done so from the start, the only reason we haven't is because I was squeamish about blacklisting some of the cases, but if we whitelist instead we should be fine.
Also, lazy normalization is taking forever :disappointed:.
<hr/>
There's also 5 other commits here:
* "typeck: track any errors injected during writeback and taint tables appropriately." - fixes #66706, as the next commit would otherwise trigger an ICE again
* "typeck: workaround WF hole in `to_const`." - its purpose is to emulate most of #70107's direct effect, at least in the case of repeat expressions, where the count always goes through `to_const`
* this is the reason no new code can really compile, as the WF checks require #68436 to bypass
* however, this has more test changes than I hoped, so it should be reviewed separately, and maybe even landed separately (as #70107 might take a while, as it's blocked on a few of my PRs)
* "ty: erase lifetimes early in `ty::Const::eval`." - first attempt at fixing #70773
* still useful, I believe the new approach is less likely to cause issues long-term
* I could take this out or move it into another PR if desired or someone else could take over (cc @skinny121)
* "traits/query/normalize: add some `debug!` logging for the result." - debugging aid for #70773
* "borrow_check/type_check: normalize `Aggregate` and `Call` operands." - actually fixes #70773
r? @nikomatsakis cc @pnkfelix @varkor @yodaldevoid @oli-obk @estebank
Auto merge of #71138 - ehuss:update-cargo, r=ehuss
Update cargo
12 commits in 390e8f245ef2cd7ac698b8a76abf029f9abcab0d..74e3a7d5b756d7c0e94399fc29fcd154e792c22a
2020-04-07 17:46:45 +0000 to 2020-04-13 20:41:52 +0000
- Update dependencies to support illumos target (rust-lang/cargo#8093)
- Whitelist another known spurious curl error (rust-lang/cargo#8102)
- Fix nightly test matching rustc "warning" output. (rust-lang/cargo#8098)
- Update default for codegen-units. (rust-lang/cargo#8096)
- Fix freshness when linking is interrupted. (rust-lang/cargo#8087)
- Add `cargo tree` command. (rust-lang/cargo#8062)
- Add "build-finished" JSON message. (rust-lang/cargo#8069)
- Extend -Zpackage-features with more capabilities. (rust-lang/cargo#8074)
- Disallow invalid dependency names through crate renaming (rust-lang/cargo#8090)
- Use the same filename hash for pre-release channels. (rust-lang/cargo#8073)
- Index the commands section (rust-lang/cargo#8081)
- Upgrade to mdBook v0.3.7 (rust-lang/cargo#8083)
It is already possible to extract the pointer part of a raw slice by a
simple cast, but retrieving the length is not possible without relying
on the representation of the raw slice when it is not valid to convert
the raw slice into a slice reference (i.e. the pointer is null or
unaligned).
Introduce a len() method on raw slices to add this missing feature.
Mark Rousskov [Mon, 13 Apr 2020 02:01:15 +0000 (22:01 -0400)]
Remove unused single_step flag
This appears to have never been used ever since its introduction in 61c7569d4 --
the plugin discussed on the PR introducing that commit, 34811, never
materialized.
It's also simple to readd in the current scheme, but given that macro expansion
is already quite complicated, additional useless state seems good to remove
while we're not using it.
Auto merge of #71125 - Dylan-DPC:rollup-3b8prjh, r=Dylan-DPC
Rollup of 5 pull requests
Successful merges:
- #71112 (Remove the last remnant of unsigned Neg)
- #71120 (Clean up E0517 explanation)
- #71121 (Fix broken link in documentation for String::from_utf8)
- #71122 (update `FnCtxt::lookup_method` docs)
- #71124 (Add missing comma)
Rollup merge of #71112 - cuviper:unsigned-Neg, r=Mark-Simulacrum
Remove the last remnant of unsigned Neg
It's been gone since #23945, before Rust 1.0. The former wrapping
semantics have also been available as inherent methods for a long time
now. There's no reason to keep this unused macro around.
Do not use `DUMMY_HIR_ID` as placeholder value in node_id_to_hir_id table
Some helpers functions have been introduced to deal with (buggy) cases
where either a `NodeId` or a `DefId` do not have a corresponding `HirId`.
Those cases are tracked in issue #71104.
Auto merge of #70679 - tmandry:issue-68112, r=nikomatsakis
Improve async-await/generator obligation errors in some cases
Fixes #68112.
This change is best read one commit at a time (I add a test at the beginning and update it in each change after).
The `test2` function is a case I found while writing the test that we don't handle with this code yet. I don't attempt to fix it in this PR, but it's a good candidate for future work.
Josh Stone [Tue, 14 Apr 2020 01:37:06 +0000 (18:37 -0700)]
Remove the last remnant of unsigned Neg
It's been gone since #23945, before Rust 1.0. The former wrapping
semantics have also been available as inherent methods for a long time
now. There's no reason to keep this unused macro around.
Auto merge of #71111 - Dylan-DPC:rollup-esp17qn, r=Dylan-DPC
Rollup of 4 pull requests
Successful merges:
- #70654 (Explain how to work with subtree)
- #71092 (Remove some usage of `DUMMY_HIR_ID`)
- #71103 (Add test case for type aliasing `impl Sized`)
- #71109 (allow const generics in const fn)
Rollup merge of #71051 - ryr3:fix_try_into, r=estebank
Suggest .into() over try_into() when it would work
It would be better to suggest x.into() instead, which is shorter, cannot fail, and doesn't require importing a trait.
Tests have been added and made up to date.
Fixes #70851
Auto merge of #70989 - eddyb:mir-opt-32-pr-ci, r=Mark-Simulacrum
ci: run mir-opt tests on PR CI also as 32-bit (for `EMIT_MIR_FOR_EACH_BIT_WIDTH`).
Background: #69916 and [`src/test/mir-opt/README.md`](https://github.com/rust-lang/rust/blob/master/src/test/mir-opt/README.md):
> By default 32 bit and 64 bit targets use the same dump files, which can be problematic in the
presence of pointers in constants or other bit width dependent things. In that case you can add
>
> ```
> // EMIT_MIR_FOR_EACH_BIT_WIDTH
> ```
>
> to your test, causing separate files to be generated for 32bit and 64bit systems.
However, if you change the output of such a test (intentionally or not), or if you add a test and it varies between 32-bit and 64-bit platforms, you have to run this command (for a x64 linux host):
`./x.py test --stage 1 --target x86_64-unknown-linux-gnu --target i686-unknown-linux-gnu --bless src/test/mir-opt`
Otherwise, bors trying to merge the PR will fail, since we test 32-bit targets there.
But we don't on PR CI, which means there's no way the PR author would know (unless they were burnt by this already and know what to look for).
This PR resolves that by running `mir-opt` tests for ~~`i686-unknown-linux-gnu`~~, on PR CI.
**EDIT**: switched to `armv5te-unknown-linux-gnueabi` to work around LLVM 7 crashes (see https://github.com/rust-lang/compiler-builtins/pull/311#issuecomment-612270089), found during testing.