Commit graph

271803 commits

Author SHA1 Message Date
Lukas Wirth
085ea34357 Parse lifetime bounds in lifetime param into TypeBoundList
This mainly aids in error recovery but also makes it a bit easier to handle lifetime resolution.
While doing so it also came apparent that we were not actually lowering lifetime outlives relationships within lifetime parameter declaration bounds, so this fixes that.
2024-12-05 17:52:02 +01:00
Lukas Wirth
a19e1dffe5 fix: Fix parsing of integer/keyword name refs in various places 2024-12-05 15:27:50 +01:00
Lukas Wirth
3640db2190
Merge pull request from ChayimFriedman2/proc-macro-warn
fix: Do not report warnings from proc macros, ever
2024-12-04 16:39:54 +00:00
Chayim Refael Friedman
d5f3ed89cb Do not report warnings from proc macros, ever 2024-12-04 15:25:01 +02:00
Lukas Wirth
39aab9839c
Merge pull request from ChayimFriedman2/different-generic-args
feat: Complete diagnostics in ty lowering groundwork and serve a first diagnostic 🎉
2024-12-04 13:17:05 +00:00
Chayim Refael Friedman
1aae52210a Complete diagnostics in ty lowering groundwork
Implement diagnostics in all places left: generics (predicates, defaults, const params' types), fields, and type aliases.

Unfortunately this results in a 20mb addition in `analysis-stats .` due to many type methods returning an addition diagnostics result now (even if it's `None` in most cases). I'm not sure if this can be improved.

An alternative strategy that can prevent the memory usage growth is to never produce diagnostics in hir-ty methods. Instead, lower all types in the hir crate when computing diagnostics from scratch (with diagnostics this time). But this has two serious disadvantages:
 1. This can cause code duplication (although it can probably be not that bad, it will still mean a lot more code).
 2. I believe we eventually want to compute diagnostics for the *entire* workspace (either on-type or on-save or something alike), so users can know when they have diagnostics even in inactive files. Choosing this approach will mean we lose all precomputed salsa queries. For one file this is fine, for the whole workspace this will be very slow.
2024-12-04 14:22:56 +02:00
Chayim Refael Friedman
63acf60253 Lay the foundation for diagnostics in ty lowering, and implement a first diagnostic
The diagnostic implemented is a simple one (E0109). It serves as a test for the new foundation.

This commit only implements diagnostics for type in bodies and body-carrying signatures; the next commit will include diagnostics in the rest of the things.

Also fix one weird bug that was detected when implementing this that caused `Fn::(A, B) -> C` (which is a valid, if bizarre, alternative syntax to `Fn(A, B) -> C` to lower incorrectly.

And also fix a maybe-bug where parentheses were sneaked into a code string needlessly; this was not detected until now because the parentheses were removed (by the make-AST family API), but with a change in this commit they are now inserted. So fix that too.
2024-12-04 14:22:56 +02:00
Chayim Refael Friedman
2a949d8725 Store some hir_def Paths in the type ref source maps
Most paths are types and therefore already are in the source map, but the trait in impl trait and in bounds are not.

We do this by storing them basically as `TypeRef`s. For convenience, I created a wrapper around `TypeRefId` called `PathId` that always stores a path, and implemented indexing from the types map to it.

Fortunately, this change impacts memory usage negligibly (adds 2mb to `analysis-stats .`, but that could be just fluff). Probably because there aren't that many trait bounds and impl traits, and this also shrinks `TypeBound` by 8 bytes.

I also added an accessor to `TypesSourceMap` to get the source code, which will be needed for diagnostics.
2024-12-04 14:09:50 +02:00
Lukas Wirth
609621db7f
Merge pull request from Veykril/push-nokqpzuqtmww
Fix parsing of parenthesized type args and RTN
2024-12-04 11:02:49 +00:00
Lukas Wirth
2b4dc9caac Fix parsing of parenthesized type args and RTN 2024-12-04 11:48:47 +01:00
Lukas Wirth
1b54eea983
Merge pull request from ChayimFriedman2/unsafe-coverage
feat: Extend reported unsafe operations
2024-12-04 06:40:40 +00:00
Lukas Wirth
0370527456
Merge pull request from ChayimFriedman2/complete-helpers
feat: Complete derive helper attributes
2024-12-04 06:33:29 +00:00
Chayim Refael Friedman
9296578960 Extend reported unsafe operations
We add union fields access (in both expressions and patterns) and inline assembly.

That completes the unsafe check (there are some other unsafe things but they are unstable), and so also opens the door to reporting unused unsafe without annoying people about their not-unused unsafe blocks.
2024-12-04 08:27:59 +02:00
Chayim Refael Friedman
d2ee916c30 Complete derive helper attributes
Only their names, anything can go inside.
2024-12-04 08:20:41 +02:00
Lukas Wirth
2f3e352088
Merge pull request from Veykril/push-rrozmpnyknkx
Better parser recovery for paths
2024-12-04 06:18:39 +00:00
Lukas Wirth
1e47f7d073 Update mbe test output 2024-12-04 07:03:11 +01:00
Lukas Wirth
7efe7eb376 fix: Don't create empty path nodes 2024-12-04 07:01:45 +01:00
Lukas Wirth
05aac8cd69 Better parser recovery for incomplete attributes 2024-12-04 06:45:59 +01:00
Lukas Wirth
d83f0fecb8
Merge pull request from tareknaser/configure_typing_exclude_chars
Add Configurable Option to Exclude Trigger Characters for Typing Assists
2024-12-04 05:17:40 +00:00
Lukas Wirth
c1c6e71edc
Merge pull request from ChayimFriedman2/wildcard-imports
fix: Fixed another bug with glob imports
2024-12-04 05:15:46 +00:00
Laurențiu Nicola
272aecadd1
Merge pull request from markmurphydev/remove_platform_intrinsic
Remove references to platform-intrinsic ABI
2024-12-04 04:07:25 +00:00
Laurențiu Nicola
941616e6de
Merge pull request from ChayimFriedman2/pattern-record-no-record
fix: Fix shadowing of record enum variant in patterns
2024-12-04 03:51:41 +00:00
Laurențiu Nicola
01870ba9d7
Merge pull request from ChayimFriedman2/improve-soundness-just-a-bit
minor: Improve soundness a bit by making `TaggedArcPtr::try_as_arc_owned()` unsafe
2024-12-04 03:44:01 +00:00
Chayim Refael Friedman
45f0e817bb Fix shadowing of record enum variant in patterns 2024-12-04 04:02:54 +02:00
Chayim Refael Friedman
0d328a81ec Improve soundness a bit by making TaggedArcPtr::try_as_arc_owned() unsafe
Since the `ManuallyDrop` it returns can be safely used to consume the `Arc`, which is can cause UB if done incorrectly. See .
2024-12-04 03:38:37 +02:00
Chayim Refael Friedman
bc003049cf Fixed another bug with glob imports
When a glob import overriding the visibility of a previous glob import was not properly resolved when the items are only available in the next fixpoint iteration.

The bug was hidden until .
2024-12-04 03:15:32 +02:00
Mark Murphy
337725ddc8 Remove references to platform-intrinsic ABI 2024-12-03 17:30:17 -05:00
Tarek
68cd57940a chore: deprecate typing.autoClosingAngleBrackets configuration
Signed-off-by: Tarek <tareknaser360@gmail.com>
2024-12-03 22:38:51 +02:00
Tarek
b94c5355b2 internal: Make exclude characters for typing assists configurable, default to None
Signed-off-by: Tarek <tareknaser360@gmail.com>
2024-12-03 22:38:51 +02:00
Lukas Wirth
fef7ca07bf
Merge pull request from ChayimFriedman2/issue-17321
fix: Fix a bug when synthetic AST node were searched in the AST ID map and caused panics
2024-12-03 15:39:52 +00:00
Lukas Wirth
f4c968ac35
Merge pull request from darichey/status-bar-visibility
vscode: Only show status bar item in relevant files
2024-12-03 14:53:35 +00:00
David Richey
97feb03344 Only show status bar item in relevant files 2024-12-03 14:40:26 +00:00
Lukas Wirth
f555fc42b7
Merge pull request from SomeoneToIgnore/proper-resolve-advertisement
Advertise completions and inlay hints resolve server capabilities based on the client capabilities
2024-12-03 09:24:14 +00:00
Kirill Bulatov
aede6e1365 Advertise completions and inlay hints resolve server capabilities based on the client capabilities. 2024-12-03 10:51:17 +02:00
Lukas Wirth
86387c8feb
Merge pull request from markmurphydev/macro_name_raw_variable
Add macro expansion test for raw variable names
2024-12-02 16:23:07 +00:00
Lukas Wirth
54a1a96b57
Merge pull request from Veykril/push-urrlrursyrws
fix: Fix syntax fixup inserting unnecessary semicolons
2024-12-02 12:50:28 +00:00
Lukas Wirth
03ae70dcac fix: Fix syntax fixup inserting unnecessary semicolons 2024-12-02 13:35:58 +01:00
Lukas Wirth
0946570e64
Merge pull request from Veykril/push-kolxkxyntxtt
fix: Fix debug configuration querying not inheriting environment
2024-12-02 12:16:33 +00:00
Lukas Wirth
5a52142eea Fix debug configuration querying not inheriting environment 2024-12-02 13:02:31 +01:00
Laurențiu Nicola
b747197a82
Merge pull request from compiler-errors/redundant-dyn-atb
Remove redundant associated type bounds from `dyn TypeFolder`
2024-11-30 03:55:01 +00:00
Michael Goulet
fb662a2e5c Remove redundant associated type bounds from dyn 2024-11-30 03:33:33 +00:00
Laurențiu Nicola
0d2b78529a
Merge pull request from lnicola/sync-from-rust
minor: fix proc macro test
2024-11-28 19:29:11 +00:00
Laurențiu Nicola
ad6e993110 Merge from rust-lang/rust 2024-11-28 16:01:45 +02:00
Dominik Stolz
d38f01312c Remove hir::ArrayLen, introduce ConstArgKind::Infer
Remove Node::ArrayLenInfer
2024-11-30 21:00:31 +01:00
Laurențiu Nicola
f3d83ba114 Preparing for merge from rust-lang/rust 2024-11-28 16:01:40 +02:00
bors
9b4d7c6a40 Auto merge of - GuillaumeGomez:rollup-js22ovb, r=GuillaumeGomez
Rollup of 7 pull requests

Successful merges:

 -  (Don't type error if we fail to coerce `Pin<T>` because it doesnt contain a ref)
 -  (Fix clobber_abi in RV32E and RV64E inline assembly)
 -  (Support predicate registers (clobber-only) in Hexagon inline assembly)
 -  (Fix handling of x18 in AArch64 inline assembly on ohos/trusty or with -Zfixed-x18)
 -  (fix confusing diagnostic for reserved `##`)
 -  (Small doc fixes in `rustc_codegen_ssa`)
 -  (Trim extra space in 'repeated `mut`' diagnostic)

r? `@ghost`
`@rustbot` modify labels: rollup
2024-11-28 11:20:29 +00:00
Guillaume Gomez
22c5bb0bdc
Rollup merge of - clubby789:mut-mut-space, r=jieyouxu
Trim extra space in 'repeated `mut`' diagnostic

Trim an extra space when removing repeated `mut`.

Also an extra test for even more repeated `mut`s
2024-11-28 12:06:07 +01:00
Guillaume Gomez
7201f70c37
Rollup merge of - Monadic-Cat:small_doc_fixes, r=bjorn3
Small doc fixes in `rustc_codegen_ssa`

I'm trying to make a toy codegen backend for `rustc`, and I got confused for a few minutes about what `codegen_backend` was referring to in the `CodegenBackend::join_codegen` docs.

Experimentally, it looks like the result of `CodegenBackend::codegen_crate` is passed to `CodegenBackend::join_codegen`, so this updates the docs to refer to that. This time using intra-doc links to hopefully cause people to notice if that gets out of date again.

Also, added another intra-doc link nearby, on `CodegenBackend::link`, for the same reason.
2024-11-28 12:06:07 +01:00
Guillaume Gomez
ca71c8fe5e
Rollup merge of - pitaj:reserve-guarded-strings, r=fee1-dead
fix confusing diagnostic for reserved `##`

Closes 
2024-11-28 12:06:04 +01:00
Guillaume Gomez
23bab15d73
Rollup merge of - taiki-e:aarch64-asm-x18, r=Amanieu
Fix handling of x18 in AArch64 inline assembly on ohos/trusty or with -Zfixed-x18

Currently AArch64 inline assembly allows using x18 on ohos/trusty or with -Zfixed-x18.

7db7489f9b/compiler/rustc_target/src/asm/aarch64.rs (L74-L76)

However, x18 is reserved in these environments and should not be allowed in the input/output operands of inline assemblies as it is in Android, Windows, etc..

7db7489f9b/compiler/rustc_target/src/spec/targets/aarch64_unknown_linux_ohos.rs (L19)
7db7489f9b/compiler/rustc_target/src/spec/targets/aarch64_unknown_trusty.rs (L18)
7db7489f9b/compiler/rustc_codegen_llvm/src/llvm_util.rs (L764-L771)

(As for ohos, +reserve-x18 is [redundant](c417b7a695 (diff-0ddf23e0bf2b28b2d05f842f087d1e6f694e8e06d1765e8d0f10d47fddcdff9c)) since 7a966b9188 that starting using llvm's ohos targets. So removed it from target-spec.)

This fix may potentially break the code for tier 2 target (aarch64-unknown-linux-ohos). (As for others, aarch64-unknown-trusty is tier 3 and -Zfixed-x18 is unstable so breaking them should be fine.)
However, in any case, it seems suspicious that the code that is broken by this was sound.

r? `@Amanieu`

`@rustbot` label O-AArch64 +A-inline-assembly
2024-11-28 12:06:02 +01:00