Commit Graph

141169 Commits

Author SHA1 Message Date
bors ec487bf3cf Auto merge of #82760 - WaffleLapkin:unleak_extend_from_within, r=kennytm
Fix leak in Vec::extend_from_within

Fixes #82533
2021-03-13 07:06:01 +00:00
Michael Howell 3f70bfa79c Eagerly generate the underscore-less name to search on
Basically, it doesn't make sense to generate those things every time
you search. That generates a bunch of stuff for the GC to clean up,
when, if the user wanted to do another search, it would just need
to re-do it again.
2021-03-13 00:04:04 -07:00
Michael Howell d7971e587c In checkGenerics and checkType, don't use Array.prototype.splice so much
Every time splice() is called, another temporary object is created.
This version, which uses plain objects as a sort of Hash Bag,
should only produce one temporary object each time it's called.
2021-03-13 00:02:56 -07:00
Michael Howell 5fe3b87034 Get rid of the garbage produced by getObjectFromId
There is no reason for this function to return an object,
since it is always used for getting at the name anyhow.
It's used in the inner loop for some popular functions,
so we want to avoid allocating in it.
2021-03-12 23:58:31 -07:00
bors 65d046c9ad Auto merge of #6892 - matthiaskrgr:inc_struct_ctor, r=Y-Nak
inconsistent_struct_constructor: try to make message and lint description a bit clearer

changelog: inconsistent_struct_constructor: try to make message and lint description a bit clearer

r? `@ghost`
2021-03-13 04:52:40 +00:00
bors f42888c15f Auto merge of #82436 - osa1:issue80258, r=nikomatsakis
Allow calling *const methods on *mut values

This allows `*const` methods to be called on `*mut` values.

TODOs:

- [x] ~~Remove debug logs~~ Done.
- [x] ~~I haven't tested, but I think this currently won't work when the `self` value has type like `&&&&& *mut X` because I don't do any autoderefs when probing. To fix this the new code in `rustc_typeck::check::method::probe` needs to reuse `pick_method` somehow as I think that's the function that autoderefs.~~ This works, because autoderefs are done before calling `pick_core`, in `method_autoderef_steps`, called by `probe_op`.
- [x] ~~I should probably move the new `Pick` to `pick_autorefd_method`. If not, I should move it to its own function.~~ Done.
- [ ] ~~Test this with a `Pick` with `to_ptr = true` and `unsize = true`.~~ I think this case cannot happen, because we don't have any array methods with `*mut [X]` receiver. I should confirm that this is true and document this. I've placed two assertions about this.
- [x] ~~Maybe give `(Mutability, bool)` a name and fields~~ I now have a `to_const_ptr` field in `Pick`.
- [x] ~~Changes in `adjust_self_ty` is quite hacky. The problem is we can't deref a pointer, and even if we don't have an adjustment to get the address of a value, so to go from `*mut` to `*const` we need a special case.~~ There's still a special case for `to_const_ptr`, but I'm not sure if we can avoid this.
- [ ] Figure out how `reached_raw_pointer` stuff is used. I suspect only for error messages.

Fixes #80258
2021-03-13 04:38:39 +00:00
Henry Boisdequin 81d1d82596 Update Vec docs 2021-03-13 07:58:03 +05:30
Eric Huss 1c9d56e9b4 Update cargo 2021-03-12 18:10:17 -08:00
bors 4d76b4ca52 Auto merge of #83067 - JohnTitor:rollup-0wo338i, r=JohnTitor
Rollup of 6 pull requests

Successful merges:

 - #82984 (Simplify ast block lowering)
 - #83012 (Update Clippy)
 - #83020 (Emit the enum range assumption if the range only contains one element)
 - #83037 (Support merge_functions option in NewPM since LLVM >= 12)
 - #83052 (updated vulnerable deps)
 - #83059 (Allow configuring `rustdoc --disable-minification` in config.toml)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
2021-03-13 02:08:33 +00:00
Tyson Nottingham adcbe49b16 rustc_query_system: simplify QueryCache::iter
Minor cleanup to reduce a small amount of complexity and code bloat.
Reduces the number of mono items in rustc_query_impl by 15%.
2021-03-12 17:34:14 -08:00
Yuki Okushi 684fa1977c Rollup merge of #83059 - notriddle:config-toml-disable-minification, r=Mark-Simulacrum
Allow configuring `rustdoc --disable-minification` in config.toml

This way, you can debug rustdoc's JavaScript and CSS file with normal F12 Dev Tools and you'll have useful line numbers to work with.
2021-03-13 09:44:47 +09:00
Yuki Okushi fa189d4fbb Rollup merge of #83052 - klensy:dep-update, r=Mark-Simulacrum
updated vulnerable deps

* Updated signal-hook-registry 1.2.1 to 1.2.2, as it drops dependency on vulnerable arc-swap 0.4.7 https://rustsec.org/advisories/RUSTSEC-2020-0091
* Updated generic-array 0.12.3 to 0.12.4, vuln https://rustsec.org/advisories/RUSTSEC-2020-0146
* Updated sized-chunks 0.6.2 to 0.6.4, vuln https://rustsec.org/advisories/RUSTSEC-2020-0041 fixed in 0.6.3, in 0.6.4 fixed some UB https://github.com/bodil/sized-chunks/blob/master/CHANGELOG.md#064---2021-02-17
2021-03-13 09:44:46 +09:00
Yuki Okushi fafbc91e0e Rollup merge of #83037 - kubo39:merge-functions-in-llvm-new-pass-manager, r=nikic
Support merge_functions option in NewPM since LLVM >= 12

now we can pass this flag since https://reviews.llvm.org/D93002 has been merged.
2021-03-13 09:44:45 +09:00
Yuki Okushi 04e24ae67e Rollup merge of #83020 - hi-rustin:rustin-patch-enum, r=lcnr
Emit the enum range assumption if the range only contains one element

close https://github.com/rust-lang/rust/issues/82871
2021-03-13 09:44:44 +09:00
Yuki Okushi 7f319c7478 Rollup merge of #83012 - flip1995:clippyup, r=Manishearth
Update Clippy

Bi-weekly Clippy sync.

r? ``@Manishearth``
2021-03-13 09:44:43 +09:00
Yuki Okushi fa3f1865f6 Rollup merge of #82984 - camsteffen:lower-block, r=cjgillot
Simplify ast block lowering
2021-03-13 09:44:42 +09:00
bors 46a934a1dc Auto merge of #83022 - m-ou-se:mem-replace-no-swap, r=nagisa
Don't implement mem::replace with mem::swap.

`swap` is a complicated operation, so this changes the implementation of `replace` to use `read` and `write` instead.

See https://github.com/rust-lang/rust/pull/83019.

I wrote there:

> Implementing the simpler operation (replace) with the much more complicated operation (swap) doesn't make a whole lot of sense. `replace` is just read+write, and the primitive for moving out of a `&mut`. `swap` is for doing that to *two* `&mut` at the same time, which is both more niche and more complicated (as shown by `swap_nonoverlapping_bytes`).

This could be especially interesting for `Option<VeryLargeStruct>::take()`, since swapping such a large structure with `swap_nonoverlapping_bytes` is going to be much less efficient than `ptr::write()`'ing a `None`.

But also for small values where `swap` just reads/writes using temporary variable, this makes a `replace` or `take` operation simpler:
![image](https://user-images.githubusercontent.com/783247/110839393-c7e6bd80-82a3-11eb-97b7-28acb14deffd.png)
2021-03-12 23:27:23 +00:00
bors d219888fc0 Auto merge of #6891 - Y-Nak:use-iterator-sym, r=Manishearth
Use sym::Iterator instead of paths::ITERATOR

Since `sym::Iterator` was added to diagnostic_item, it's time to remove `paths::ITERATOR`.
ref: #5393

changelog: Add `is_trait_method` to `clippy_utils`
changelog: Remove `paths::ITERATOR`
2021-03-12 22:36:49 +00:00
Michael Howell 095b6d2037 Make docs-minification default to true 2021-03-12 15:03:54 -07:00
Camille GILLOT 445b4e379c Make def_key and HIR parenting consistent. 2021-03-12 22:48:32 +01:00
Yuki Okushi 0466b6ac6d Improve the wording for the can't reassign error 2021-03-13 06:06:54 +09:00
Mateusz Gacek 41be515062 mem_replace_with_default: use diagnostic items intead of paths 2021-03-12 13:03:07 -08:00
Mateusz Gacek c86ba7f92d mem_replace_with_default: recognize some std library ctors 2021-03-12 12:57:54 -08:00
Matthias Krüger 6bc5fe4a88 inconsistent_struct_constructor: try to make message and lint description a bit clearer 2021-03-12 20:41:43 +01:00
Michael Howell fdb3e820b1 Add a disable-minification option for rustdoc
This way, you can debug rustdoc's JavaScript and CSS file
with normal F12 Dev Tools and you'll have useful line numbers
to work with.
2021-03-12 12:25:16 -07:00
Yoshitomo Nakanishi 93ee80ac3e Use sym::Iterator instead of paths::ITERATOR 2021-03-13 02:10:54 +09:00
bors b3e19a221e Auto merge of #83024 - Xanewok:update-rls, r=Dylan-DPC
Update RLS

Fixes #82932

r? `@ghost`
2021-03-12 16:57:11 +00:00
Gus Wynn b8e498162e Update library/core/src/fmt/builders.rs
Co-authored-by: Yuki Okushi <huyuumi.dev@gmail.com>
2021-03-12 08:52:26 -08:00
flip1995 a189df12bd Clippy: HACK! Fix bootstrap error
This will be removed in the next sync, once beta is at 1.52. Until then
this hack avoids to put `cfg(bootstrap)` into Clippy.
2021-03-12 15:32:35 +01:00
flip1995 99d05196d6 Clippy: HACK! Fix bootstrap error
This will be removed in the next sync, once beta is at 1.52. Until then
this hack avoids to put `cfg(bootstrap)` into Clippy.
2021-03-12 15:32:35 +01:00
flip1995 412ebc3972 Update Cargo.lock 2021-03-12 15:31:11 +01:00
flip1995 f2f2a005b4 Merge commit '6ed6f1e6a1a8f414ba7e6d9b8222e7e5a1686e42' into clippyup 2021-03-12 15:30:50 +01:00
flip1995 fb311e14d5 Merge commit '6ed6f1e6a1a8f414ba7e6d9b8222e7e5a1686e42' into clippyup 2021-03-12 15:30:50 +01:00
bors 215ebc364e Auto merge of #83030 - nikic:update-llvm, r=nagisa
Update llvm-project submodule

Fixes #82833. Fixes #82859. Probably also `fixes` #83025. This also merges in the current upstream 12.x branch.

r? `@nagisa`
2021-03-12 14:16:01 +00:00
Oli Scherer 11ddd22510 Run rustfmt 2021-03-12 13:46:39 +00:00
klensy d480a3e3c1 updated vulnerable deps 2021-03-12 16:33:02 +03:00
Oli Scherer c51749af6e We won't support trait object constants in type level constants for the forseeable future 2021-03-12 13:00:16 +00:00
Oli Scherer 6ca1d87194 Visit mir::Constant::user_ty for completeness.
It's not necessary yet, but it may become necessary with things like lazy normalization.
2021-03-12 12:59:37 +00:00
Oli Scherer 20f737966e Replace a custom lift method with a Lift impl 2021-03-12 12:44:12 +00:00
Oli Scherer 6b1dd82162 Prepare mir::Constant for ty::Const only supporting valtrees 2021-03-12 12:43:54 +00:00
Oli Scherer 3127a9c60f Prepare mir::Constant for ty::Const only supporting valtrees 2021-03-12 12:43:54 +00:00
Oli Scherer 3ecde6f5db Directly intern allocations so that we can write a Lift impl for them 2021-03-12 12:34:29 +00:00
Oli Scherer 914df2a493 Add ty helper function for mir constants
This is in preparation of the `literal` field becoming an enum that distinguishes between type level constants and runtime constants
2021-03-12 12:33:46 +00:00
Oli Scherer d5eec653c0 Use the explicit error constant instead of fake dummies 2021-03-12 12:25:08 +00:00
Oli Scherer 0bb367e070 Split pretty printer logic for scalar int and scalar ptr
Value trees won't have scalar ptr at all, so we need a scalar int printing method anyway. This way we'll be able to share that method between all const representations.
2021-03-12 12:24:29 +00:00
Oli Scherer b729cc9d61 Pull out ConstValue relating into its own function 2021-03-12 12:23:50 +00:00
Oli Scherer 5e8a89b2e5 Reduce the duplication in the relation logic for constants 2021-03-12 12:23:11 +00:00
Oli Scherer 4d917faa99 Reduce destructuring and re-interning where possible 2021-03-12 12:22:33 +00:00
Oli Scherer 019dba0ceb Resolve a FIXME around type equality checks in Relate for constants 2021-03-12 12:21:55 +00:00
Oli Scherer 09f7f91532 Add convenience conversion methods for ScalarInt 2021-03-12 12:20:54 +00:00