Commit Graph

103982 Commits

Author SHA1 Message Date
Nathan Ringo
dfc04fc7a7
Fixes typo
`legacy_disrectory_ownership` vs `legacy_directory_ownership`
2019-12-07 14:09:43 -06:00
Bartłomiej Kuras
d97379a96e Added ExactSizeIterator bound to return types
in librustc in several places
2019-12-07 20:00:09 +01:00
Konrad Borowski
61d9c00146 Explicitly refer to operator methods in Pin impls 2019-12-07 16:23:43 +01:00
bors
5c5c8eb864 Auto merge of #66927 - RalfJung:engines-dont-panic, r=oli-obk
Miri core engine: use throw_ub instead of throw_panic

See https://github.com/rust-lang/rust/issues/66902 for context: panicking is not really an "interpreter error", but just part of a normal Rust execution. This is a first step towards removing the `InterpError::Panic` variant: the core Miri engine does not use it any more.

ConstProp and ConstEval still use it, though. This will be addressed in future PRs.

From what I can tell, all the error messages this removes are actually duplicates.

r? @oli-obk @wesleywiser
2019-12-07 14:46:30 +00:00
Ralf Jung
ab73d10a6e fix warnings with cfg(miri) 2019-12-07 12:47:18 +01:00
Ralf Jung
ca2ffe3a80 liballoc: ignore tests in Miri instead of removing them entirely 2019-12-07 12:42:19 +01:00
Ralf Jung
7ba1232b5e libcore: ignore tests in Miri instead of removing them entirely 2019-12-07 12:38:13 +01:00
Mazdak Farrokhzad
1b2a422f0a Simplify check_decl_no_pat. 2019-12-07 06:13:08 +01:00
Mazdak Farrokhzad
c8850c7144 Make ForeignItem an alias of Item. 2019-12-07 06:05:25 +01:00
Mazdak Farrokhzad
e9840d94b9 Print the visibility in print_variant. 2019-12-07 05:59:41 +01:00
David Tolnay
c737169fe5
Format libcore with rustfmt (including tests and benches) 2019-12-06 20:20:51 -08:00
David Tolnay
24d7f72c62
Suppress libcore/ptr/mod.rs filelength lint 2019-12-06 20:16:12 -08:00
David Tolnay
3f1e391369
Exclude manually arranged ascii tables from rustfmt 2019-12-06 20:16:12 -08:00
bors
0a953cd9aa Auto merge of #66882 - mati865:znver1_fix, r=nikomatsakis
Update LLVM submodule

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

Credit for finding the cause goes to `eddyb`.
2019-12-07 02:46:10 +00:00
Adam Perry
15d1f7cffd Add additional layer of #[track_caller] to test, avoid const prop. 2019-12-06 18:37:54 -08:00
Adam Perry
1c2483eb6f Address review feedback. 2019-12-06 18:37:54 -08:00
Adam Perry
99165ce1f7 Caller location is propagated via immediates rather than memory. 2019-12-06 18:37:54 -08:00
Adam Perry
7afbbf7e8a Always call const fns with #[track_caller].
The caller location is passed as an implicit argument, so we must consider it when checking the sizedness of arguments.
2019-12-06 18:37:54 -08:00
Tyler Mandry
5f4c2ca1aa Bump compiler-builtins 2019-12-06 18:33:07 -08:00
bors
41601a8c95 Auto merge of #67104 - Centril:rollup-07vahh9, r=Centril
Rollup of 10 pull requests

Successful merges:

 - #66606 (Add feature gate for mut refs in const fn)
 - #66841 (Add `{f32,f64}::approx_unchecked_to<Int>` unsafe methods)
 - #67009 (Emit coercion suggestions in more places)
 - #67052 (Ditch `parse_in_attr`)
 - #67071 (Do not ICE on closure typeck)
 - #67078 (accept union inside enum if not followed by identifier)
 - #67090 (Change "either" to "any" in Layout::from_size_align's docs)
 - #67092 (Fix comment typos in src/libcore/alloc.rs)
 - #67094 (get rid of __ in field names)
 - #67102 (Add note to src/ci/docker/README.md about multiple docker images)

Failed merges:

 - #67101 (use `#[allow(unused_attributes)]` to paper over incr.comp problem)

r? @ghost
2019-12-06 23:35:00 +00:00
Mazdak Farrokhzad
dbc9f306b6
Rollup merge of #67102 - Aaron1011:patch-3, r=Mark-Simulacrum
Add note to src/ci/docker/README.md about multiple docker images

I spent a while debugging a strage linker error about an outdated `glibc` version, only to discover that it was caused by a stale `obj` directory. It wasn't obviously to be that using the same obj dir with multiple Docker images (for the same target triple) could be a problem.

This commit adds a note to the README, which should hopefully be helpful to anyone else who runs into this issue.
2019-12-06 23:27:08 +01:00
Mazdak Farrokhzad
29847a4d44
Rollup merge of #67094 - RalfJung:fields, r=Mark-Simulacrum
get rid of __ in field names

This old work-around should not be needed any more.
2019-12-06 23:27:06 +01:00
Mazdak Farrokhzad
fd78173484
Rollup merge of #67092 - kraai:us-to-is, r=jonas-schievink
Fix comment typos in src/libcore/alloc.rs
2019-12-06 23:27:05 +01:00
Mazdak Farrokhzad
573e537db5
Rollup merge of #67090 - kraai:either-to-any, r=jonas-schievink
Change "either" to "any" in Layout::from_size_align's docs
2019-12-06 23:27:03 +01:00
Mazdak Farrokhzad
18a79e0e16
Rollup merge of #67078 - kamleshbhalui:master, r=Centril
accept union inside enum if not followed by identifier

Fixes #66943
2019-12-06 23:27:02 +01:00
Mazdak Farrokhzad
459398dc40
Rollup merge of #67071 - estebank:issue-66868, r=davidtwco
Do not ICE on closure typeck

Tackle #66868.

r? @davidtwco
2019-12-06 23:27:00 +01:00
Mazdak Farrokhzad
941c4cd56b
Rollup merge of #67052 - Centril:config-1, r=petrochenkov
Ditch `parse_in_attr`

Fixes #66940

r? @petrochenkov
2019-12-06 23:26:59 +01:00
Mazdak Farrokhzad
99fee7896b
Rollup merge of #67009 - Aaron1011:fix/coerce-suggestion, r=Centril
Emit coercion suggestions in more places

Fixes #66910

We have several different kinds of suggestions we can try to make when
type coercion fails. However, we were previously only emitting these
suggestions from `demand_coerce_diag`. This resulted in the compiler
failing to emit applicable suggestions in several different cases, such
as when the implicit return value of a function had the wrong type.

This commit adds a new `emit_coerce_suggestions` method, which tries to
emit a number of related suggestions. This method is called from both
`demand_coerce_diag` and `CoerceMany::coerce_inner`, which covers a much
wider range of cases than before.

We now suggest using `.await` in more cases where it is applicable,
among other improvements.

I'm not happy about disabling the `issue-59756`, but from what I can tell, the suggestion infrastructure in rustc lacks any way of indicating mutually exclusive suggestions (and compiletest lacks a way to only apply a subset of available suggestions).
2019-12-06 23:26:57 +01:00
Mazdak Farrokhzad
62528d86b0
Rollup merge of #66841 - SimonSapin:float_round_unchecked_to, r=rkruppe
Add `{f32,f64}::approx_unchecked_to<Int>` unsafe methods

As discussed in https://github.com/rust-lang/rust/issues/10184

Currently, casting a floating point number to an integer with `as` is Undefined Behavior if the value is out of range. `-Z saturating-float-casts` fixes this soundness hole by making `as` “saturate” to the maximum or minimum value of the integer type (or zero for `NaN`), but has measurable negative performance impact in some benchmarks. There is some consensus in that thread for enabling saturation by default anyway, but provide an `unsafe fn` alternative for users who know through some other mean that their values are in range.

<del>The “fit” wording is copied from https://llvm.org/docs/LangRef.html#fptoui-to-instruction, but I’m not certain what it means exactly. Presumably this is after rounding towards zero, and the doc-test with `i8::MIN` seems to confirm this.</del> Clang presumably uses those LLVM intrinsics to implement C and C++ casts, whose respective standard specify that the value *after truncating to keep its integral part* must be representable in the target type.
2019-12-06 23:26:55 +01:00
Mazdak Farrokhzad
2bd35c065c
Rollup merge of #66606 - christianpoveda:mut-refs-in-const-fn, r=oli-obk
Add feature gate for mut refs in const fn

r? @oli-obk
2019-12-06 23:26:54 +01:00
Aaron Hill
3c14f0eaa7
Add note to src/ci/docker/README.md about multiple docker images
I spent a while debugging a strage linker error about an outdated `glibc` version, only to discover that it was caused by a stale `obj` directory. It wasn't obviously to be that using the same obj dir with multiple Docker images (for the same target triple) could be a problem.

This commit adds a note to the README, which should hopefully be helpful to anyone else who runs into this issue.
2019-12-06 16:38:57 -05:00
Mazdak Farrokhzad
99191c2e71 parse_meta: ditch parse_in_attr 2019-12-06 21:17:18 +01:00
Mazdak Farrokhzad
cbc9f68312 derive: avoid parse_in_attr 2019-12-06 20:37:59 +01:00
Mazdak Farrokhzad
bbcda98d41 cfg_attr: avoid .outer_tokens 2019-12-06 20:37:59 +01:00
bors
ae1b871cca Auto merge of #65195 - varkor:to_option, r=Centril
Rename `bool::then_*` to `bool::to_option_*` and use where appropriate

Name change following https://github.com/rust-lang/rfcs/pull/2757. Also try it out throughout the compiler in places I think makes the code more readable.
2019-12-06 19:14:51 +00:00
Esteban Küber
7ed9066766 review comments 2019-12-06 10:06:10 -08:00
Esteban Küber
0f306a7db4 Do not ICE on async fn with non-Copy infered type arg
Fix #66958.
2019-12-06 10:06:10 -08:00
Mark Mansi
03222c0371 Update rustc-guide 2019-12-06 11:26:18 -06:00
Ömer Sinan Ağacan
2404a067ee const-prop: Restrict scalar pair propagation
We now only propagate a scalar pair if the Rvalue is a tuple with two
scalars. This for example avoids propagating a (u8, u8) value when
Rvalue has type `((), u8, u8)` (see the regression test). While this is
a correct thing to do, implementation is tricky and will be done later.

Fixes #66971
Fixes #66339
Fixes #67019
2019-12-06 19:36:34 +03:00
Ralf Jung
49697ae38b get rid of __ in field names 2019-12-06 17:28:04 +01:00
Matthew Kraai
292b998c64 Change "wth" to "with" in Layout::padding_needed_for comment 2019-12-06 07:59:13 -08:00
Matthew Kraai
a3c85770fb Change "us" to "is" in Layout::for_value comment 2019-12-06 07:35:30 -08:00
bors
9630dbbc3c Auto merge of #67091 - JohnTitor:rollup-kitphze, r=JohnTitor
Rollup of 11 pull requests

Successful merges:

 - #66846 (Make try_mark_previous_green aware of cycles.)
 - #66959 (Remove potential cfgs duplicates)
 - #66988 (Fix angle bracket formatting when dumping MIR debug vars)
 - #66998 (Modified the testcases for VxWorks)
 - #67008 (rustdoc: Add test for fixed issue)
 - #67023 (SGX: Fix target linker used by bootstrap)
 - #67033 (Migrate to LLVM{Get,Set}ValueName2)
 - #67049 (Simplify {IoSlice, IoSliceMut}::advance examples and tests)
 - #67054 (codegen "unreachable" for invalid SetDiscriminant)
 - #67081 (Fix Query type docs)
 - #67085 (Remove boxed closures in address parser.)

Failed merges:

r? @ghost
2019-12-06 15:11:35 +00:00
Yuki Okushi
931be6c3bc
Rollup merge of #67085 - reitermarkus:addr-parser, r=Mark-Simulacrum
Remove boxed closures in address parser.

Simplify address parser by removing unnecessary boxed closures.

Also relevant for https://github.com/rust-lang/rfcs/pull/2832.
2019-12-07 00:10:08 +09:00
Yuki Okushi
cc7c45fdc6
Rollup merge of #67081 - osa1:fix_query_type_docs, r=Dylan-DPC
Fix Query type docs

`give` no longer exists, `compute` is used to generate query results now.
2019-12-07 00:10:07 +09:00
Yuki Okushi
c85284ec58
Rollup merge of #67054 - RalfJung:set-discriminant-unreachable, r=oli-obk
codegen "unreachable" for invalid SetDiscriminant

Follow-up from https://github.com/rust-lang/rust/pull/66960. I also realized I don't understand our policy for using `abort` vs `unreachable`. AFAIK `abort` is safe to call and just aborts the process, while `unreachable` is UB. But sometimes we use both, like here

d825e35ee8/src/librustc_codegen_ssa/mir/block.rs (L827-L828)

and here

d825e35ee8/src/librustc_codegen_ssa/mir/block.rs (L264-L265)

The second case is even more confusing because that looks like an unreachable `return` to me, so why would we codegen a safe abort there?

r? @eddyb Cc @oli-obk
2019-12-07 00:10:05 +09:00
Yuki Okushi
d1397db3f3
Rollup merge of #67049 - tmiasko:io-slice-advance, r=rkruppe
Simplify {IoSlice, IoSliceMut}::advance examples and tests

Remove unnecessary calls to `std::mem::replace` and make variables immutable.
2019-12-07 00:10:04 +09:00
Yuki Okushi
0b471bffc3
Rollup merge of #67033 - cuviper:ValueName2, r=rkruppe
Migrate to LLVM{Get,Set}ValueName2

The deprecated `LLVM{Get,Set}ValueName` only work with NUL-terminated
strings, but the `2` variants use explicit lengths, which fits better
with Rust strings and slices. We now use these in new helper functions
`llvm::{get,set}_value_name` that convert to/from `&[u8]`.

Closes #64223.
r? @rkruppe
2019-12-07 00:10:02 +09:00
Yuki Okushi
fd4cec0303
Rollup merge of #67023 - jethrogb:jb/bootstrap-target-linker, r=alexcrichton
SGX: Fix target linker used by bootstrap

Bootstrap, for some reason, overrides the target linker. This is not correct for x86_64-fortanix-unknown-sgx. Add such targets to the list of exceptions.

r? @alexcrichton
2019-12-07 00:10:00 +09:00
Yuki Okushi
0df1609215
Rollup merge of #67008 - ollie27:rustdoc_issue_61732, r=Centril
rustdoc: Add test for fixed issue

#61732 was almost certainly fixed by #63400.

Closes #61732
2019-12-07 00:09:59 +09:00