Commit Graph

122083 Commits

Author SHA1 Message Date
Charles Lew
1990f9777f Disallow loading crates with non-ascii identifier name. 2020-06-16 21:34:36 +08:00
Dylan DPC
b4dd6a0dc4
Rollup merge of #73400 - rnestler:patch-1, r=jonas-schievink
Fix forge-platform-support URL

Apparently it got changed.
2020-06-16 15:08:48 +02:00
Dylan DPC
3c437e5733
Rollup merge of #73389 - lzutao:from, r=kennytm
Use `Ipv4Addr::from<[u8; 4]>` when possible

Resolve this comment: https://github.com/rust-lang/rust/pull/73331#discussion_r440098369
2020-06-16 15:08:47 +02:00
Dylan DPC
759547b210
Rollup merge of #73381 - ratijas:fix-typo-std-mem, r=jonas-schievink
Fix typo in docs of std::mem
2020-06-16 15:08:45 +02:00
Dylan DPC
66a1da38d0
Rollup merge of #73380 - pnkfelix:make-bootstrap-help-print-num-cpus, r=Mark-Simulacrum
Add more info to `x.py build --help` on default value for `-j JOBS`.
2020-06-16 15:08:43 +02:00
Dylan DPC
94105c2da3
Rollup merge of #73373 - lzutao:bug-trackcaller, r=Amanieu
Use track caller for bug! macro
2020-06-16 15:08:42 +02:00
Dylan DPC
6c44519749
Rollup merge of #73372 - GuillaumeGomez:re-order-sidebar-sections, r=kinnison
Re-order correctly the sections in the sidebar

Before that, "trait implementations" and "implementors" titles in the sidebar were before "methods" for example. Which wasn't logical considering that the two sections come after in the "content".

r? @kinnison
2020-06-16 15:08:40 +02:00
Dylan DPC
5bbcdf5f53
Rollup merge of #73339 - jonas-schievink:unbug, r=estebank
Don't run generator transform when there's a TyErr

Not sure if this might cause any problems later on, but we shouldn't be hitting codegen or const eval for the produced MIR anyways, so it should be fine.

cc https://github.com/rust-lang/rust/issues/72685#issuecomment-643749020
2020-06-16 15:08:37 +02:00
Dylan DPC
c65f39dac4
Rollup merge of #73237 - tmiasko:arena, r=nnethercote
Check for overflow in DroplessArena and align returned memory

* Check for overflow when calculating the slice start & end position.
* Align the pointer obtained from the allocator, ensuring that it
  satisfies user requested alignment (the allocator is only asked for
  layout compatible with u8 slice).
* Remove an incorrect assertion from DroplessArena::align.
* Avoid forming references to an uninitialized memory in DroplessArena.

Helps with #73007, #72624.
2020-06-16 15:08:35 +02:00
Guillaume Gomez
bad252c9fa Update ui tests 2020-06-16 14:13:16 +02:00
Raphael Nestler
60410ef020
Fix forge-platform-support URL
Apparently it got changed.
2020-06-16 13:42:09 +02:00
bors
435f97cec1 Auto merge of #73285 - Mark-Simulacrum:clippy-fail, r=RalfJung,oli-obk
Avoid prematurely recording toolstates

When we're running with dry_run enabled (i.e. all builds do this initially), we're
guaranteed to save of a toolstate of TestFail for tools that aren't tested. In practice,
we do test tools as well, so for those tools we would initially record them as being
TestPass, and then later on re-record the correct state after actually testing them.
However, this would not work well if the build failed for whatever reason (e.g. panicking
in bootstrap, or as was the case in #73097, clippy failing to test successfully), we would
just go on believing that things passed when they in practice did not.

This commit also adjusts saving toolstate to never record clippy explicitly (otherwise, it
would be recorded when building it); eventually that'll likely move to other tools as well
but not yet. This is deemed simpler than checking everywhere we generically save
toolstate.

We also move clippy out of the "toolstate" no-fail-fast build into a separate x.py
invocation; this should no longer be technically required but provides the nice state of
letting us check toolstate for all tools and only then check clippy (giving full results
on every build).

r? @oli-obk

Supercedes #73275, also fixes #73274
2020-06-16 11:26:45 +00:00
Guillaume Gomez
a19dfb573d Create new E0763 error code for unterminated byte constant 2020-06-16 13:14:04 +02:00
Guillaume Gomez
5e13935677 Clean up E0668 explanation 2020-06-16 13:11:32 +02:00
Ralf Jung
d1265e7679 libcore tests: use min_specialization 2020-06-16 13:07:15 +02:00
Ralf Jung
991dfe7595 bless all 2020-06-16 11:56:54 +02:00
Ralf Jung
827ccf7718 add probably accidentally missing super_* calls 2020-06-16 11:23:27 +02:00
Ralf Jung
6c5345f2de fmt; make visit_terminator arg names consistent with the rest 2020-06-16 11:23:27 +02:00
Ralf Jung
046165a807 rename location field of Drop terminators to place 2020-06-16 11:23:25 +02:00
David Wood
93022be991
bootstrap: read config from $RUST_BOOTSTRAP_CONFIG
This commit modifies bootstrap so that `config.toml` is read first from
`RUST_BOOTSTRAP_CONFIG`, then `--config` and finally `config.toml` in the
current directory.

This is a subjective change, intended to improve the ergnomics when
using "development shells" for rustc development (for example, using tools
such as Nix) which set environment variables to ensure a reproducible
environment (these development shells can then be version controlled). By
optionally reading `config.toml` from an environment variable, a `config.toml`
can be defined in the development shell and a path to it exposed in the
`RUST_BOOTSTRAP_CONFIG` environment variable - avoiding the need to manually
symlink the contents of this file to `config.toml` in the working
directory.

Signed-off-by: David Wood <david@davidtw.co>
2020-06-16 10:07:34 +01:00
Ralf Jung
302fb5039b get rid of an unused 'span' field 2020-06-16 09:43:31 +02:00
Ralf Jung
0bcefd9b5e remove visit_terminator_kind from MIR visitor 2020-06-16 09:43:31 +02:00
Ralf Jung
5fbef22a44 warn against 'specialization' feature 2020-06-16 09:39:34 +02:00
Ralf Jung
0265e4e61b add tracking issue 2020-06-16 09:25:29 +02:00
bors
c8a9c340de Auto merge of #72962 - lcnr:ObligationCause-lrc, r=ecstatic-morse
store `ObligationCause` on the heap

Stores `ObligationCause` on the heap using an `Rc`.

This PR trades off some transient memory allocations to reduce the size of–and thus the number of instructions required to memcpy–a few widely used data structures in trait solving.
2020-06-16 06:22:52 +00:00
oddg
f3dfe80ee1 Adjust error message 2020-06-15 21:28:50 -07:00
Esteban Küber
d2b8e6090c Account for derived obligations to suggest ?Sized bound
Fix #27964.
2020-06-15 19:46:27 -07:00
Esteban Küber
95e5605108 Suggest ?Sized when applicable for ADTs
Fix #71790.
2020-06-15 19:46:27 -07:00
Lzu Tao
0e6c333ca6 Use Ipv4Addr::from<[u8; 4]> when possible 2020-06-16 01:54:17 +00:00
Rich Kadel
98685a4bf2 Add new fn_span to TerminatorKind::Call instance 2020-06-15 17:08:13 -07:00
Rich Kadel
163e585456 updated mir-opt test due to other recent changes to MIR 2020-06-15 16:50:11 -07:00
Rich Kadel
20aba8f634 added test, Operand::const_from_scalar, require_lang_item, & comments
Addresses feedback from @oli-obk (Thanks!)
2020-06-15 16:50:11 -07:00
Rich Kadel
46ebd57c42 moved instrument_coverage pass, optimized scalar, added FIXME 2020-06-15 16:50:10 -07:00
Rich Kadel
7e49a9ec59 moved to post_borrowck_cleanup & used MirPatch 2020-06-15 16:50:10 -07:00
Rich Kadel
e4df7e7046 Update src/libcore/intrinsics.rs
Co-authored-by: bjorn3 <bjorn3@users.noreply.github.com>
2020-06-15 16:50:10 -07:00
Rich Kadel
d2cd59a031 Add case for count_code_region() extern lang_item
As suggested in PR feedback:

https://github.com/rust-lang/rust/pull/73011#discussion_r435728923

This allows count_code_region() to be handled like a normal intrinsic so
the InstanceDef::InjectedCode variant is no longer needed.
2020-06-15 16:50:10 -07:00
Rich Kadel
2c5c2a6bc2 removed experiments for cleaner github PR 2020-06-15 16:50:10 -07:00
Rich Kadel
088037a044 explained lang_item function body (count_code_region) 2020-06-15 16:50:10 -07:00
Rich Kadel
5068ae1ca0 [WIP] injects llvm intrinsic instrprof.increment for coverage reports
This initial version only injects counters at the top of each function.
Rust Coverage will require injecting additional counters at each
conditional code branch.
2020-06-15 16:50:10 -07:00
Rich Kadel
395256a5dd
Merge pull request #3 from rust-lang/master
update from origin 2020-06-15
2020-06-15 16:44:23 -07:00
mark
e855b90a8e track caller for delay_span_bug 2020-06-15 18:25:58 -05:00
mark
268decbac8 make all uses of ty::Error or ConstKind::Error delay a span bug 2020-06-15 18:25:58 -05:00
Erik Desjardins
e0975b9b01 elaborate, add check for exact bounds 2020-06-15 18:19:54 -04:00
Gary Guo
5cedf5dfba Refactor usage of Needs in typeck 2020-06-15 22:09:12 +01:00
Josh Triplett
fd9ed30e4b asm: Update chapter in unstable book for multiple template string arguments
Update all examples to use the new formatting, and update explanations
to document it.
2020-06-15 13:30:13 -07:00
Vadim Petrochenkov
e8cf5721b1 linker: Never pass -no-pie to non-gnu linkers 2020-06-15 23:17:39 +03:00
Josh Triplett
1078b6f942 asm: Allow multiple template strings; interpret them as newline-separated
Allow the `asm!` macro to accept a series of template arguments, and
interpret them as if they were concatenated with a '\n' between them.
This allows writing an `asm!` where each line of assembly appears in a
separate template string argument.

This syntax makes it possible for rustfmt to reliably format and indent
each line of assembly, without risking changes to the inside of a
template string. It also avoids the complexity of having the user
carefully format and indent a multi-line string (including where to put
the surrounding quotes), and avoids the extra indentation and lines of a
call to `concat!`.

For example, rewriting the second example from the [blog post on the new
inline assembly
syntax](https://blog.rust-lang.org/inside-rust/2020/06/08/new-inline-asm.html)
using multiple template strings:

```rust

fn main() {
    let mut bits = [0u8; 64];
    for value in 0..=1024u64 {
        let popcnt;
        unsafe {
            asm!(
                "    popcnt {popcnt}, {v}",
                "2:",
                "    blsi rax, {v}",
                "    jz 1f",
                "    xor {v}, rax",
                "    tzcnt rax, rax",
                "    stosb",
                "    jmp 2b",
                "1:",
                v = inout(reg) value => _,
                popcnt = out(reg) popcnt,
                out("rax") _, // scratch
                inout("rdi") bits.as_mut_ptr() => _,
            );
        }
        println!("bits of {}: {:?}", value, &bits[0..popcnt]);
    }
}
```

Note that all the template strings must appear before all other
arguments; you cannot, for instance, provide a series of template
strings intermixed with the corresponding operands.

In order to get srcloc mappings right for macros that generate
multi-line string literals, create one line_span for each
line in the string literal, each pointing to the macro.

Make `rustc_parse_format::Parser::curarg` `pub`, so that we can
propagate it from one template string argument to the next.
2020-06-15 12:35:27 -07:00
Aaron Hill
8956a7f581
Only display other method receiver candidates if they actually apply
Previously, we would suggest `Box<Self>` as a valid receiver, even if
method resolution only succeeded due to an autoderef (e.g. to `&self`)
2020-06-15 15:15:35 -04:00
ivan tkachenko
71c54db3dc
Fix typo in docs of std::mem 2020-06-15 22:14:45 +03:00
Esteban Küber
8f12485335 review comments 2020-06-15 12:11:28 -07:00