Commit Graph

124111 Commits

Author SHA1 Message Date
Mara Bos
5d4147a965 Stabilize TAU constant.
Closes #66770.
2020-07-20 14:01:25 +02:00
Aleksey Kladov
ace3db00c6 ⬆️ rust-analyzer 2020-07-20 13:21:16 +02:00
Jethro Beekman
c8cdcc8e51 Fix duplicate maybe_uninit_extra attribute 2020-07-20 12:44:37 +02:00
David Wood
47756bb0fa
shim: adjust valid shim asserts
This commit makes valid shim asserts more specific - checking for the
specific types that are valid for a given type of shim - and removes
asserts for types which require substitutions.

Signed-off-by: David Wood <david@davidtw.co>
2020-07-20 11:23:32 +01:00
David Wood
19e849516e
debuginfo: add type metadata for params
This commit adds type metadata for generic parameters (that arise from
polymorphization). Generic parameter metadata is considered zero-sized
and named after the generic parameter.

Signed-off-by: David Wood <david@davidtw.co>
2020-07-20 11:23:31 +01:00
David Wood
5bf2c7d4fe
debuginfo: no type metadata if substs reqd
This commit skips generating debuginfo type metadata if substitutions
are required by the type. This avoids ICEs that result from layouts
of types with substitutions being computed.

Signed-off-by: David Wood <david@davidtw.co>
2020-07-20 11:23:29 +01:00
David Wood
842fa0ce3e
ty: add doc comments to Generics methods
This commit adds doc comments to the `param_at`, `region_param` and
`const_param` methods on the `Generics` struct.

Signed-off-by: David Wood <david@davidtw.co>
2020-07-20 11:23:27 +01:00
David Wood
b7c8b96e66 trait_sel: only test predicates w/ no substs
This commit modifies the `substitute_normalize_and_test_predicates`
query, renaming it to `impossible_predicates` and only checking
predicates which do not require substs. By making this change,
polymorphization doesn't have to explicitly support vtables.

Signed-off-by: David Wood <david@davidtw.co>
2020-07-20 11:23:26 +01:00
David Wood
ce7c48fa15
trait_sel: only test predicates w/ no substs
This commit modifies the `substitute_normalize_and_test_predicates`
query, renaming it to `impossible_predicates` and only checking
predicates which do not require substs. By making this change,
polymorphization doesn't have to explicitly support vtables.

Signed-off-by: David Wood <david@davidtw.co>
2020-07-20 11:23:26 +01:00
David Wood
c6ed442f40
ty: STILL_FURTHER_SPECIALIZABLE w/out prnt subst
This commit modifies the `STILL_FURTHER_SPECIALIZABLE` flag so that the
flag isn't set by the parent substs of closures or generators.

Signed-off-by: David Wood <david@davidtw.co>
2020-07-20 11:23:25 +01:00
David Wood
576deef691
mir: rename should_monomorphize_locally
This commit renames `should_monomorphize_locally` to
`should_codegen_locally` which better describes what the function
determines once polymorphization is added.

Signed-off-by: David Wood <david@davidtw.co>
2020-07-20 11:23:24 +01:00
David Wood
996bc9abb5
mir: avoid double substitution
This commit avoids a natural, free-range double substitution error by
monomorphizing the projection element before getting the type.

Signed-off-by: David Wood <david@davidtw.co>
2020-07-20 11:23:22 +01:00
bors
71384101ea Auto merge of #74010 - pierwill:pierwill-o-notation, r=GuillaumeGomez
Use italics for O notation

In documentation, I think it makes sense to italicize O notation (*O(n)*) as opposed to using back-ticks (`O(n)`). Visually, back-ticks focus the reader on the literal characters being used, making them ideal for representing code. Using italics, as far I can tell, more closely follows typographic conventions in mathematics and computer science.

Just a suggestion, of course! 😇
2020-07-20 10:19:58 +00:00
David Wood
ceac273e60
wf: check foreign fn decls for well-formedness
This commit extends current well-formedness checking to apply to foreign
function declarations, re-using the existing machinery for regular
functions. In doing this, later parts of the compiler (such as the
`improper_ctypes` lint) can rely on being operations not failing as a
result of invalid code which would normally be caught earlier.

Signed-off-by: David Wood <david@davidtw.co>
2020-07-20 10:28:12 +01:00
bors
05630b06fd Auto merge of #74540 - alexcrichton:std-no-backtrace, r=Mark-Simulacrum
std: Fix compilation without backtrace feature

This should hopefully handle #74484 but in any case fixes compilation of
the standard library without the `backtrace` feature. The need for this
feature is somewhat unclear now because the `backtrace` crate should
always compile (no more C code!) but we can handle that later if
necessary.
2020-07-20 06:09:42 +00:00
pierwill
76b8420168 Use italics for O notation
Co-authored-by: Guillaume Gomez <guillaume1.gomez@gmail.com>
2020-07-19 21:43:39 -07:00
bors
891e6fee57 Auto merge of #74543 - Manishearth:rollup-m5w6hyg, r=Manishearth
Rollup of 9 pull requests

Successful merges:

 - #73618 (Documentation for the false keyword)
 - #74486 (Improve Read::read_exact documentation)
 - #74514 (Do not clobber RUSTDOCFLAGS)
 - #74516 (do not try fetching the ancestors of errored trait impls)
 - #74520 (include backtrace folder in rust-src component)
 - #74523 (Improve documentation for `core::fmt` internals)
 - #74527 (Add myself to toolstate change notifications for rustfmt)
 - #74534 (Only skip impls of foreign unstable traits)
 - #74536 (fix documentation surrounding the `in` and `for` keywords)

Failed merges:

r? @ghost
2020-07-20 02:43:31 +00:00
Manish Goregaokar
27947b69f9
Rollup merge of #74536 - Nicholas-Baron:master, r=joshtriplett
fix documentation surrounding the `in` and `for` keywords

Addresses #74529

The `in` keyword incorrectly referenced the `Iterator` trait. This reference was changed to `IntoIterator` without changing the underlying link.

Additionally, the `IntoIterator` trait was referenced towards the end of the documentation for `for`. An additional reference was added earlier and broadened the existing documentation from any iterator to anything that can be turned into an iterator.
2020-07-19 19:12:45 -07:00
Manish Goregaokar
e8fc993409
Rollup merge of #74534 - Mark-Simulacrum:rustdoc-stability, r=Manishearth
Only skip impls of foreign unstable traits

Previously unstable impls were skipped, which meant that any impl with an unstable method would get skipped.

Fixes #74531.
2020-07-19 19:12:43 -07:00
Manish Goregaokar
42273f6537
Rollup merge of #74527 - calebcartwright:rustfmt-toolstate-maintainers, r=Mark-Simulacrum
Add myself to toolstate change notifications for rustfmt

I'd like to get the toolstate change notifications for rustfmt as well so that I'll know when things break.

Have spoken with @topecongiro about this offline already.
2020-07-19 19:12:42 -07:00
Manish Goregaokar
e762f978e1
Rollup merge of #74523 - sollyucko:patch-1, r=Mark-Simulacrum
Improve documentation for `core::fmt` internals

The public interface of `core::fmt` is well-documented, but the internals have very minimal documentation.
2020-07-19 19:12:40 -07:00
Manish Goregaokar
42f6ed40e8
Rollup merge of #74520 - RalfJung:backtrace-src, r=Mark-Simulacrum
include backtrace folder in rust-src component

libstd has a [mandatory dependency on this code](https://github.com/rust-lang/rust/pull/73441/files#diff-242481015141f373dcb178e93cffa850), ergo we need to include it in rust-src.

r? @oli-obk
Fixes https://github.com/rust-lang/rust/issues/74506
2020-07-19 19:12:38 -07:00
Manish Goregaokar
55c4057f55
Rollup merge of #74516 - lcnr:min-specialization-ice, r=matthewjasper
do not try fetching the ancestors of errored trait impls

fixes #74483

While building the specialization graph, we use `tcx.all_impls` which discards impls with incorrect self types,
we do however call `trait_def.ancestors` with these impls which caused an ICE as they aren't part of the
specialization graph.
2020-07-19 19:12:37 -07:00
Manish Goregaokar
3981386b8e
Rollup merge of #74514 - Mark-Simulacrum:nightly-rustc-docs, r=ollie27
Do not clobber RUSTDOCFLAGS

We were setting these in both Builder::cargo and here, which ended up only setting the first of the two.

Fixes #74511
2020-07-19 19:12:35 -07:00
Manish Goregaokar
03a47279d3
Rollup merge of #74486 - poliorcetics:read-exact-doc-point-to-read, r=Mark-Simulacrum
Improve Read::read_exact documentation

Fixes #72186.

For now I simply added a link to `Read::read` and held off changing the text in `Read::read_exact`. I can do it if it is deemed necessary.

@rustbot modify labels: C-enhancement, T-libs
2020-07-19 19:12:33 -07:00
Manish Goregaokar
d527c7db67
Rollup merge of #73618 - poliorcetics:false-keyword, r=jyn514
Documentation for the false keyword

Partial fix of #34601.

Short documentation for the false keyword mainly pointing to the `true` keyword.
2020-07-19 19:12:32 -07:00
bors
61e3d8a55c Auto merge of #5824 - tmiasko:manually-drop-clone, r=Manishearth
Ignore not really redundant clones of ManuallyDrop

"Redundant" clones of `ManuallyDrop` are sometimes used for the side effect of
invoking the clone, without running the drop implementation of the inner type.
In other words, they aren't really redundant. For example, futures-rs crate:

```rust
#[allow(clippy::redundant_clone)] // The clone here isn't actually redundant.
unsafe fn increase_refcount<T: ArcWake>(data: *const ()) {
    // Retain Arc, but don't touch refcount by wrapping in ManuallyDrop
    let arc = mem::ManuallyDrop::new(Arc::<T>::from_raw(data as *const T));
    // Now increase refcount, but don't drop new refcount either
    let _arc_clone: mem::ManuallyDrop<_> = arc.clone();
}
```

changelog: Ignore redundant clone lint for ManuallyDrop.
2020-07-20 01:36:21 +00:00
Alex Crichton
028f8d7b85 std: Fix compilation without backtrace feature
This should hopefully handle #74484 but in any case fixes compilation of
the standard library without the `backtrace` feature. The need for this
feature is somewhat unclear now because the `backtrace` crate should
always compile (no more C code!) but we can handle that later if
necessary.
2020-07-19 17:30:29 -07:00
Nicholas Baron
09d55292ed
Update src/libstd/keyword_docs.rs
Clear up wording regarding the iterator and usage of `break`.

Co-authored-by: Josh Triplett <josh@joshtriplett.org>
2020-07-19 17:01:36 -07:00
Tomasz Miąsko
a5cdd4aeb1 Ignore not really redundant clones of ManuallyDrop
"Redundant" clones of `ManuallyDrop` are sometimes used for the side effect of
invoking the clone, without running the drop implementation of the inner type.
In other words, they aren't really redundant. For example, futures-rs crate:

```rust
#[allow(clippy::redundant_clone)] // The clone here isn't actually redundant.
unsafe fn increase_refcount<T: ArcWake>(data: *const ()) {
    // Retain Arc, but don't touch refcount by wrapping in ManuallyDrop
    let arc = mem::ManuallyDrop::new(Arc::<T>::from_raw(data as *const T));
    // Now increase refcount, but don't drop new refcount either
    let _arc_clone: mem::ManuallyDrop<_> = arc.clone();
}
```

Ignore redundant clone lint for ManuallyDrop.
2020-07-20 00:56:27 +02:00
bors
942e0e6fac Auto merge of #5800 - montrivo:bugfix/redundant_closure, r=matthiaskrgr
redundant_closure_call - don't lint when used more than once

Fixes #3354.

changelog: fix redundant_closure_call false positive when closure called more than once
2020-07-19 22:54:29 +00:00
bors
2c21a6f3a8 Auto merge of #74495 - shepmaster:bootstrap-dist-target-files, r=Mark-Simulacrum
Teach bootstrap install and dist commands about TargetSelection

With this, we can now use a target JSON file to build a
cross-compiler:

```
x.py install --host ../aarch64-apple-darwin.json --target aarch64-apple-darwin
```

r? @Mark-Simulacrum
2020-07-19 22:50:46 +00:00
Lukas Kalbertodt
0d64b01639
Slightly improve panic messages when range indices are out of bounds 2020-07-20 00:40:42 +02:00
Tim Nielens
1ac8b85c9f redundant_closure_call - pr review 2020-07-20 00:36:31 +02:00
Gary Guo
4fb260bb32 Guard against non-monomorphized type_id intrinsic call 2020-07-19 23:33:12 +01:00
Tim Nielens
9603d9652b redundant_closure_call - add support for shadowed closures 2020-07-20 00:30:43 +02:00
Tim Nielens
0fecaf1abc redundant_closure_call - extract lint from misc_early.rs, adapt to LatePass 2020-07-20 00:30:43 +02:00
Tim Nielens
c720d823e1 redundant_closure_call - don't lint when used more than once 2020-07-20 00:30:43 +02:00
Nicholas-Baron
f268525d96 Linked the earlier mention of IntoIterator in the keyword 'for' docs 2020-07-19 14:06:55 -07:00
Nicholas-Baron
6c493df0f8 Mentioned IntoIterator in keyword 'in' docs 2020-07-19 14:05:45 -07:00
Nicholas-Baron
940ceb1a43 Mentioned IntoIterator earlier in keyword 'for' docs 2020-07-19 14:03:52 -07:00
Mark Rousskov
e24a0172b0 Only skip impls of foreign unstable traits
Previously unstable impls were skipped, which meant that any impl with an
unstable method would get skipped.
2020-07-19 16:39:20 -04:00
Alexis Bourget
471dd52d77 Fix merge conflict with recent PR 2020-07-19 22:15:44 +02:00
Dylan MacKenzie
6100b74fbc Advertise correct stable version for const control flow 2020-07-19 12:10:13 -07:00
Caleb Cartwright
7dba34fd6b tools: update rustfmt toolstate maintainers 2020-07-19 13:10:38 -05:00
Jake Goulding
57614da715 Teach bootstrap install and dist commands about TargetSelection
With this, we can now use a target JSON file to build a
cross-compiler:

```
x.py install --host ../aarch64-apple-darwin.json --target aarch64-apple-darwin
```
2020-07-19 13:04:33 -04:00
Gabriel Smith
c60a035658 Add test for an explicit non-'static lifetime in a const argument 2020-07-19 12:53:51 -04:00
Gabriel Smith
69d5dd6a50 disallow non-static lifetimes in const generics
This has been put in place to patch over an ICE caused when we encounter
a non-static lifetime in a const generic during borrow checking. This
restriction may be relaxed in the future, but we need more discussion
before then, and in the meantime we should still deal with this ICE.

Fixes issue #60814
2020-07-19 12:52:36 -04:00
Solomon Ucko
a462e7c1d0 Document core::fmt::rt::v1::Count 2020-07-19 11:24:24 -04:00
Tomasz Miąsko
58b862072c Document AddressSanitizer memory leak detection defaults 2020-07-19 17:12:44 +02:00