249319 Commits

Author SHA1 Message Date
Chris Denton
8cd7aaa105
Remove unnecessary fixme
As the FIXME itself notes, there's nothing to fix here.
2024-03-06 15:34:33 +00:00
Guillaume Gomez
b69607cecf Add missing background color for top-level rust documentation page and increase contrast by setting text color to black 2024-03-06 16:33:17 +01:00
roife
91d181feff minor: fmt and clippy 2024-03-06 23:32:40 +08:00
Guillaume Gomez
379908ef4e Build libgccjit for all CI testsuites using it 2024-03-06 16:24:02 +01:00
Guillaume Gomez
95b49e7d73 Build libgccjit in CI 2024-03-06 16:24:02 +01:00
Guillaume Gomez
4bcaa4fe39 Correctly handle cargo_target_dir 2024-03-06 16:24:02 +01:00
r0cky
f41537981b Add proper cfgs for struct HirIdValidator used only with debug assertions 2024-03-06 22:54:22 +08:00
bors
bfe762e0ed Auto merge of #121967 - nikic:libllvm-linker-script, r=Mark-Simulacrum
Replace libLLVM symlink with linker script

It turns out that the libLLVM-N.so -> libLLVM.so.N.1 symlink is also needed when projects like miri link against librustc_driver.so. As such, we have to distribute it in real rustup components like rustc-dev, rather than only for download-ci-llvm.

To avoid actually distributing symlinks (which are not supported or not fully supported by the rustup infrastructure) replace it with a linker script that does the same thing instead.

Fixes https://github.com/rust-lang/rust/issues/121889.

r? `@cuviper`
2024-03-06 14:51:49 +00:00
roife
e2daee61bc test: add test for float_split_scientific_notation 2024-03-06 22:51:22 +08:00
roife
03420c330e fix: panic when split float numbers in scientific notation 2024-03-06 22:50:50 +08:00
bors
b85d38f7d6 Auto merge of #16755 - Veykril:rustup-bins, r=Veykril
For toolchain binaries use the full path found in $PATH

Fixes https://github.com/rust-lang/rust-analyzer/issues/16754
2024-03-06 14:47:32 +00:00
bors
a79db2aa51 Auto merge of #12401 - MarcusGrass:dedup-nonminimal-bool, r=blyxyas
Remove double expr lint

Related to #12379.

Previously the code manually checked nested binop exprs in unary exprs, but those were caught anyway by `check_expr`. Removed that code path, the path is used in the tests.

---

changelog: [`nonminimal_bool`] Remove duplicate output on nested Binops in Unary exprs.
2024-03-06 13:32:53 +00:00
yukang
5a4ff2779e Fix redundant import errors for preload extern crate 2024-03-06 21:29:33 +08:00
bohan
7303014381 avoid overlapping privacy suggestion for single nested imports 2024-03-06 21:17:12 +08:00
bors
1a55ab30f6 Auto merge of #16769 - ShoyuVanilla:issue-15412, r=Veykril
fix: Function argument type inference with associated type impl trait

Fixes #15412
2024-03-06 12:51:10 +00:00
onur-ozkan
ea22e7851f validate builder::PATH_REMAP in bootstrap tests
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-03-06 15:41:03 +03:00
Deadbeef
1061c8d5e5 remove outdated fixme comment
The `TraitPredicate` no longer has constness as we have desugared it to work with the type system through const generics instead.
2024-03-06 20:39:10 +08:00
onur-ozkan
d413ad8f64 update remap path of rust-analyzer-proc-macro-srv alias
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-03-06 15:36:52 +03:00
bors
3314d5ce4c Auto merge of #121956 - ChrisDenton:srwlock, r=joboet
Windows: Implement condvar, mutex and rwlock using futex

Well, the Windows equivalent: [`WaitOnAddress`,](https://learn.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-waitonaddress) [`WakeByAddressSingle`](https://learn.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-wakebyaddresssingle) and [`WakeByAddressAll`](https://learn.microsoft.com/en-us/windows/win32/api/synchapi/nf-synchapi-wakebyaddressall).

Note that Windows flavoured futexes can be different sizes (1, 2, 4 or 8 bytes). I took advantage of that in the `Mutex` implementation.

I also edited the Mutex implementation a bit more than necessary. I was having trouble keeping in my head what 0, 1 and 2 meant so I replaced them with consts.

I *think* we're maybe spinning a bit much. `WaitOnAddress` seems to be looping quite a bit too. But for now I've keep the implementations the same. I do wonder if it'd be worth reducing or removing our spinning on Windows.

This also adds a new shim to miri, because of course it does.

Fixes #121949
2024-03-06 12:19:40 +00:00
Shoyu Vanilla
a8f56112ea fix: Function argument type inference with associated type impl trait 2024-03-06 21:16:41 +09:00
Zalathar
5ba70bd3ec Replace tuples in DropTree with named structs
This allows us to use real field names instead of tuple element numbers.

Renaming `previous_drops` to `existing_drops_map` clarifies that "previous" was
unrelated to drop order.
2024-03-06 23:09:04 +11:00
Zalathar
fbdac30427 Rename DropTree::add_entry to add_entry_point
This clarifies that we're adding an "entry point", not just adding an "entry"
of some kind.
2024-03-06 23:02:38 +11:00
Zalathar
3bd8df96e1 Assert that link_entry_point sees the expected dummy terminator 2024-03-06 22:32:01 +11:00
Zalathar
30fa6a8b50 Rename DropTreeBuilder::add_entry to link_entry_point 2024-03-06 22:32:01 +11:00
Gurinder Singh
ace436743f Check that return type is WF in typeck
Without it non-WF types could pass typeck and then
later fail in MIR/const eval
2024-03-06 16:51:17 +05:30
bors
09bc67b915 Auto merge of #121679 - lcnr:opaque-wf-check-2, r=oli-obk
stricter hidden type wf-check [based on #115008]

Original work by `@aliemjay` in #115008. A huge thanks to them for originally figuring out this approach ❤️

Fixes https://github.com/rust-lang/rust/issues/114728
Fixes https://github.com/rust-lang/rust/issues/114572

Instead of adding the `WellFormed` obligations when relating opaque types, we now always emit such an obligation when defining the hidden type.

This causes nested opaque types which aren't wf to error, see the comment below for the described impact. I believe this change to be desirable as it significantly reduces complexity by removing special-cases.

It also caused an issue with RPITIT: in defaulted trait methods, we add a `Projection(synthetic_assoc, rpit_of_trait_method)` clause to the `param_env`. This clause is not added to the `ParamEnv` of the nested coroutines. This caused a normalization failure in `fn check_coroutine_obligations` with the new solver. I fixed that by using the env of the typeck root instead.

r? `@oli-obk`
2024-03-06 10:04:26 +00:00
Konrad Höffner
533add895c
add missing PartialOrd impl doc for array 2024-03-06 10:28:56 +01:00
bors
52d8ae791d Auto merge of #16766 - roife:fix-issue-15198, r=Veykril
fix: keep attributes in assist 'generate_delegate_trait'

fix #15198.

This PR address the issue that `impl` generated by `generate_delegate_trait` doesn't keep attributes.
2024-03-06 09:27:49 +00:00
WANG Rui
e81df3f322 loongarch: add frecipe and relax target feature 2024-03-06 17:24:32 +08:00
Konrad Höffner
6223e4c734
Refer to "slice" instead of "vector" in Ord and PartialOrd trait impl of slice 2024-03-06 10:13:05 +01:00
bors
033c1e00b0 Auto merge of #3340 - RalfJung:no-disable-abi-check, r=oli-obk
remove the ability to disable ABI checking

This got deprecated in https://github.com/rust-lang/miri/pull/3071, about half a year ago.

`@rust-lang/miri` I think it's fine to remove this now.
2024-03-06 07:37:33 +00:00
roife
5c9ce7b11f test: add tests for keeping attrs in assist 'generate_delegate_trait' 2024-03-06 15:32:49 +08:00
roife
faea7fca01 fix: keep attrs for assist 'generate_delegate_trait' 2024-03-06 15:32:26 +08:00
Zalathar
9f287dd7b3 Change the documented implicit value of -C instrument-coverage to =yes 2024-03-06 17:50:13 +11:00
Zalathar
250e697834 Additional comments for lowering if 2024-03-06 17:08:28 +11:00
Zalathar
3402f39bcb Clarify lowering the else arm into the else block 2024-03-06 17:08:28 +11:00
bors
80399064af Auto merge of #119455 - Mark-Simulacrum:relative-spans, r=cjgillot
Embed length of offset/position into Span tag byte

This cuts the average bytes/relative span from 3.5 to 3.2 on libcore, ultimately saving ~400kb of data.
2024-03-06 05:57:56 +00:00
Jubilee Young
23623a08d6 Explicitly assign constructed C++ classes
C++ style guides I am aware of recommend specifically preferring = syntax
for any classes with fairly obvious constructors[^0] that do not perform
any complicated logic in their constructor. I contend that all constructors
that the `rustc_llvm` code uses qualify. This has only become more common
since C++ 17 guaranteed many cases of copy initialization elision.

The other detail is that I tried to ask another contributor with
infinitely more C++ experience than me (i.e. any) what this constructor
syntax was, and they thought it was a macro. I know of no other language
that has adopted this same syntax. As the rustc codebase features many
contributors experienced in many other languages, using a less...
unique... style has many other benefits in making this code more
lucid and maintainable, which is something it direly needs.

[^0]: e.g. https://abseil.io/tips/88
2024-03-05 21:15:56 -08:00
Jubilee Young
f7b621cfab Clarify FatalErrorHandler
Clarify the FatalErrorHandler API that we use:
- Identify rustc's LLVM ERRORs by prefixing them
- Comment heavily on its interior, while we are here
2024-03-05 20:52:54 -08:00
Zalathar
7396fd1fa0 Clarify how lowering if produces then/else blocks
This makes it easier to see that the call to `in_scope` returns both the then
block and the else block. The rather confusing `unpack!` step is confined to
its own separate line.

(This patch reindents several lines, so using "ignore whitespace" is
recommended in order to focus on the actual changes.)
2024-03-06 14:57:00 +11:00
John Kåre Alsaker
9707e103ea Avoid the double lock around EncoderState 2024-03-06 04:40:39 +01:00
Yuri Astrakhan
3d0d0ce740 Optimize write with as_const_str for shorter code 2024-03-05 22:39:44 -05:00
John Kåre Alsaker
a2499bdfbe Remove profiling from intern_node 2024-03-06 04:31:56 +01:00
Nicholas Nethercote
3591e77b35 Add missing #[rustc_lint_diagnostics] attributes.
Prior to the previous commit, `#[rust_lint_diagnostics]` attributes
could only be used on methods with an `impl Into<{D,Subd}iagMessage>`
parameter. But there are many other nearby diagnostic methods (e.g.
`Diag::span`) that don't take such a parameter and should have the
attribute.

This commit adds the missing attribute to these `Diag` methods. This
requires adding some missing
`#[allow(rustc::diagnostic_outside_of_impl)]` markers at call sites to
these methods.
2024-03-06 14:19:38 +11:00
Nicholas Nethercote
b7d58eef4b Rewrite the untranslatable_diagnostic lint.
Currently it only checks calls to functions marked with
`#[rustc_lint_diagnostics]`. This commit changes it to check calls to
any function with an `impl Into<{D,Subd}iagMessage>` parameter. This
greatly improves its coverage and doesn't rely on people remembering to
add `#[rustc_lint_diagnostics]`.

The commit also adds `#[allow(rustc::untranslatable_diagnostic)`]
attributes to places that need it that are caught by the improved lint.
These places that might be easy to convert to translatable diagnostics.

Finally, it also:
- Expands and corrects some comments.
- Does some minor formatting improvements.
- Adds missing `DecorateLint` cases to
  `tests/ui-fulldeps/internal-lints/diagnostics.rs`.
2024-03-06 14:19:01 +11:00
John Kåre Alsaker
29cc76f0fc Add a profiler reference to GraphEncoder 2024-03-06 04:17:17 +01:00
bors
b77e0184a9 Auto merge of #122045 - matthiaskrgr:rollup-5l3vpn7, r=matthiaskrgr
Rollup of 9 pull requests

Successful merges:

 - #121065 (Add basic i18n guidance for `Display`)
 - #121744 (Stop using Bubble in coherence and instead emulate it with an intercrate check)
 - #121829 (Dummy tweaks (attempt 2))
 - #121857 (Implement async closure signature deduction)
 - #121894 (const_eval_select: make it safe but be careful with what we expose on stable for now)
 - #122014 (Change some attributes to only_local.)
 - #122016 (will_wake tests fail on Miri and that is expected)
 - #122018 (only set noalias on Box with the global allocator)
 - #122028 (Remove some dead code)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-03-06 02:18:22 +00:00
Wesley Wiser
36d271fd9c Update src/doc/rustc/src/platform-support.md 2024-03-06 10:10:33 +08:00
WANG Rui
95e38470b7 tests: Add loongarch64-unknown-linux-musl target 2024-03-06 10:10:33 +08:00
WANG Rui
d756375234 Add new Tier-3 target: loongarch64-unknown-linux-musl
MCP: https://github.com/rust-lang/compiler-team/issues/518
2024-03-06 10:10:32 +08:00