Maybe Waffle
014c6f208e
Use ptr::Alignment
for extra coolness points
2023-04-14 12:31:49 +00:00
Maybe Waffle
36f5918bf1
Test CopyTaggedPtr
's HashStable
impl
2023-04-14 11:59:53 +00:00
Maybe Waffle
251f662e4d
Share Tag2
impl between CopyTaggedPtr
and TaggedPtr
tests
2023-04-14 11:24:22 +00:00
Maybe Waffle
8d49e948a8
Doc fixes from review
2023-04-14 11:24:22 +00:00
Maybe Waffle
c155d5149f
Implement Send
/Sync
for CopyTaggedPtr
2023-04-13 16:51:04 +00:00
Maybe Waffle
dc19dc29c9
doc fixes
2023-04-12 19:00:27 +00:00
Maybe Waffle
838c5491a4
Document tagged pointers better
2023-04-12 16:22:20 +00:00
Maybe Waffle
6f9b15c40c
Add tests for tagged pointers
2023-04-12 16:20:34 +00:00
Maybe Waffle
5e4577ec65
Add TaggedPtr::set_tag
2023-04-12 12:35:43 +00:00
Maybe Waffle
6f64ae3fbc
Move code around
2023-04-12 11:50:45 +00:00
Maybe Waffle
3df9a7bde3
Shorten COMPARE_PACKED
=> CP
where it is not important
...
why can't I _ it :'(
2023-04-12 11:44:52 +00:00
Maybe Waffle
8f408202c3
Remove pointer_{ref,mut}
from tagged pointers
...
Just use `deref{,_mut}`!
2023-04-12 11:41:41 +00:00
Maybe Waffle
c7c0b85f67
Make tagged pointers debug impls print the pointer
...
Does not really matter, but may be nicer in case
the pointer has some specific debug impl.
2023-04-12 11:30:45 +00:00
Maybe Waffle
c6acd5c92f
Remove Pointer::with_ref
in favour implementing it on tagged pointers directly
2023-04-12 11:26:34 +00:00
Maybe Waffle
9051331dd7
Lift Pointer
's requirement for the pointer to be thin
...
fat pointers rule!
2023-04-12 11:00:35 +00:00
Maybe Waffle
26232f1ff5
Remove useless parameter from ghost
2023-04-12 10:34:29 +00:00
Maybe Waffle
ad92677008
Fix doc test
2023-04-11 21:45:19 +00:00
Maybe Waffle
12fd610e01
Refactor tagged ptr packing into a function
2023-04-11 21:40:39 +00:00
Maybe Waffle
3c6f4c1260
Bless tagged pointers (comply to strict provenance)
2023-04-11 21:31:23 +00:00
Maybe Waffle
f028636b1a
Sprinkle some whitespace & uses
2023-04-11 19:33:33 +00:00
Maybe Waffle
c738dcc284
Add bits_for
helper for tagged pointers & fixup docs
2023-04-11 19:18:59 +00:00
Dylan DPC
97921abc06
Rollup merge of #110124 - Nilstrieb: 📎 -told-me-so, r=compiler-errors
...
Some clippy fixes in the compiler
Best reviewed commit-by-commit 📎 .
2023-04-10 14:13:16 +05:30
Dylan DPC
b8725520af
Rollup merge of #110021 - scottmcm:fix-110005, r=compiler-errors
...
Fix a couple ICEs in the new `CastKind::Transmute` code
Check the sizes of the immediates, rather than the overall types, when deciding whether we can convert types without going through memory.
Fixes #110005
Fixes #109992
Fixes #110032
cc `@matthiaskrgr`
2023-04-10 14:13:14 +05:30
lcnr
3fab7f7c13
review + some small stuff
2023-04-10 09:21:21 +02:00
lcnr
2186847f28
move structural_traits
into assembly
2023-04-10 09:18:47 +02:00
lcnr
2b0f5721c1
prioritize param-env candidates
2023-04-10 09:16:33 +02:00
bors
3c2e2dd5c5
Auto merge of #110127 - matthiaskrgr:rollup-6ui12x5, r=matthiaskrgr
...
Rollup of 6 pull requests
Successful merges:
- #108843 (Instantiate instead of erasing binder when probing param methods)
- #109985 (Add little `is_test_crate` function)
- #110028 (Migrate `rustc_hir_analysis` to session diagnostic [Part 3])
- #110095 (Migrate remainder of rustc_ty_utils to `SessionDiagnostic`)
- #110108 (Add renaming of ignore-git to changelog)
- #110114 (compiletest: Give a better error message if `node` isn't installed)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
2023-04-10 01:57:51 +00:00
Matthias Krüger
f4827459f8
Rollup merge of #110095 - matthewjasper:ty-utils-diagnostics, r=compiler-errors
...
Migrate remainder of rustc_ty_utils to `SessionDiagnostic`
This moves the remaining errors in `rust_ty_utils` to `SessionsDiagnostic`.
r? ``@davidtwco``
2023-04-09 23:40:05 +02:00
Matthias Krüger
164d70dc7a
Rollup merge of #110028 - obeis:hir-analysis-migrate-diagnostics-3, r=compiler-errors
...
Migrate `rustc_hir_analysis` to session diagnostic [Part 3]
Part 3: Finishing `collect.rs` file
r? ``@compiler-errors``
2023-04-09 23:40:04 +02:00
Matthias Krüger
3dfda2c72f
Rollup merge of #109985 - blyxyas:is_test_crate, r=compiler-errors
...
Add little `is_test_crate` function
Ok, this is quite a story.
I'm mainly a Clippy contributor, so I was fixing [this Clippy issue](https://github.com/rust-lang/rust-clippy/pull/10584 ) about a lint having to ignore test modules but that wasn't ignoring test files (integration test, `test/` dirs and such).
As test **files** don't tend to have an inner `#[cfg(test)]` module inside them, I tried everything, looking for filenames, looking for item's parents in the HIR Map, doing black magic...
I even asked [on Zulip](https://rust-lang.zulipchat.com/#narrow/stream/122651-general/topic/.E2.9C.94.20Checking.20if.20file.20is.20integration.20test ), and jyn answered something about `--cfg test`. Aha! That's something that I might be looking for, so I started looking at `rustc_driver_impl` flag parsing and configuration and all that.
Then, I stumbled on [this function right here](2e486be8d2/compiler/rustc_driver_impl/src/lib.rs (L174-L181)
), and noticed the argument `config: Config`. That's a hint.
So [Config](https://doc.rust-lang.org/beta/nightly-rustc/rustc_interface/interface/struct.Config.html ) has the field `opts: Options`, and [`Options`](https://doc.rust-lang.org/beta/nightly-rustc/rustc_session/options/struct.Options.html ) has the field `test`.
This journey has been ~7 or 8 hours in 3 days, it's a very hard thing to find, so this PR adds a mini-function to check if the current crate is a testing one. So that no one has to travel through the same as me, and can just search for `is_test_crate` in the documentation.
2023-04-09 23:40:04 +02:00
Matthias Krüger
4e165c1c99
Rollup merge of #108843 - compiler-errors:non_lifetime_binders-method-probe, r=jackh726
...
Instantiate instead of erasing binder when probing param methods
Fixes #108836
There is a really old comment saying that a `WhereClauseCandidate` probe candidate "should not contain any inference variables", but I'm not really confident that that comment applies anymore. In contrast, other candidates that we assemble during method probe contain inference variables in their substitutions (e.g. `InherentImplCandidate`)...
Since this change is made only to support a nightly feature, I'm happy to gate the new behavior behind this feature flag or discuss it further.
r? types
2023-04-09 23:40:03 +02:00
Nilstrieb
9fc1555f74
Remove turbofish
2023-04-09 23:32:04 +02:00
Nilstrieb
73417b1e15
Inline format_args
...
Co-authored-by: Michael Goulet <michael@errs.io>
2023-04-09 23:29:39 +02:00
Nilstrieb
cab94d29ff
fixup! Improve `Allocation::hash
2023-04-09 23:23:33 +02:00
Nilstrieb
5853c28a7f
Simply Abi::fmt
2023-04-09 23:22:14 +02:00
Nilstrieb
e5defd0102
Convert manual loop into while let
2023-04-09 23:22:14 +02:00
Nilstrieb
4b4948c2e3
Remove identity casts
2023-04-09 23:22:14 +02:00
Nilstrieb
81c320ea77
Fix some clippy::complexity
2023-04-09 23:22:14 +02:00
Nilstrieb
6fceb0f645
Improve `Allocation::hash
...
Exhaustively destructure and ignore `()`
2023-04-09 23:22:14 +02:00
Nilstrieb
5a90de8f5e
Delete useless loop
2023-04-09 23:22:14 +02:00
Nilstrieb
1c75724752
Properly compare previously shadowed values
...
The shadowing lead to an incorrect comparison. Rename it and compare it
properly. compiler-errors told me that I should just include the fix
here without a test.
2023-04-09 23:22:14 +02:00
bors
696aaad58c
Auto merge of #109760 - MaciejWas:struct-tuple-field-names-suggestion, r=jackh726
...
Better diagnostic when pattern matching tuple structs
Fixes #108284
When trying to pattern match a tuple struct we might get a flawed error message if there are missing fields. E.g.
```
let x = Foo(100, 200);
if let Foo { 0: bar } = x { ... }
```
Produces this error:
```
error[E0769]: tuple variant `Foo` written as struct variant
--> hello.rs:5:12
|
5 | if let Foo { 0: foo } = x {
| ^^^^^^^^^^^^^^
|
help: use the tuple variant pattern syntax instead
|
5 | if let Foo(_, _) = x {
| ~~~~~~
```
Which doesn't highlight that we can still use the struct syntax but we need to fill missing fields. This pr changes this error to:
```
error[E0027]: pattern does not mention field `1`
--> hello.rs:5:12
|
5 | if let Foo { 0: foo } = x {
| ^^^^^^^^^^^^^^ missing field `1`
|
help: include the missing field in the pattern
|
5 | if let Foo { 0: foo, 1: _ } = x {
| ~~~~~~~~
help: if you don't care about this missing field, you can explicitly ignore it
|
5 | if let Foo { 0: foo, .. } = x {
| ~~~~~~
```
2023-04-09 20:57:06 +00:00
Nilstrieb
07cd3826e0
Small clippy::correctness fixes
...
Nothing was really incorrect before, but it did get nicer.
2023-04-09 22:39:23 +02:00
Nilstrieb
0a0968b207
Allow modulo_one
on function using cfg consts
2023-04-09 22:30:24 +02:00
Nilstrieb
968be98756
Allow clippy::from_mut_ref
...
This pattern is fine for arena allocators.
2023-04-09 22:29:56 +02:00
Nilstrieb
f00366d191
Box large enum variants
2023-04-09 21:59:28 +02:00
Nilstrieb
54e1309c65
Use HashMap entry APIs more
2023-04-09 21:59:28 +02:00
Nilstrieb
f058d05fc2
Some simple clippy::perf
fixes
2023-04-09 21:59:28 +02:00
blyxyas
2c976765b8
Migrate sess.opts.tests
uses to sess.is_test_crate()
2023-04-09 21:37:31 +02:00
Scott McMurray
d757c4b904
Handle not all immediates having abi::Scalar
s
2023-04-09 11:16:50 -07:00