about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorLines
2020-04-12Rollup merge of #71057 - GuillaumeGomez:cleanup-e0516, r=Dylan-DPCDylan DPC-0/+1
Clean up E0516 explanation r? @Dylan-DPC
2020-04-12Rollup merge of #71053 - phansch:update_kw_sym_docs, r=Dylan-DPCDylan DPC-0/+8
Add some basic docs to `sym` and `kw` modules I was looking into improving some Clippy documentation but was missing a place that explains the `kw` and `sym` modules from rustc. This adds some very basic usage documentation to these modules.
2020-04-12Rollup merge of #71048 - arlosi:normalize_ext_src, r=eddybDylan DPC-1/+59
Normalize source when loading external foreign source into SourceMap The compiler normalizes source when reading files initially (removes BOMs, etc), but not when loading external sources. This leads to the external source matching according to the `src_hash`, but differing internally because it was not normalized. Fixes #70874.
2020-04-12Rollup merge of #71041 - JohnTitor:rustc-dev-guide, r=jonas-schievinkDylan DPC-4/+4
Update links of `rustc guide` Picks up the things we left behind in the transition, hopefully they're last ones. r? @spastorino
2020-04-12Rollup merge of #71034 - GuillaumeGomez:cleanup-e0515, r=Dylan-DPCDylan DPC-4/+4
Clean up E0515 explanation r? @Dylan-DPC
2020-04-12Rollup merge of #71029 - Mark-Simulacrum:cargo-build, r=Mark-SimulacrumDylan DPC-31/+42
Partial work on building with Cargo This cherry picks the commits I'm directly approving from #70999, I want to land them so that that PR is smaller.
2020-04-12Clean up E0516 explanationGuillaume Gomez-0/+1
2020-04-12Add some basic docs to `sym` and `kw` modulesPhilipp Hansch-0/+8
I was looking into improving some Clippy documentation but was missing a place that explains the `kw` and `sym` modules from rustc.
2020-04-12Auto merge of #69707 - estebank:impl-trait-missing-bounds, r=Centrilbors-50/+304
Handle `impl Trait` where `Trait` has an assoc type with missing bounds When encountering a type parameter that needs more bounds the trivial case is `T` `where T: Bound`, but it can also be an `impl Trait` param that needs to be decomposed to a type param for cleaner code. For example, given ```rust fn foo(constraints: impl Iterator) { for constraint in constraints { println!("{:?}", constraint); } } ``` the previous output was ``` error[E0277]: `<impl Iterator as std::iter::Iterator>::Item` doesn't implement `std::fmt::Debug` --> src/main.rs:3:26 | 1 | fn foo(constraints: impl Iterator) { | - help: consider further restricting the associated type: `where <impl Iterator as std::iter::Iterator>::Item: std::fmt::Debug` 2 | for constraint in constraints { 3 | println!("{:?}", constraint); | ^^^^^^^^^^ `<impl Iterator as std::iter::Iterator>::Item` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug` | = help: the trait `std::fmt::Debug` is not implemented for `<impl Iterator as std::iter::Iterator>::Item` = note: required by `std::fmt::Debug::fmt` ``` which is incorrect as `where <impl Iterator as std::iter::Iterator>::Item: std::fmt::Debug` is not valid syntax nor would it restrict the positional `impl Iterator` parameter if it were. The output being introduced is ``` error[E0277]: `<impl Iterator as std::iter::Iterator>::Item` doesn't implement `std::fmt::Debug` --> src/main.rs:3:26 | 3 | println!("{:?}", constraint); | ^^^^^^^^^^ `<impl Iterator as std::iter::Iterator>::Item` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug` | = help: the trait `std::fmt::Debug` is not implemented for `<impl Iterator as std::iter::Iterator>::Item` = note: required by `std::fmt::Debug::fmt` help: introduce a type parameter with a trait bound instead of using `impl Trait` | LL | fn foo<T: Iterator>(constraints: T) where <T as std::iter::Iterator>::Item: std::fmt::Debug { | ^^^^^^^^^^^^^ ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``` This suggestion is correct and lead the user in the right direction: because you have an associated type restriction you can no longer use `impl Trait`, the only reasonable alternative is to introduce a named type parameter, bound by `Trait` and with a `where` binding on the associated type for the new type parameter `as Trait` for the missing bound. *Ideally*, we would want to suggest something like the following, but that is not valid syntax today ``` error[E0277]: `<impl Iterator as std::iter::Iterator>::Item` doesn't implement `std::fmt::Debug` --> src/main.rs:3:26 | 3 | println!("{:?}", constraint); | ^^^^^^^^^^ `<impl Iterator as std::iter::Iterator>::Item` cannot be formatted using `{:?}` because it doesn't implement `std::fmt::Debug` | = help: the trait `std::fmt::Debug` is not implemented for `<impl Iterator as std::iter::Iterator>::Item` = note: required by `std::fmt::Debug::fmt` help: introduce a type parameter with a trait bound instead of using `impl Trait` | LL | fn foo(constraints: impl Iterator<Item: std::fmt::Debug>) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ``` Fix #69638.
2020-04-11Normalize source when loading external foreign source into SourceMapArlo Siemsen-1/+59
The compiler normalizes source when reading files initially (removes BOMs, etc), but not when loading external sources. Fixes #70874 by normalizing when loading external sources too. Adds a test to verify normalization.
2020-04-12Auto merge of #69926 - RoccoDev:master, r=estebank,varkorbors-132/+515
rustc: Add a warning count upon completion This adds a `build completed with one warning/x warnings` message, similar to the already present `aborted due to previous error` message.
2020-04-11fix rebaseEsteban Küber-5/+5
2020-04-11Make panic-unwind a default feature for libstdLuca Barbieri-1/+1
x.py sets it unconditionally, so want it for plain "cargo build". We need to load one of the panic runtimes that is in src (vs. pre-built in the compiler's sysroot) to ensure that we don't load libpanic_unwind from the sysroot. That would lead to a load of libcore, also from the sysroot, and create lots of errors about duplicate lang items.
2020-04-11Don't emit rerun-if-changed on llvm-config if using system LLVMLuca Barbieri-10/+20
The code was broken because it printed "llvm-config" instead of the absolute path to the llvm-config executable, causing Cargo to always rebuild librustc_llvm if using system LLVM. Also, it's not the build system's job to rebuild when a system library changes, so we simply don't emit "rerun-if-changed" if a path to LLVM was not explicitly provided.
2020-04-11Require compiler-rt root at ../src/llvm-project/compiler-rtLuca Barbieri-2/+5
2020-04-11Depend on getopts from crates.ioLuca Barbieri-10/+8
rustc_session exports it for other crates to avoid mismatching crate versions.
2020-04-11review commentsEsteban Küber-8/+8
2020-04-11review commentsEsteban Küber-29/+32
2020-04-11Try to use the first char in the trait name as type paramEsteban Küber-12/+15
2020-04-11Account for existing names when suggesting adding a type paramEsteban Küber-27/+60
2020-04-11Account for type params with boundsEsteban Küber-6/+30
2020-04-11review commentsEsteban Küber-92/+86
2020-04-11review commentsEsteban Küber-130/+140
2020-04-11Handle `impl Trait` where `Trait` has an assoc type with missing boundsEsteban Küber-21/+208
Fix #69638.
2020-04-11Auto merge of #71031 - Dylan-DPC:rollup-zr8hh86, r=Dylan-DPCbors-223/+254
Rollup of 5 pull requests Successful merges: - #70644 (Clean up `ModuleConfig` initialization) - #70937 (Fix staticlib name for *-pc-windows-gnu targets) - #70996 (Add or_insert_with_key to Entry of HashMap/BTreeMap) - #71020 (Store UNICODE_VERSION as a tuple) - #71021 (Use write!-style syntax for MIR assert terminator) Failed merges: r? @ghost
2020-04-12Update links of `rustc guide`Yuki Okushi-4/+4
2020-04-11Clean up E0515 explanationGuillaume Gomez-4/+4
2020-04-11Rollup merge of #71021 - robojumper:71000-mir-assert-syntax, r=jonas-schievinkDylan DPC-25/+42
Use write!-style syntax for MIR assert terminator Fixes #71000. r? @jonas-schievink
2020-04-11Rollup merge of #71020 - pyfisch:unicode-version, r=sfacklerDylan DPC-33/+8
Store UNICODE_VERSION as a tuple Remove the UnicodeVersion struct containing major, minor and update fields and replace it with a 3-tuple containing the version number. As the value of each field is limited to 255 use u8 to store them.
2020-04-11Rollup merge of #70996 - ChaiTRex:master, r=AmanieuDylan DPC-0/+56
Add or_insert_with_key to Entry of HashMap/BTreeMap Going along with `or_insert_with`, `or_insert_with_key` provides the `Entry`'s key to the lambda, avoiding the need to either clone the key or the need to reimplement this body of this method from scratch each time. This is useful when the initial value for a map entry is derived from the key. For example, the introductory Rust book has an example Cacher struct that takes an expensive-to-compute lambda and then can, given an argument to the lambda, produce either the cached result or execute the lambda. --- I'm fairly new to Rust, so any optimizations, corrections to types, better names, better documentation, or whatever else would be appreciated. I'd like to thank Arnavion on freenode for helping me to implement a very similar method when I found that `or_insert_with_key` was unavailable. As a somewhat-related note, this implements https://github.com/rust-lang/rfcs/issues/1202 from 2015, so if this pull request is accepted, that should be closed.
2020-04-11Rollup merge of #70937 - mati865:mingw-staticlib-suffix, r=petrochenkovDylan DPC-3/+8
Fix staticlib name for *-pc-windows-gnu targets Fix https://github.com/rust-lang/rust/issues/69904 Guess this will need FCP but opened PR anyway to bring the attention. In short Rust has been using wrong `foo.lib` format for static libraries when building for `*-pc-windows-gnu` since version [1.8.0](https://github.com/rust-lang/rust/commit/34b4e66736a0fb65235feadbb5178d42bd09ed67). [LD](https://github.com/bminor/binutils-gdb/blob/f4a220077b03af3a1f905b7dc6dc84c0a06d582f/ld/emultempl/pe.em#L2224-L2227) and [LLD](https://github.com/llvm/llvm-project/blob/0605f5fbe755326e3dbc8daa4fc34453b8c5ac0e/lld/MinGW/Driver.cpp#L140-L141) agree in that regard and only accept static libraries with `libfoo.a` format. So the only thing to break here is when somebody added a hack to rename created library to proper format (like [here](https://gitlab.gnome.org/GNOME/librsvg/-/commit/ad86ab8580c8779fc3eb2bee2422bb116919844e#d5b4de16d947214ec306bd57bed1bd23a939b5f9_197_194)).
2020-04-11Rollup merge of #70644 - nnethercote:clean-up-ModuleConfig-init, ↵Dylan DPC-162/+140
r=Mark-Simulacrum Clean up `ModuleConfig` initialization Because it's currently a mess. r? @Mark-Simulacrum
2020-04-11Auto merge of #70161 - cjgillot:query-arena, r=nikomatsakisbors-98/+78
Allocate some query results on an arena This avoids a cloning few `Lrc` and `Vec`s in the queries.
2020-04-11Depend on libc from crates.ioLuca Barbieri-8/+8
2020-04-11rustc: Add a warning count upon completionRoccoDev-132/+515
2020-04-11Change issue number to point to tracking issueChai T. Rex-2/+2
2020-04-11Auto merge of #71014 - Centril:rollup-3lc8cnt, r=Centrilbors-2/+49
Rollup of 5 pull requests Successful merges: - #69573 (tests encoding current behavior for various cases of "binding" to _.) - #70881 (bootstrap: work around "unused attribute" errors in incremental stdlib rebuilds.) - #70957 (Normalize MIR locals' types for generator layout computation.) - #70962 (added machine hooks to track deallocations) - #70982 (Normalize function signature in function casting check procedure) Failed merges: r? @ghost
2020-04-11Use write!-style syntax for MIR assert terminatorrobojumper-25/+42
2020-04-11Store UNICODE_VERSION as a tuplePyfisch-33/+8
Remove the UnicodeVersion struct containing major, minor and update fields and replace it with a 3-tuple containing the version number. As the value of each field is limited to 255 use u8 to store them.
2020-04-11Auto merge of #69573 - pnkfelix:issue-53114-add-tests, r=Centrilbors-0/+300
tests encoding current behavior for various cases of "binding" to _. The `_` binding form is special, in that it encodes a "no-op": nothing is actually bound, and thus nothing is moved or borrowed in this scenario. Usually we do the "right" thing in all such cases. The exceptions are explicitly pointed out in this test case, so that we keep track of whether they are eventually fixed. Cc #53114. (This does not close the aforementioned issue; it just adds the tests encoding the current behavior, which we hope to eventually fix.)
2020-04-11Rollup merge of #70982 - ldm0:fncoerce, r=eddybMazdak Farrokhzad-1/+18
Normalize function signature in function casting check procedure Fixes #54094 ```rust trait Zoo { type X; } impl Zoo for u16 { type X = usize; } fn foo(abc: <u16 as Zoo>::X) {} fn main() { let x: *const u8 = foo as _; } ``` Currently a `FnDef` need to be checked if it's able to cast to `FnPtr` before it is actually casted. But the signature of `FnPtr` target's associated types are not normalized: https://github.com/rust-lang/rust/blob/96d77f0e5f103612d62b85938aacfb33f5768433/src/librustc_typeck/check/cast.rs#L536-L553 However, during the coercion check, the signature of `FnPtr` target's associated types are normalized (The `<u16 as Zoo>::X` turns into `usize`). https://github.com/rust-lang/rust/blob/96d77f0e5f103612d62b85938aacfb33f5768433/src/librustc_typeck/check/coercion.rs#L687-L729 This inconsistency leads to the error:`Err(Sorts(ExpectedFound { expected: <u16 as Zoo>::X, found: usize }))`.
2020-04-11Rollup merge of #70962 - KrishnaSannasi:track-dealloc, r=RalfJungMazdak Farrokhzad-0/+10
added machine hooks to track deallocations This is part of rust-lang/miri#1314 in order to allow miri to show stack traces for on deallocation in order to debug use-after-free bugs
2020-04-11Rollup merge of #70957 - oli-obk:lazy_repeat_length_eval_ice, r=matthewjasperMazdak Farrokhzad-1/+14
Normalize MIR locals' types for generator layout computation. fixes #70905
2020-04-11Rollup merge of #70881 - eddyb:stage0-hide-incremental-unused-attrs, ↵Mazdak Farrokhzad-0/+7
r=Mark-Simulacrum bootstrap: work around "unused attribute" errors in incremental stdlib rebuilds. This should alleviate #58633 separately from a proper fix. r? @Mark-Simulacrum
2020-04-11Rollup merge of #69573 - pnkfelix:issue-53114-add-tests, r=CentrilMazdak Farrokhzad-0/+300
tests encoding current behavior for various cases of "binding" to _. The `_` binding form is special, in that it encodes a "no-op": nothing is actually bound, and thus nothing is moved or borrowed in this scenario. Usually we do the "right" thing in all such cases. The exceptions are explicitly pointed out in this test case, so that we keep track of whether they are eventually fixed. Cc #53114. (This does not close the aforementioned issue; it just adds the tests encoding the current behavior, which we hope to eventually fix.)
2020-04-10Auto merge of #70986 - marmeladema:issue70853/librustc_middle-local-def-id, ↵bors-89/+124
r=eddyb rustc_middle: return `LocalDefId` where possible in hir::map module This changes the return type of the following functions to return a `LocalDefId` instead of a `DefId`: * opt_local_def_id_from_node_id * opt_local_def_id * body_owner_def_id * local_def_id_from_node_id * get_parent_id This is another step in the right direction for #70853 This pull request will be followed by another (substantial one) which changes the return type of `local_def_id` function but this change being more invasive, we might want to wait for #70956 or #70961 (or some other form it) to land first.
2020-04-10Auto merge of #70994 - Centril:rollup-lftv0a3, r=Centrilbors-565/+754
Rollup of 9 pull requests Successful merges: - #69745 (Use `PredicateObligation`s instead of `Predicate`s) - #70938 (Add ThreadSanitizer test case) - #70973 (Use forward traversal for unconditional recursion lint) - #70978 (compiletest: let config flags overwrite -A unused) - #70979 (Follow up on BTreeMap comments) - #70981 (Rearrange BTreeMap::into_iter to match range_mut.) - #70985 (Clean up E0512 explanation) - #70988 (Setup the `@rustbot prioritize` command) - #70991 (fix rustc-dev-guide's url in src/librustc_codegen_ssa) Failed merges: r? @ghost
2020-04-10Fixed doc tests for added methodsChai T. Rex-0/+2
2020-04-10added machine hooks to track deallocationsOzaren-0/+10
2020-04-10Add or_insert_with_key to Entry of HashMap/BTreeMapChai T. Rex-0/+54
Going along with or_insert_with, or_insert_with_key provides the Entry's key to the lambda, avoiding the need to either clone the key or the need to reimplement this body of this method from scratch each time. This is useful when the initial value for a map entry is derived from the key. For example, the introductory Rust book has an example Cacher struct that takes an expensive-to-compute lambda and then can, given an argument to the lambda, produce either the cached result or execute the lambda.