240317 Commits

Author SHA1 Message Date
Tomasz Miąsko
5161b22143 Fix coroutine validation for mixed panic strategy
Validation introduced in #113124 allows UnwindAction::Continue and
TerminatorKind::Resume to occur only in functions with ABI that can
unwind. The function ABI depends on the panic strategy, which can vary
across crates.

Usually MIR is built and validated in the same crate. The coroutine drop
glue thus far was an exception. As a result validation could fail when
mixing different panic strategies.

Avoid the problem by executing AbortUnwindingCalls along with the
validation.
2023-11-28 21:11:24 +01:00
Eduardo Sánchez Muñoz
6b066a9305 thir-unsafeck: print list of missing target features when calling a function with target features outside an unsafe block 2023-11-28 20:37:02 +01:00
Michael Goulet
f2c500bb43 Fix spans for bad await in inline const 2023-11-28 19:29:56 +00:00
Michael Goulet
a76d2e1fd1 Eagerly return ExprKind::Err on yield/await in wrong coroutine context 2023-11-28 19:29:56 +00:00
bors
91c5653a47 Auto merge of #11892 - y21:actually_rename_doc_for_real_this_time, r=Manishearth
rename `DocMarkdown` pass to `Documentation`

Followup of #11801

This was discussed in todays meeting: https://rust-lang.zulipchat.com/#narrow/stream/257328-clippy/topic/Meeting.202023-11-28/near/404667082

Decided to go with `Documentation`, because this would also make it consistent with how `Attributes` is named in `attrs.rs` (and it also sounds good).

changelog: none
2023-11-28 18:59:25 +00:00
y21
0565267f37 rename DocMarkdown to Documentation 2023-11-28 19:14:37 +01:00
Esteban Küber
55e4e3e393 Suggest let or == on typo'd let-chain
When encountering a bare assignment in a let-chain, suggest turning the
assignment into a `let` expression or an equality check.

```
error: expected expression, found `let` statement
  --> $DIR/bad-if-let-suggestion.rs:5:8
   |
LL |     if let x = 1 && i = 2 {}
   |        ^^^^^^^^^
   |
   = note: only supported directly in conditions of `if` and `while` expressions
help: you might have meant to continue the let-chain
   |
LL |     if let x = 1 && let i = 2 {}
   |                     +++
help: you might have meant to compare for equality
   |
LL |     if let x = 1 && i == 2 {}
   |                        +
```
2023-11-28 18:07:52 +00:00
Jake Goulding
115eac03bb Address unused tuple struct fields in the standard library 2023-11-28 12:00:54 -05:00
yukang
9386e14401 fix the issue of suggest unwrap/expect for shorthand field 2023-11-28 23:36:58 +08:00
Alona Enraght-Moony
b1a6cf4a0e Precommit test for https://github.com/rust-lang/rust/issues/118328. 2023-11-28 15:12:46 +00:00
Matthias Krüger
4ca038f048
Rollup merge of #118410 - krasimirgg:llvm-18-test, r=nikic
update test for new LLVM 18 codegen

LLVM at HEAD now emits `or disjoint`: https://buildkite.com/llvm-project/rust-llvm-integrate-prototype/builds/24076#018c1596-8153-488e-b622-951266a02f6c/741-774
2023-11-28 16:09:56 +01:00
Matthias Krüger
71b29e8a38
Rollup merge of #118399 - mu001999:miri/cleanup, r=RalfJung
Clean dead codes in miri

Detected by #118257
2023-11-28 16:09:56 +01:00
Matthias Krüger
3e202ead60
Rollup merge of #118378 - cormacrelf:bugfix/linker-plugin-lto-wasm, r=petrochenkov
Perform LTO optimisations with wasm-ld + -Clinker-plugin-lto

Fixes (partially) #60059. Technically, `--target wasm32-unknown-unknown -Clinker-plugin-lto` would complete without errors before, but it was not producing optimized code. At least, it may have been but it was probably not the opt-level people intended.

Similarly to #118377, this could benefit from a warning about using an explicit libLTO path with LLD, which will ignore it and use its internal LLVM. Especially given we always use lld on wasm targets. I left the code open to that possibility rather than making it perfectly neat.
2023-11-28 16:09:55 +01:00
Matthias Krüger
8f4ccc14c9
Rollup merge of #118323 - onur-ozkan:better-error-for-incorrect-profiles, r=clubby789
give dev-friendly error message for incorrect config profiles

before this change, an incorrect profile would result in the following error:

```sh
...
...
  File "/home/nimda/devspace/onur-ozkan/rust/src/bootstrap/bootstrap.py", line 1088, in bootstrap
    with open(include_path) as included_toml:
         ^^^^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: '/home/nimda/devspace/onur-ozkan/rust/src/bootstrap/defaults/config.aaaa.toml'
```

with this change, the error message is now:

```sh
...
...
  File "/home/nimda/devspace/onur-ozkan/rust/src/bootstrap/bootstrap.py", line 1088, in bootstrap
    raise Exception("Unrecognized profile '{}'. Check src/bootstrap/defaults"
Exception: Unrecognized profile 'aaaa'. Check src/bootstrap/defaults for available options.
```
2023-11-28 16:09:55 +01:00
Matthias Krüger
97ef5a3b53
Rollup merge of #118222 - the8472:copy-use-vec-write, r=m-ou-se
unify read_to_end and io::copy impls for reading into a Vec

This ports over the initial probe (to avoid allocation) and the dynamic read sizing from the io::copy specialization to the `default_read_to_end` implementation which already had its own optimizations for different cases.

I think it should be a best-of-both now.

suggested by `@a1phyr` in https://github.com/rust-lang/rust/pull/117576#issuecomment-1803408492
2023-11-28 16:09:54 +01:00
Matthias Krüger
b8e1194ab2
Rollup merge of #118193 - max-heller:command-typo, r=m-ou-se
Add missing period in `std::process::Command` docs
2023-11-28 16:09:54 +01:00
bors
5facb422f8 Auto merge of #118188 - petrochenkov:defeed, r=cjgillot
resolve: Feed the `def_kind` query immediately on `DefId` creation

Before this PR the def kind query required building HIR for no good reason, with this PR def kinds are instead assigned immediately when `DefId`s are created.

Some PRs previously refactored things to make all def kinds to be available early enough - https://github.com/rust-lang/rust/pull/118250, https://github.com/rust-lang/rust/pull/118272, https://github.com/rust-lang/rust/pull/118311.
2023-11-28 14:54:11 +00:00
Vadim Petrochenkov
84de641484 def collector: Set correct namespace in DefPathData for foreign types 2023-11-28 16:17:52 +03:00
Vadim Petrochenkov
f0dc906319 resolve: Feed the def_kind query immediately on DefId creation 2023-11-28 15:39:31 +03:00
bors
df0295f071 Auto merge of #110353 - the8472:in-place-flatten-chunks, r=cuviper
Expand in-place iteration specialization to Flatten, FlatMap and ArrayChunks

This enables the following cases to collect in-place:

```rust
let v = vec![[0u8; 4]; 1024]
let v: Vec<_> = v.into_iter().flatten().collect();

let v: Vec<Option<NonZeroUsize>> = vec![NonZeroUsize::new(0); 1024];
let v: Vec<_> = v.into_iter().flatten().collect();

let v = vec![u8; 4096];
let v: Vec<_> = v.into_iter().array_chunks::<4>().collect();
```

Especially the nicheful-option-flattening should be useful in real code.
2023-11-28 12:22:16 +00:00
Krasimir Georgiev
81cd7c5b11 update test for new LLVM 18 codegen
LLVM at HEAD now emits `or disjoint`: https://buildkite.com/llvm-project/rust-llvm-integrate-prototype/builds/24076#018c1596-8153-488e-b622-951266a02f6c/741-774
2023-11-28 12:10:59 +00:00
klensy
de13a3871d unwrap return Option value, as it always returns Some for some fns 2023-11-28 14:52:21 +03:00
Ralf Jung
53eb910515 add test checking that aggregate assignments reset memory to uninit first 2023-11-28 11:40:17 +01:00
Ralf Jung
cabfe8f5dc move write_aggregate into step file, and also extract write_repeat into separate function 2023-11-28 11:40:17 +01:00
George Wort
e0bfb615da Name explicit registers in conflict register errors for inline assembly 2023-11-28 10:37:19 +00:00
bors
46a24ed2f4 Auto merge of #118405 - matthiaskrgr:rollup-3a2eevc, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #115331 (optimize str::iter::Chars::advance_by)
 - #118236 (Update mod comment)
 - #118299 (Update `OnceLock` documentation to give a concrete 'lazy static' example, and expand on the existing example.)
 - #118314 (Rename `{collections=>alloc}{tests,benches}`)
 - #118341 (Simplify indenting in THIR printing)
 - #118366 (Detect and reject malformed `repr(Rust)` hints)
 - #118397 (Fix comments for unsigned non-zero `checked_add`, `saturating_add`)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-11-28 10:21:41 +00:00
Matthias Krüger
4f3ee302b7
Rollup merge of #118397 - Zalathar:nonzero, r=WaffleLapkin
Fix comments for unsigned non-zero `checked_add`, `saturating_add`

While looking at #118313, I happened to notice that two of the expanded comments appear to be slightly inaccurate.

For these two methods, `other` is an ordinary unsigned integer, so it can be zero.

Since the sum of non-zero and zero is always non-zero, the safety argument holds even when `other` is zero.
2023-11-28 09:28:39 +01:00
Matthias Krüger
903789d606
Rollup merge of #118366 - fmease:detect-reject-malformed-rust-repr, r=compiler-errors
Detect and reject malformed `repr(Rust)` hints

Fixes #118334.
2023-11-28 09:28:38 +01:00
Matthias Krüger
4475a1220a
Rollup merge of #118341 - Mark-Simulacrum:shrink-thir-print, r=compiler-errors
Simplify indenting in THIR printing

This cuts >100kb from a local librustc_driver.so build, and seems just obviously simpler.
2023-11-28 09:28:38 +01:00
Matthias Krüger
7dbbffdc67
Rollup merge of #118314 - WaffleLapkin:rename_collectionstests, r=cuviper
Rename `{collections=>alloc}{tests,benches}`

The crate is named `alloc` so this makes more sense. Ig this is fallout from #42648?
2023-11-28 09:28:37 +01:00
Matthias Krüger
787f1a65df
Rollup merge of #118299 - frewsxcv:patch-2, r=cuviper
Update `OnceLock` documentation to give a concrete 'lazy static' example, and expand on the existing example.
2023-11-28 09:28:37 +01:00
Matthias Krüger
4704d49629
Rollup merge of #118236 - ksw2000:update_mod_comment, r=cuviper
Update mod comment

The comment of `ASCII_CASE_MASK` on line 477  is `If 6th bit is set ascii is lower case.` but the original comment of `*self ^ ((self.is_ascii_lowercase() as u8) * ASCII_CASE_MASK)` was `Toggle the fifth bit if this is a lowercase letter`
2023-11-28 09:28:36 +01:00
Matthias Krüger
4af1f99740
Rollup merge of #115331 - the8472:chars_advance, r=cuviper
optimize str::iter::Chars::advance_by

```
OLD:
    str::iter::chars_advance_by_0001  0.00ns/iter  +/- 0.00ns
    str::iter::chars_advance_by_0010 13.00ns/iter  +/- 1.00ns
    str::iter::chars_advance_by_1000  1.20µs/iter +/- 15.00ns

NEW:
    str::iter::chars_advance_by_0001  0.00ns/iter +/- 0.00ns
    str::iter::chars_advance_by_0010  6.00ns/iter +/- 0.00ns
    str::iter::chars_advance_by_1000 75.00ns/iter +/- 1.00ns
```
2023-11-28 09:28:36 +01:00
bors
e06c94d6cb Auto merge of #118282 - fee1-dead-contrib:enforce-more, r=compiler-errors
effects: Run `enforce_context_effects` for all method calls

So that we also perform checks when overloaded `PartialEq`s are called.

r? `@compiler-errors`
2023-11-28 08:23:47 +00:00
Nicholas Nethercote
5c680e1bcb Remove unnecessary Option from LoweringContext::allow_{try_trait,gen_future}.
Also remove some unnecessary slicing.
2023-11-28 14:32:40 +11:00
Nicholas Nethercote
3bae9276fa Add LoweringContext::new. 2023-11-28 14:32:40 +11:00
Nicholas Nethercote
ed2868eb9d Create LoweringContext::lower_assoc_item.
By moving most of `ItemLowerer::lower_assoc_item` into it. This is
similar to `LoweringContext::lower_foreign_item`.
2023-11-28 14:32:40 +11:00
Nicholas Nethercote
b12851ce5d Avoid an unnecessary by_ref. 2023-11-28 14:32:40 +11:00
Nicholas Nethercote
dbaa78621a Reduce exposure of some things. 2023-11-28 14:32:40 +11:00
Nicholas Nethercote
3570468ce7 Remove unused feature. 2023-11-28 14:32:40 +11:00
Nicholas Nethercote
fd37da7148 Remove a comment.
It was merged by accident in a previous PR.
2023-11-28 14:32:31 +11:00
bors
c2ec90854a Auto merge of #118395 - compiler-errors:rollup-c8yqlmw, r=compiler-errors
Rollup of 9 pull requests

Successful merges:

 - #111133 (Detect Python-like slicing and suggest how to fix)
 - #114708 (Allow setting `rla` labels via `rustbot`)
 - #117526 (Account for `!` arm in tail `match` expr)
 - #118172 (Add `pretty_terminator` to pretty stable-mir)
 - #118202 (Added linker_arg(s) Linker trait methods for link-arg to be prefixed "-Wl," for cc-like linker args and not verbatim)
 - #118374 (QueryContext: rename try_collect_active_jobs -> collect_active_jobs, change return type from Option<QueryMap> to QueryMap)
 - #118381 (rustc_span: Use correct edit distance start length for suggestions)
 - #118382 (Address unused tuple struct fields in the compiler)
 - #118384 (Address unused tuple struct fields in rustdoc)

r? `@ghost`
`@rustbot` modify labels: rollup
2023-11-28 02:05:26 +00:00
Taiki Endo
b25fa9a811 Pass +forced-atomics feature for riscv32{i,im,imc}-unknown-none-elf 2023-11-28 10:39:37 +09:00
Nicholas Nethercote
d9fef774e3 Remove hir::BinOp, hir::BinOpKind, and hir::UnOp.
They're identical to the same-named types from `ast`. I find it silly
(and inefficient) to have all this boilerplate code to convert one type
to an identical type.

There is already a small amount of type sharing between the AST and HIR,
e.g. `Attribute`, `MacroDef`.

The commit adds a `pub use` to `rustc_hir` so that, for example,
`ast::BinOp` can also be referred to as `hir::BinOp`. This is so the
many existing `hir`-qualified mentions of these types don't need to
change.

The commit also moves a couple of operations from the (removed) HIR
types to the AST types, e.g. `is_by_value`.
2023-11-28 12:14:25 +11:00
r0cky
72668dea6b Remove dead codes 2023-11-28 09:08:45 +08:00
r0cky
c751bfa015 Add proper cfgs 2023-11-28 09:02:34 +08:00
Zalathar
00d5f18954 Fix comments for unsigned non-zero checked_add, saturating_add
For these two methods, `other` is an ordinary unsigned integer, so it can be zero.

Since the sum of non-zero and zero is always non-zero, the safety argument
holds even when `other` is zero.
2023-11-28 11:52:30 +11:00
Michael Goulet
2aca7247a7
Rollup merge of #118384 - shepmaster:unused-tuple-struct-field-cleanup-rustdoc, r=GuillaumeGomez
Address unused tuple struct fields in rustdoc
2023-11-27 19:06:49 -05:00
Michael Goulet
fa636d0481
Rollup merge of #118382 - shepmaster:unused-tuple-struct-field-cleanup, r=compiler-errors
Address unused tuple struct fields in the compiler

r? `@compiler-errors`
2023-11-27 19:06:48 -05:00
Michael Goulet
344459ed4f
Rollup merge of #118381 - Enselic:edit-dist-len, r=WaffleLapkin
rustc_span: Use correct edit distance start length for suggestions

Otherwise the suggestions can be off-base for non-ASCII identifiers. For example suggesting that `Ok` is a name similar to `读文`.

Closes https://github.com/rust-lang/rust/issues/72553.
2023-11-27 19:06:48 -05:00