Commit graph

258207 commits

Author SHA1 Message Date
Lukas Wirth
87a62044fe HasGenericArgs syntax trait 2024-07-07 11:18:28 +02:00
Lukas Wirth
ba9f93e845 fix: Fix callHierarchy LSP violation 2024-07-07 10:14:47 +02:00
Lukas Wirth
77bca5306c Fix stale reference in architecture.md 2024-07-07 09:19:09 +02:00
Lukas Wirth
7a2c8c2b39 Run codegen commands as tests if their results are commited 2024-07-07 09:14:50 +02:00
Lukas Wirth
6f346c91be Re-implement tidy as an xtask action 2024-07-07 09:12:16 +02:00
Lukas Wirth
d00f4749b1 re-generate feature docs in release 2024-07-07 09:01:35 +02:00
Lukas Wirth
58ec8b2028 Drop sourcegen 2024-07-07 09:00:19 +02:00
Lukas Wirth
2d14f47eb7 Move feature-doc generation to xtask codegen 2024-07-07 09:00:18 +02:00
Lukas Wirth
4465fff75e Update hover test fixture 2024-07-07 08:55:10 +02:00
Lukas Wirth
e96601bbe0 Move parser test generation to xtask 2024-07-07 08:51:19 +02:00
Lukas Wirth
004a24e808 Allow new clippy lint in test 2024-07-07 08:41:41 +02:00
Lukas Wirth
7deebd6792 Fix stop_watch on linux 2024-07-07 08:40:41 +02:00
Lukas Wirth
7dfc583b0e Update generated lint definitions 2024-07-07 08:35:18 +02:00
Lukas Wirth
20dc1b615d Drop unused profile things 2024-07-07 08:24:10 +02:00
Lukas Wirth
faa13cbe20 fix: Fix parameter completions using macro expanded source ranges 2024-07-07 08:11:16 +02:00
Lukas Wirth
070f95c12e Move capability querying out of the config module 2024-07-07 07:42:12 +02:00
bors
9194c7a5e9 Auto merge of #17551 - Veykril:has-errors, r=Veykril
Also mark InferenceResult::has_errors flag when there are error types

Should work around https://github.com/rust-lang/rust-analyzer/issues/15090#issuecomment-2211647133
2024-07-06 18:56:23 +00:00
Lukas Wirth
725e15fc80 Also mark InferenceResult::has_errors flag when there are error types 2024-07-06 20:45:23 +02:00
bors
e907f8175c Auto merge of #17549 - Veykril:runnables-fix, r=Veykril
fix: Fix runnables being incorrectly constructed

I've misunderstood parts of the code here which caused runnables to arbitrarily break :) (I have yet to understand the conditions that made them break though, there is some odd caching involved I feel like ...)
Fixes https://github.com/rust-lang/rust-analyzer/issues/17402
2024-07-06 18:24:30 +00:00
Lukas Wirth
807fdd6ab1 fix: Fix runnables being incorrectly constructed 2024-07-06 20:23:14 +02:00
bors
162ecedd99 Auto merge of #17548 - Veykril:debug-fix, r=Veykril
fix: Fix passing `message-format` after -- in debugging

Fixes https://github.com/rust-lang/rust-analyzer/pull/17495#issuecomment-2211717224
2024-07-06 16:04:53 +00:00
Lukas Wirth
28981813e6 Fix passing message-format after -- in debugging 2024-07-06 18:03:33 +02:00
bors
98238b53b9 Auto merge of #17547 - Veykril:runnables-env, r=Veykril
internal: Clean up runnable lsp extension

This feels like a natural addition to me, and also allows us to drop the expect-test hardcoding from the extension. Additionally, `cargoExtraArgs` is pointless, all the client will do is merge it with `cargoArgs` so the server can do that instead of delegating that to the client.
2024-07-06 15:02:41 +00:00
Lukas Wirth
ac4e6c3046 Don't emit current dir as cwd for runnables 2024-07-06 16:44:57 +02:00
Lukas Wirth
9959546c8a Flatten cargoExtraArgs away from the runnable lsp extension 2024-07-06 16:36:27 +02:00
Lukas Wirth
0859772dbe Add environment to runnable lsp extension 2024-07-06 16:20:25 +02:00
bors
e33dcc6ab2 Auto merge of #17508 - jjoeldaniel:landing-page, r=Veykril
feat: Add landing/faq walkthrough pages

This is a basic implementation of a landing and FAQ page; I've included the bare-bones information as well as a [recommended section on inlay hints](https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frust-analyzer/topic/Landing.20Page/near/446135321).

I've also added `rust-analyzer: Open Walkthrough` and `rust-analyzer: Open FAQ` commands for ease of access.

I am hoping to create a small list of FAQ to include that might be useful as well as any other information I may have missed in the landing page. Feel free to share any suggestions!

![landing/faq page demo](https://github.com/rust-lang/rust-analyzer/assets/100006388/4644e4f0-4555-4b29-83c1-b048084ad63d)

cc #13351
2024-07-06 13:59:36 +00:00
bors
c412ea9ac4 Auto merge of #17546 - Veykril:unresolved-self, r=Veykril
internal: Diagnose unresolved self value in path expression
2024-07-06 13:46:01 +00:00
Lukas Wirth
e8be2a0ac5 Diagnose unresolved self value in path expression 2024-07-06 15:44:12 +02:00
bors
fc92ee8f24 Auto merge of #17541 - ShoyuVanilla:nested-impl-traits, r=Veykril
Disallow nested impl traits

Fixes #17498

The above issue is due to formatting self referencing, recursive bound like `Implemented(^0.0: TraitId(0)<[?0 := ^0.0]>)` on the codes like;

```rust
trait Foo<T> {}

trait Bar {}

fn test(foo: impl Foo<impl Bar>) { ... }
```

When lowering predicate `impl Foo<impl Bar>` in `trait_environment_query`, the outer `impl Foo<...>` is treated as predicates, so the first `TypeRef` that passes the following code is `impl Bar`;

cae997e338/crates/hir-ty/src/lower.rs (L376-L400)

and thus the `idx` is `0` in the above context.

But the following code sets `self_ty` as the `BoundVar` with `idx = 0` because the target param id for predicate  `impl Foo<...>` is `0` since `impl Foo` is the first generic-like parameter of `fn test`;

cae997e338/crates/hir-ty/src/lower.rs (L998-L1025)

For the codes like;

```rust
trait Foo {
    type Assoc;
}

trait Bar {}

fn test(foo: impl Foo<Assoc = impl Bar>) { ... }
```

similar recursive bound doesn't happen because the following codes ***"count the number of `impl Trait` things that appear before the target of our `bound`."***

cae997e338/crates/hir-ty/src/lower.rs (L1168-L1199)

Instead of doing similar thing like nested `impl Foo<impl Bar>` thing, this PR lowers such nested impl traits into error types in the similar manner as the rustc does in the following lines (and of course, allows lowering and inferencing nested impl traits for the cases that rustc permits);

- e2cf31a614/compiler/rustc_ast_passes/src/ast_validation.rs (L802-L813)
- 7b21c18fe4/compiler/rustc_ast_passes/src/ast_validation.rs (L1299-L1314)

(Though rustc emits [E0666😈](https://doc.rust-lang.org/error_codes/E0666.html), I skipped diagnostics since gathering diagnostics in `hir-def` has no conventions so far 😅)
2024-07-05 10:28:30 +00:00
Shoyu Vanilla
90814f4170 Disallow nested impl traits 2024-07-04 23:31:55 +09:00
bors
58bf5936c0 Auto merge of #17536 - Veykril:syntax-diags, r=Veykril
fix: Don't emit semantic diagnostics in files with a lot of syntax errors

These will only add to the noise when something very unexpected breaks or where parser recovery fails to kick in.
2024-07-03 09:01:48 +00:00
Lukas Wirth
87da256395 fix: Don't emit semantic diagnostics in files with a lot of syntax errors 2024-07-03 10:59:46 +02:00
bors
ef54168778 Auto merge of #17535 - Veykril:macro-def-syn, r=Veykril
fix: Fix up the syntax tree for macro 2.0

Fixes https://github.com/rust-lang/rust-analyzer/issues/10266

This change is trivial now that we don't have a token map anymore
2024-07-03 08:46:16 +00:00
Lukas Wirth
5e60845f52 Fix up the syntax tree for macro 2.0 2024-07-03 10:41:19 +02:00
bors
7789db2378 Auto merge of #17534 - Veykril:skip-unknown-match-check, r=Veykril
fix: Skip match exhaustiveness checking if pattern type contains errors

Should fix https://github.com/rust-lang/rust-analyzer/issues/17509, checking when errors are involved is generally a bad idea as the algorithm doesn't really expect error types in the first place I believe
2024-07-03 06:34:39 +00:00
Lukas Wirth
8f8f440cb2 Skip match exhaustiveness checking if pattern type contains errors 2024-07-03 08:31:40 +02:00
bors
260a380e09 Auto merge of #17530 - Veykril:lifetime-order, r=Veykril
Move lifetimes in front of type and const params but after self
2024-07-02 12:20:54 +00:00
Lukas Wirth
0fef8f01a3 Move lifetimes in front of type and const params but after self 2024-07-02 14:17:34 +02:00
Lukas Wirth
99e432d253 Make GenericParams::lifetimes private 2024-07-02 13:45:53 +02:00
Lukas Wirth
446e15484c Make GenericParams::where_predicates private 2024-07-02 13:45:50 +02:00
Lukas Wirth
1da9ade53d Make GenericParams::type_or_consts private 2024-07-02 13:45:48 +02:00
bors
96718417af Auto merge of #17529 - Veykril:fix-17065, r=Veykril
fix: Fix lifetime parameters moving parameter defaults

Fixes https://github.com/rust-lang/rust-analyzer/issues/17075, https://github.com/rust-lang/rust-analyzer/issues/17515

We were incorrectly filling the default params due to our odd order of lifetime parameters vs type/const params. So this needs some special handling so that we don't shift the defaults around.
2024-07-02 10:35:44 +00:00
Lukas Wirth
5fa5378856 Fix lifetime parameters moving paramter defaults 2024-07-02 12:34:32 +02:00
bors
d0edb95868 Auto merge of #17526 - Veykril:proc-server-errors, r=Veykril
internal: Improve error message when the proc-macro server unexpectedly exits
2024-07-01 13:57:24 +00:00
Lukas Wirth
fe9337311c Improve error message when the proc-macro server unexpectedly exits 2024-07-01 14:30:21 +02:00
bors
94e5efdab1 Auto merge of #17495 - listochkin:pass-cargo-extra-args-for-debugger, r=Veykril
pass cargo extra args when debugging

fixes #17128
2024-07-01 10:34:09 +00:00
bors
29fbc2414d Auto merge of #17494 - harrysarson:harry/keep-braces, r=Veykril
do not normalize `use foo::{self}` to `use foo`

It changes behaviour and can cause collisions. E.g. for the following snippet

```rs
mod foo {

    pub mod bar {}

    pub const bar: i32 = 8;
}

// transforming the below to `use foo::bar;` causes the error:
//
//   the name `bar` is defined multiple times
use foo::bar::{self};

const bar: u32 = 99;

fn main() {
    let local_bar = bar;
}
```

we still normalize

```rs
use foo::bar;
use foo::bar::{self};
```

to `use foo::bar;` because this cannot cause collisions.

See: https://github.com/rust-lang/rust-analyzer/pull/17140#issuecomment-2079189725
2024-07-01 10:20:01 +00:00
bors
dffbad50c1 Auto merge of #17522 - Veykril:comptimes, r=Veykril
internal: Cut compiletimes slightly
2024-07-01 08:43:11 +00:00
Lukas Wirth
d40bc51e3d Bump rustc_pattern_analysis 2024-06-30 18:41:55 +02:00