about summary refs log tree commit diff
path: root/src
AgeCommit message (Collapse)AuthorLines
2020-04-21Refactoring and added test-cases #70528Ayush Kumar Mishra-1/+25
2020-04-21Auto merge of #71170 - spastorino:dyn-fnonce-alignment, r=nikomatsakisbors-16/+166
Make Box<dyn FnOnce> respect self alignment Closes #68304 r? @eddyb @nikomatsakis
2020-04-21sccs are computed in dependency orderNiko Matsakis-53/+10
We don't need the `scc_dependency_order` vector, `all_sccs` is already in dependency order.
2020-04-21update ref testNiko Matsakis-71/+72
2020-04-21Fix #! (shebang) stripping account space issue #70528Ayush Kumar Mishra-1/+1
2020-04-21Auto merge of #71267 - pnkfelix:issue-71248-dont-need-exports-all-green, ↵bors-10/+22
r=nagisa attempt to recover perf by removing `exports_all_green` attempt to recover perf by removing `exports_all_green` flag. cc #71248 (My hypothesis is that my use of this flag was an overly conservative generalization of PR #67020.)
2020-04-20./x.py fmtCameron Taggart-6/+6
2020-04-20allow wasm32 compilation of librustc_data_structures/profiling.rsCameron Taggart-4/+11
2020-04-21Rollup merge of #71346 - mati865:rustbuild-tools, r=Mark-SimulacrumDylan DPC-1/+9
Do not build tools if user do not want them Fixes https://github.com/rust-lang/rust/issues/71307
2020-04-21Rollup merge of #71285 - ljedrz:mir_inline_span_for_optimized_mir, ↵Dylan DPC-7/+5
r=ecstatic-morse MIR: use HirId instead of NodeId to avoid cycles while inlining I wanted to see if I could limit the number of uses of `NodeId` when `HirId` is available and I saw that some of the MIR `Inliner` code could use `Span` instead of `NodeId`, not unlike in https://github.com/rust-lang/rust/pull/71197. ~If I'm understanding the reason for not calling `optimized_mir` in incremental builds here correctly, this change could also allow us to do so.~ This change could affect performance, so if this approach makes sense, a perf run is probably a good idea.
2020-04-21Rollup merge of #71174 - Nokel81:fix-async-main-error, r=petrochenkovDylan DPC-14/+88
Check that main/start is not async * Add new error code E0752 * Add span to hir::IsAsync::Yes * Emit an error if main or the start function is marked as async * Add two regression tests This PR fixes #68523.
2020-04-21Rollup merge of #69362 - CAD97:alloc_layout_extras, r=AmanieuDylan DPC-13/+43
Stabilize most common subset of alloc_layout_extras Tracking issue: https://github.com/rust-lang/rust/issues/55724 Specifically, this stabilizes: ```rust pub fn Layout::align_to(&self, align: usize) -> Result<Layout, LayoutErr>; pub fn Layout::pad_to_align(&self) -> Layout; pub fn Layout::extend(&self, next: Layout) -> Result<(Layout, usize), LayoutErr>; pub fn Layout::array<T>(n: usize) -> Result<Layout, LayoutErr>; ``` Methods that are tracked by #55724 but are not stabilized here: ```rust pub fn Layout::padding_needed_for(&self, align: usize) -> usize; pub fn Layout::repeat(&self, n: usize) -> Result<(Layout, usize), LayoutErr>; pub fn Layout::repeat_packed(&self, n: usize) -> Result<Layout, LayoutErr>; pub fn Layout::extend_packed(&self, next: Layout) -> Result<Layout, LayoutErr>; ``` Combined, these stabilized functions allow code to construct and manipulate `repr(C)` layouts while letting the standard library handle correctness in the face of edge cases. For example use cases, consider the usage in [hashbrown](https://github.com/Amanieu/hashbrown/blob/2f2af1d/src/raw/mod.rs#L143), [crossbeam-skiplist](https://github.com/crossbeam-rs/crossbeam-skiplist/blob/master/src/base.rs#L99), [pointer-utils/slice-dst](https://github.com/CAD97/pointer-utils/blob/92aeefeed9399f28d1b1654b63f8dcbe1242d8d4/crates/slice-dst/src/layout_polyfill.rs), and of course the standard library itself. Providing a higher-level API such as `Layout::repr_c<const N: usize>(fields: [Layout; N]) -> Result<(Layout, [usize; N]), LayoutErr>` is blocked on const generics, which are a ways off. Providing an API that doesn't provide offsets would be quite suboptimal, as the reason for calculating the layout like this rather than `Layout::new` is to get the field offsets. The primary issue with the current API is having to call `.pad_to_align()` to match the layout of a `repr(C)` struct. However, I think this is not just a (failing? limitation?) of the API, but rather intrinsic complexity. While all Rust-defined types have size==stride, and probably will for the foreseeable future, there is no inherent reason why this is a limitation of all allocations. As such, the `Layout` manipulation APIs shouldn't impose this limitation, and instead the higher level api of `repr_c` (or just plain old using `Layout::new`) can make keeping it simple. cc @matklad r? @rust-lang/libs
2020-04-20Fix show-const-contents rustdoc testLinus Färnstrand-1/+1
2020-04-20Use assoc float consts instead of module levelLinus Färnstrand-16/+15
2020-04-20Define module level int consts from assoc constsLinus Färnstrand-2/+2
2020-04-20Stop accessing module level int consts via crate::<Ty>Linus Färnstrand-9/+3
2020-04-20Auto merge of #5332 - DevinR528:if-let-else-mutex, r=flip1995bors-0/+7
If let else mutex changelog: Adds lint to catch incorrect use of `Mutex::lock` in `if let` expressions with lock calls in any of the blocks. closes: #5219
2020-04-20Ignore -Zprofile when building compiler_builtinsAmanieu d'Antras-5/+18
2020-04-20const prop: don't special case return placeJonas Schievink-13/+9
2020-04-20Use copy_op_transmuteJonas Schievink-1/+1
2020-04-20Bless 32-bit test outputJonas Schievink-15/+15
2020-04-20Remove unnecessary blockJonas Schievink-6/+4
2020-04-20Fix codegen and mir-opt testsJonas Schievink-19/+18
Mostly renamed allocations, but I'm not sure about the const prop tests
2020-04-20Update const propJonas Schievink-5/+5
2020-04-20Dump return_place upon returningJonas Schievink-0/+1
2020-04-20Fix pop_stack_frame logicJonas Schievink-22/+7
2020-04-20Remove null placesJonas Schievink-21/+0
2020-04-20Treat RETURN_PLACE as a normal LocalJonas Schievink-70/+42
Copy its value to the `return_place` upon leaving a call frame
2020-04-20Do not build tools if user do not want themMateusz Mikuła-1/+9
2020-04-20Ensure tail expression will have a `Ty` for E0746Esteban Küber-66/+113
When the return type is `!Sized` we look for all the returned expressions in the body to fetch their types and provide a reasonable suggestion. The tail expression of the body is normally evaluated after checking whether the return type is `Sized`. Changing the order of the evaluation produces undesirable knock down effects, so we detect the specific case that newcomers are likely to encounter ,returning a single bare trait object, and only in that case we evaluate the tail expression's type so that the suggestion will be accurate.
2020-04-20Apply suggestions from PR reviewEduardo Broto-1/+1
* Move the lint to pedantic * Import used types instead of prefixing with `hir::`
2020-04-20Remove some allocations in predicate evaluationEsteban Küber-9/+10
2020-04-20Use more `Iterator`s instead of `Vec`sEsteban Küber-81/+60
2020-04-20Remove unnecessary allocationEsteban Küber-26/+25
2020-04-20Remove some `Vec` allocations in an effort to improve perfEsteban Küber-54/+38
2020-04-20Improve Layout::extend docsCAD97-3/+4
2020-04-20Update src/libcore/alloc/layout.rsChristopher Durham-2/+2
Co-Authored-By: Amanieu d'Antras <amanieu@gmail.com>
2020-04-20Suggest `-> impl Trait` and `-> Box<dyn Trait>` on fn that doesn't returnEsteban Küber-42/+101
During development, a function could have a return type set that is a bare trait object by accident. We already suggest using either a boxed trait object or `impl Trait` if the return paths will allow it. We now do so too when there are *no* return paths or they all resolve to `!`. We still don't handle cases where the trait object is *not* the entirety of the return type gracefully.
2020-04-20Rollup merge of #71334 - ehuss:pattern-docs, r=kennytmDylan DPC-37/+150
Update pattern docs. A few changes to help clarify string pattern usage: * Add some examples and stability information in the `pattern` module. * Fixes the links at https://doc.rust-lang.org/std/str/pattern/ because intra-doc-links don't work with re-exported modules (#65983 I think?). * Consistently use the same phrasing for `str` methods taking a pattern. * Also mention that array of `char` is also accepted. When `Pattern` is stabilized, the phrasing in the `str` methods can be updated to be more general to reflect the exact behavior. I'm reluctant to do this now because the stability story for `Pattern` is uncertain. It may perhaps look something like: > The pattern can be any type that implements the [`Pattern`] trait. Notable examples are `&str`, [`char`], arrays of [`char`], or functions or closures that determines if a character matches. Additional libraries might provide more complex patterns like regular expressions. This is complicated because methods like `trim_matches` have bounds, which for example don't support `str`, so those methods may need more elaboration.
2020-04-20Rollup merge of #71328 - Mark-Simulacrum:stabilize-pathbuf-capacity, r=sfacklerDylan DPC-8/+7
Stabilize PathBuf capacity methods Closes https://github.com/rust-lang/rust/issues/58234. Stabilization FCP finished in https://github.com/rust-lang/rust/issues/58234#issuecomment-616048777.
2020-04-20Rollup merge of #71284 - JOE1994:serialize_id, r=petrochenkovDylan DPC-6/+18
fix -Zast-json to output correct JSON form fixes #71086 (Reverts some of the changes made in #70215) JSON output (from an empty library) after fix has something for **"id"** field ```shell lonelyjoe@lonelyjoe-desktop:~/workspace/empty_lib/src$ rustc lib.rs -Zast-json ``` ```json { "module":{ "inner":{ "lo":0, "hi":94 }, "items":[ { "attrs":[ { "kind":{ "variant":"Normal", "fields":[ { "path":{ "span":{ "lo":0, "hi":0 }, "segments":[ { "ident":{ "name":"prelude_import", "span":{ "lo":0, "hi":0 } }, "id":3, "args":null } ] }, "args":"Empty" } ] }, "id":null, "style":"Outer", "span":{ "lo":0, "hi":0 } } ], "id":4, "span":{ "lo":0, "hi":0 }, "vis":{ "node":"Inherited", "span":{ "lo":0, "hi":0 } }, "ident":{ "name":"", "span":{ "lo":0, "hi":0 } }, "kind":{ "variant":"Use", "fields":[ { "prefix":{ "span":{ "lo":0, "hi":0 }, "segments":[ { "ident":{ "name":"{{root}}", "span":{ "lo":0, "hi":0 } }, "id":5, "args":null }, { "ident":{ "name":"std", "span":{ "lo":0, "hi":0 } }, "id":6, "args":null }, { "ident":{ "name":"prelude", "span":{ "lo":0, "hi":0 } }, "id":7, "args":null }, { "ident":{ "name":"v1", "span":{ "lo":0, "hi":0 } }, "id":8, "args":null } ] }, "kind":"Glob", "span":{ "lo":0, "hi":0 } } ] }, "tokens":null }, { "attrs":[ { "kind":{ "variant":"Normal", "fields":[ { "path":{ "span":{ "lo":0, "hi":0 }, "segments":[ { "ident":{ "name":"macro_use", "span":{ "lo":0, "hi":0 } }, "id":9, "args":null } ] }, "args":"Empty" } ] }, "id":null, "style":"Outer", "span":{ "lo":0, "hi":0 } } ], "id":10, "span":{ "lo":0, "hi":0 }, "vis":{ "node":"Inherited", "span":{ "lo":0, "hi":0 } }, "ident":{ "name":"std", "span":{ "lo":0, "hi":0 } }, "kind":{ "variant":"ExternCrate", "fields":[ null ] }, "tokens":null } ], "inline":true }, "attrs":[ ], "span":{ "lo":0, "hi":94 }, "proc_macros":[ ] } ```
2020-04-20Rollup merge of #71270 - Rustin-Liu:rustin-patch-has-self, r=estebankDylan DPC-4/+7
Fix `has_no_input_arg` check and rename it to `has_only_self_parameter` Signed-off-by: Rustin-Liu <rustin.liu@gmail.com> Fixes https://github.com/rust-lang/rust/pull/70643#discussion_r401571789.
2020-04-20Rollup merge of #71250 - GuillaumeGomez:use-json-instead-of-js, r=kinnisonDylan DPC-5/+41
Replace big JS dict with JSON parsing Part of #56545. @ollie27 suggested that using JSON instead of a JS dict might be faster, so I decided to test it. And the results far exceeded whatever expectations I had... I used https://github.com/adamgreig/stm32ral for my tests. If you want to build it locally: ```bash $ cargo doc --features doc --open ``` But I strongly recommend to do it with this PR. Some numbers: * Loading a page with the JSON search-index: less than 1 second * Loading a page with the JS search-index: crashed after 30 seconds I think the results are clear enough... r? @ollie27 cc @rust-lang/rustdoc
2020-04-20Expand comment to justify not checking if all the exports are green.Felix S. Klock II-0/+17
2020-04-20Check that main/start is not asyncSebastian Malton-14/+88
* Add new error code E0752 * Add span to hir::IsAsync::Yes * Emit an error if main or the start function is marked as async * Add two regression tests Fix formatting errors and bless test outputs * move tests to ui/async-await fix test error text remove span from IsAsync
2020-04-20Add error message for using type parameter as the type of a const parametervarkor-19/+49
2020-04-20Auto merge of #70729 - nnethercote:a-big-options-clean-up, r=petrochenkovbors-379/+339
A big options clean-up Lots of improvements here. r? @Centril
2020-04-20Make the `structural_match` error diagnostic for const generics clearervarkor-7/+9
2020-04-20use span_lint_and_help, cargo dev fmtDevin R-1/+1
2020-04-20progress work on suggestion for auto fixDevin R-0/+7