531 Commits

Author SHA1 Message Date
BenjaminBrienen
b19ef6b046 fix doc tests 2025-02-27 14:58:46 +01:00
BenjaminBrienen
bd7375a58f enable doctest 2025-02-27 14:58:46 +01:00
Chayim Refael Friedman
87ed04bac0 Support target features implications in target_feature 1.1
We vendor the list of implications, which isn't nice, but t-compiler doesn't want to make rustc_target available to us.
2025-02-25 04:50:26 +02:00
Lukas Wirth
6b32c8329f Improve unset OUT_DIR error message 2025-02-20 19:00:23 +01:00
Chayim Refael Friedman
eb69d3734c Fix detection of ref patterns for path patterns
I was wrong on #19127, I thought hir-def resolver is enough for them, but it turns out not because of paths like `<Enum>::Variant` and `Type::AssocThatIsEnum::Variant`.
2025-02-17 11:51:29 +02:00
Lukas Wirth
09db657439
Merge pull request #19127 from ChayimFriedman2/different-generic-args
feat: Refactor path lowering and serve a new path diagnostic
2025-02-17 08:30:10 +00:00
Chayim Refael Friedman
55c04ab371 Refactor path lowering
And add a new diagnostic for non-`Fn` parenthesized generic args.

Path lowering started to look like a mess, with each function carrying additional parameters for the diagnostic callback (since paths can occur both in type and in expression/pattern position, and their diagnostic handling is different) and the segment index, for the diagnostics report. So I refactored it from stateless functions on `TyLoweringContext` into stateful struct, `PathLoweringContext`, that tracks the process of lowering a path from resolution til assoc types selection.
2025-02-16 19:44:50 +02:00
Lukas Wirth
e6ea353d94 Improve error recovery when method-calling an assoc function 2025-02-16 11:49:48 +01:00
Lukas Wirth
622ef64f93
Merge pull request #18995 from alibektas/12210
fix: Lower range pattern bounds to expressions
2025-02-12 11:58:33 +00:00
Lukas Wirth
5af2d6abea Propogate error types in mir type projections 2025-02-12 09:24:33 +01:00
Shoyu Vanilla
b7b4dd5afc fix: Resolve projection types before checking casts 2025-02-07 09:51:32 +09:00
Lukas Wirth
465844c3be Do not use make use of InferenceResult::has_errors flag for mir building
It generaly does not work as expected right now as we fallback type parameters to errors
2025-02-03 12:26:06 +01:00
Ali Bektas
d8779b4a0e Make higher levels adapt Bodys exprs having ExprOrPatId values 2025-02-03 12:14:13 +01:00
David Barsky
bc10a44798
Merge pull request #19063 from davidbarsky/davidbarsky/backout-struct-default-fields
internal: backout `hir-*` changes from #19001
2025-01-28 16:45:45 +00:00
Lukas Wirth
07a09c154e
Merge pull request #19015 from Wilfred/mdbook
manual: Convert to mdbook
2025-01-28 16:19:37 +00:00
David Barsky
be3307450f Back out "feat: Implement default-field-values"
This backs out commit 7de0b2e75a541b98f735ee6fcd12d326be38d23f.
2025-01-27 17:30:35 -05:00
David Barsky
35f6123059 Back out "Handle missing fields diagnostics"
This backs out commit e6a103ae50699db1dbb0676d075a4bcda2247939.
2025-01-27 17:30:35 -05:00
Lukas Wirth
7c387ed3a7
Merge pull request #19051 from ChayimFriedman2/fn-ptr-unsafe
fix: Report calling unsafe fn pointer as unsafe
2025-01-27 17:42:06 +00:00
Lukas Wirth
8384bc5c55
Merge pull request #19049 from ChayimFriedman2/add-reference-ty
minor: Remove duplicate method from `hir::Type`
2025-01-27 17:40:09 +00:00
Chayim Refael Friedman
9c27e0251c Report calling unsafe fn pointer as unsafe 2025-01-27 18:57:31 +02:00
Chayim Refael Friedman
028c47999d Remove duplicate method from hir::Type
I added it by mistake in #18927.

I chose to keep the method as not static, because it's more comfortable, and keep the name `add_reference()` and not `reference()`, because it is clearer and better matches `strip_reference[s]()`.
2025-01-27 18:40:01 +02:00
Chayim Refael Friedman
55c63abc59 Fix #[rustc_deprecated_safe_2024]
It should be considered by the edition of the caller, not the callee.

Technically we still don't do it correctly - we need the span of the method name (if it comes from a macro), but we don't keep it and this is good enough for now.
2025-01-27 14:35:20 +02:00
Shoyu Vanilla
e6a103ae50 Handle missing fields diagnostics 2025-01-27 19:38:39 +09:00
Shoyu Vanilla
7de0b2e75a feat: Implement default-field-values 2025-01-27 19:38:35 +09:00
Chayim Refael Friedman
791b1ebfd4 Support RFC 2396
AKA. target_feature 1.1, or non unsafe target_feature.
2025-01-26 23:31:58 +02:00
Lukas Wirth
b31f53e0d6 Fix flyimport not filtering via stability of import path 2025-01-25 12:18:54 +01:00
Wilfred Hughes
deda58e8f1 manual: Convert to mdbook
Split manual.adoc into markdown files, one for each chapter.

For the parts of the manual that are generated from source code doc
comments, update the comments to use markdown syntax and update the
code generators to write to `generated.md` files.

For the weekly release, stop copying the .adoc files to the
`rust-analyzer/rust-analyzer.github.io` at release time. Instead,
we'll sync the manual hourly from this repository.

See https://github.com/rust-analyzer/rust-analyzer.github.io/pull/226
for the sync. This PR should be merged first, and that PR needs to be
merged before the next weekly release.

This change is based on #15795, but rebased and updated. I've also
manually checked each page for markdown syntax issues and fixed any I
encountered.

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
Co-authored-by: Josh Rotenberg <joshrotenberg@gmail.com>
2025-01-24 13:23:22 -08:00
Lukas Wirth
76585539f5 Cleanup Name string rendering 2025-01-21 10:05:32 +01:00
Chayim Refael Friedman
044c831f7f Fix a bug where enum variants were not considered properly in type ns resolution
They should be considered just as well as in value ns, for example for struct literals.
2025-01-19 06:31:23 +02:00
Lukas Wirth
3e2848dc59 Add missing #[rust_analyzer::rust_fixture] annotations 2025-01-16 10:51:57 +01:00
Waffle Lapkin
dde6ab4983
update chalk
this brings in support from trait upcasting, yay!
(and as such fixes a test)
2025-01-16 00:38:36 +01:00
Waffle Lapkin
772266abeb
add a test for trait upcasting type mismatch
this adds a test asserting *incorrect* behavior that can be seen in
<https://github.com/rust-lang/rust-analyzer/issues/18083>, and a test
asserting the *correct* behavior for the case of no super traits.
2025-01-16 00:38:36 +01:00
Chayim Refael Friedman
8ab18927ce Fix another bug when reaching macro expansion limit caused a stack overflow
This time without missing bindings.

Solve it by returning to the old ways, i.e. just throw the extra nodes away.

In other words, I acknowledge defeat.
2025-01-13 15:55:30 +02:00
Lukas Wirth
bf669dab84 Re-implement rust string highlighting via tool attribute 2025-01-10 13:49:35 +01:00
Lukas Wirth
3fe50ef83c
Merge pull request #18861 from ChayimFriedman2/await-edition
fix: Make edition per-token, not per-file
2025-01-09 10:20:11 +00:00
Lukas Wirth
646e96f68d minor: Fixup macro error kinds 2025-01-09 09:38:58 +01:00
Chayim Refael Friedman
97afb7bfba Make edition per-token, not per-file
More correctly, *also* per-token. Because as it turns out, while the top-level edition affects parsing (I think), the per-token edition affects escaping of identifiers/keywords.
2025-01-09 05:43:08 +02:00
Chayim Refael Friedman
0d4af7bce3 Fix a bug with missing binding in MBE
We should immediately mark them as finished, on the first entry.

The funny (or sad) part was that this bug was pre-existing, but previously to #18327, it was causing us to generate bindings non-stop, 65535 of them, until we get to the hardcoded repetition limit, and then throw it all away. And it was so Blazingly Fast that nobody noticed.

With #18327 however, this is still what happens, except that now instead of *merging* the fragments into the result, we write them on-demand. Meaning that when we hit the limit, we've already written all previous entries. This is a minor change, I thought for myself when I was writing this, and it's actually for the better, so who cares. Minor change? Not so fast. This caused us to emit 65535 repetitions, all of which the MBE infra needs to handle when calling other macros with the expansion, and convert to rowan tree etc., which resulted a *massive* hang.

The test (and also `analysis-stats`) used to crash with stack overflow on this macro, because we were dropping some crazily deep rowan tree. Now they work properly. Because I am lazy, and also because I could not find the exact conditions that causes a macro match but with a missing binding, I just copied all macros from tracing. Easy.
2025-01-07 23:04:53 +02:00
Lukas Wirth
e462ee79e4 fix: Handle newstyle rustc_intrinsic safety correctly 2025-01-06 09:47:31 +01:00
Chayim Refael Friedman
664e1a18c9 Consider Enum::Variant even when it comes from a different crate 2024-12-28 22:43:51 +02:00
Chayim Refael Friedman
cc11e1a796 Unify handling of path diagnostics in hir-ty
Because it was a mess.

Previously, pretty much you had to handle all path diagnostics manually: remember to check for them and handle them. Now, we wrap the resolver in `TyLoweringContext` and ensure proper error reporting.

This means that you don't have to worry about them: most of the things are handled automatically, and things that cannot will create a compile-time error (forcing you top `drop(ty_lowering_context);`) if forgotten, instead of silently dropping the diagnostics.

The real place for error reporting is in the hir-def resolver, because there are other things resolving, both in hir-ty and in hir-def, and they all need to ensure proper diagnostics. But this is a good start, and future compatible.

This commit also ensures proper path diagnostics for value/pattern paths, which is why it's marked "feat".
2024-12-24 18:58:52 +02:00
Lukas Wirth
dfa46292b6 Taking a raw ref of a deref is always safe 2024-12-18 11:32:29 +01:00
Lukas Wirth
0a706f7d2a
Merge pull request #18700 from ChayimFriedman2/dyn-send
fix: Fix a panic with a diagnostics fix when a keyword is used as a field
2024-12-16 21:54:28 +00:00
Chayim Refael Friedman
8277c0336e Fix a panic with a diagnostics fix when a keyword is used as a field
I found it easiest to fix in the quickfix code, and not deeper (e.g. body lowering).
2024-12-16 19:58:29 +02:00
Chayim Refael Friedman
54ce1dda3a Report unresolved idents for implicit captures in format_args!()
And also a bit of cleanup by storing the capture's span with the open quote included.
2024-12-16 10:10:26 +02:00
Philipp Hofer
04ac6f8405 Fix typo in error message for invalid casting
Corrected the spelling of "defererence" to "dereference" in the error message that informs users about invalid casting requirements.
2024-12-12 15:42:21 +01:00
Chayim Refael Friedman
0b7a6f38d7 Properly handle different defaults for severity of lints
Previously all lints were assumed to be `#[warn]`, and we had a hand-coded list of `#[allow]` exceptions. Now the severity is autogenerated from rustdoc output.

Also support lints that change status between editions, and the `warnings` lint group.
2024-12-11 20:48:41 +02:00
Giga Bowser
68b85ce66f minor: Migrate remove_unnecessary_wrapper to SyntaxEditor 2024-12-09 21:16:31 -05:00
Giga Bowser
d881208d1b Add diagnostic fix to remove unnecessary wrapper in type mismatch
I also reorganized the tests in a more logical order, and removed the redundant `test_` prefix from their names.
2024-12-09 21:15:15 -05:00
Lukas Wirth
55a7ee8065 fix: Non-exhaustive structs may be empty 2024-12-09 14:12:22 +01:00