Commit graph

17957 commits

Author SHA1 Message Date
Laurențiu Nicola
71499fcd22 Merge remote-tracking branch 'upstream/master' into sync-from-rust 2023-07-17 16:09:39 +03:00
bors
d824511039 Auto merge of #15297 - HKalbasi:mir, r=HKalbasi
Normalize type alias in projected_ty

fix #15143
2023-07-16 21:47:00 +00:00
hkalbasi
832eb0d94c Normalize type alias in projected_ty 2023-07-17 01:16:26 +03:30
Bernardo Sulzbach
0e2c68da64
Fix rust-analzyer ssr help message 2023-07-16 12:12:33 +02:00
Красимир Беров
8f169f9642
Update flags.rs
Fixed typo in documentation comment
2023-07-16 10:27:20 +03:00
Laurențiu Nicola
467f5f418e
Revert "Handle TyAlias in projected_ty" 2023-07-16 09:34:35 +03:00
Ali Bektas
f8f19c4288 Change names to sth more presentable 2023-07-15 19:04:59 +02:00
Ali Bektas
75f06ce1fb Handle TyAlias in projected_ty 2023-07-15 18:32:21 +02:00
Ryo Yoshida
004971f3f0
Remove crate visibility modifier 2023-07-16 00:01:11 +09:00
hkalbasi
41b8b0b77d Enable cfg miri in analysis 2023-07-14 22:59:46 +03:30
bors
8e5f944317 Auto merge of #15282 - HKalbasi:mir, r=HKalbasi
Give real discriminant_type to chalk
2023-07-14 16:46:35 +00:00
hkalbasi
50559118fb Give real discriminant_type to chalk 2023-07-14 20:15:18 +03:30
hkalbasi
5208bf8f55 implement type_name intrinsic 2023-07-14 16:52:36 +03:30
bors
f6ae0c11ac Auto merge of #15270 - ChristianSchott:patch-1, r=HKalbasi
Make fields of mir::Terminator public

When trying to use the RA crate, I am unable to access the fields in `hir_def::mir::Terminator`.
I don't see any reason, why these should be private, especially as the fields of `hir_def::mir::Statement` are `pub`.

I am not sure if the fields in `hir_def::mir::SwitchTargets` should be made `pub` too, but at least they are read-accessible via some public methods..

Sorry if I missed something, this is my first PR.
2023-07-13 07:54:44 +00:00
bors
132ba2cf77 Auto merge of #15248 - Veykril:eager, r=Veykril
Fix eager token mapping panics
2023-07-13 07:39:30 +00:00
Lukas Wirth
6a7b905c86 Fix the eager token maps by re-mapping the textranges between the input and input expansion 2023-07-13 09:22:38 +02:00
bors
d16d5fcf68 Auto merge of #15268 - HKalbasi:mir, r=HKalbasi
Add write_bytes and ctlz intrinsics
2023-07-12 23:19:30 +00:00
bors
642420fb60 Auto merge of #15267 - lowr:patch/exceeding-exec-limit-is-slow, r=lnicola
Mark test for MIR execution limit as slow test

The test for MIR execution limit accounts for ~2/3 of total execution time of non-slow hir-ty tests. It significantly slows down edit-and-run-test type of workflow. Can we mark it as a slow test?
2023-07-12 23:04:16 +00:00
bors
f45fdd9123 Auto merge of #15260 - DropDemBits:structured-snippet-migrate-3, r=lowr
internal: Migrate assists to the structured snippet API, part 3

Continuing from #15231

Migrates the following assists:
- `add_missing_match_arms`
- `fix_visibility`
- `promote_local_to_const`

The `add_missing_match_arms` changes are best reviewed commit-by-commit since they're relatively big changes compared to the rest of the commits.
2023-07-12 22:05:30 +00:00
DropDemBits
614987ae71
Test rendering of snippets
Had a missing ':' between the snippet index and placeholder text
2023-07-12 17:22:02 -04:00
Ryo Yoshida
074488b290
Properly infer types with type casts 2023-07-13 00:14:15 +09:00
ChristianSchott
8f612b5352
Make fields of mir::Terminator public 2023-07-12 09:35:44 +02:00
DropDemBits
a1877df5a5
Passthrough is_snippet for non-structured snippets
Structured snippets precisely track which text edits need to be marked
as snippet text edits, but the cases where structured snippets aren't
used but snippets are still present are for simple single text-edit
changes, so it's perfectly fine to mark all one of them as being a
snippet text edit
2023-07-12 03:14:09 -04:00
DropDemBits
a3a02d01f3
Simplify snippet rendering
Also makes sure that stray placeholders get converted into tabstops
2023-07-12 02:58:32 -04:00
DropDemBits
ae83f32ee9
Remove unnecessary SourceChange trait impls 2023-07-12 02:36:37 -04:00
DropDemBits
97a6fa58cd
internal: Defer rendering of structured snippets
This ensures that any assist using structured snippets won't
accidentally remove bits interpreted as snippet bits.
2023-07-12 01:50:35 -04:00
DropDemBits
89f7bf7411
Add SnippetEdit to be alongside source changes
Rendering of snippet edits is deferred to places using source change
2023-07-12 00:43:41 -04:00
hkalbasi
274e8301c1 Add write_bytes and ctlz intrinsics 2023-07-12 01:14:49 +03:30
DropDemBits
a9889a0f1c
fix the rest of the nits 2023-07-11 17:32:12 -04:00
DropDemBits
f9a144f0ed
Hoist out make::name_ref
`clone_for_update` is relatively cheap in comparison, since making a
node require parsing an entire source text

Adds a test to make sure that it doesn't crash when multiple uses are
present.
2023-07-11 17:28:17 -04:00
Ryo Yoshida
0312c6c321
Mark test for MIR execution limit as slow test 2023-07-11 23:36:47 +09:00
Lukas Wirth
2366c16bf9 Fix eager token mapping panics 2023-07-11 13:54:28 +02:00
DropDemBits
99abcdc1eb
format let-else in promote_local_to_const 2023-07-10 17:49:27 -04:00
DropDemBits
11debaf61a
Migrate fix_visibility to mutable ast 2023-07-10 17:39:55 -04:00
hkalbasi
59420afa46 Support getrandom syscall 2023-07-11 00:29:06 +03:30
bors
ea02f4cba1 Auto merge of #15251 - Veykril:builtin-expand, r=Veykril
Skip building subtrees for builtin derives

This is a waste of resources, we go from node to subtree just to go from subtree to node in the expander impl. We can skip the subtree building and only build the tokenmap instead.
2023-07-10 16:14:47 +00:00
Lukas Wirth
f6c09099da Don't unnecessarily clone the input tt for decl macros 2023-07-10 16:28:23 +02:00
Lukas Wirth
d5f64f875a Infallibe ExpandDatabase::macro_def 2023-07-10 16:23:29 +02:00
Lukas Wirth
4ff93398fd Skip buildin subtrees for builtin derives 2023-07-10 15:19:00 +02:00
Ryo Yoshida
595d9e6ebb
fix: don't use control flow when extracted fn contains tail expr of original fn 2023-07-10 21:55:13 +09:00
bors
2f6d545535 Auto merge of #15231 - DropDemBits:structured-snippet-migrate-2, r=lowr
internal: Migrate more assists to use the structured snippet API

Continuing from #14979

Migrates the following assists:
- `generate_derive`
- `wrap_return_type_in_result`
- `generate_delegate_methods`

As a bonus, `generate_delegate_methods` now generates the function and impl block at the correct indentation 🎉.
2023-07-10 10:57:24 +00:00
Laurențiu Nicola
0f09a7742d Fix publishing of load-cargo crate 2023-07-10 13:40:37 +03:00
DropDemBits
8c40fa33df
Add HasVisibilityEdit::set_visibility 2023-07-09 20:50:20 -04:00
DropDemBits
27444eda56
Migrate promote_local_to_const to mutable ast 2023-07-09 18:49:29 -04:00
DropDemBits
6ab2788978
Migrate add_missing_match_arms to mutable ast
Requires a hack in order to work inside of macros
2023-07-09 18:31:38 -04:00
Josiah Bills
7a87a35f1a Added remove_unused_imports assist. 2023-07-09 17:44:27 -04:00
bors
ff15634831 Auto merge of #15245 - HKalbasi:mir, r=HKalbasi
Fix missing terminator in pattern matching of consts

fix #15238
2023-07-09 21:33:42 +00:00
hkalbasi
42d35f8af9 Fix missing terminator in pattern matching of consts 2023-07-10 01:01:59 +03:30
Josiah Bills
b9cef03230 Updated search to expose some more functions and to make search take the search scope by reference. 2023-07-09 17:30:21 -04:00
Adenine
d0df00d274 Rework view memory layout tests to use expect_test and to_strings. 2023-07-09 16:11:15 -04:00
Adenine
add9056c32
Merge branch 'rust-lang:master' into master 2023-07-09 16:10:40 -04:00
hkalbasi
aa52cbf784 Support read_via_copy intrinsic 2023-07-09 23:17:51 +03:30
DropDemBits
35f2e82e0b
Don't show add_missing_match_arms when not needed
`does_not_fill_wildcard_with_wildcard`
and `does_not_fill_wildcard_with_partial_wildcard_and_wildcard`
both made no modifications to the code,
which is a problem for mutable ast porting as it generates a best-effort
minimal set of text edits,
and assists require at least one text edit.
2023-07-09 02:32:44 -04:00
DropDemBits
5fddf3ef6d
fix: Don't panic for different/missing delimiters 2023-07-08 13:43:30 -04:00
Adenine
1dd54eb44a change viewMemoryLayoutParams to be textPositionParams 2023-07-08 12:25:54 -04:00
Adenine
514bab504e
Merge branch 'rust-lang:master' into master 2023-07-08 12:21:38 -04:00
Omer Tuchfeld
9200d27a26 Stop inserting semicolon when extracting match arm
# Overview

Extracting a match arm value that has type unit into a function, when a
comma already follows the match arm value, results in an invalid (syntax
error) semicolon added between the newly generated function's generated
call and the comma.

# Example

Running this extraction

```rust
fn main() {
    match () {
        _ => $0()$0,
    };
}
```

would lead to

```rust
fn main() {
    match () {
        _ => fun_name();,
    };
}

fn fun_name() {
}
```

# Issue / Fix details

This happens because when there is no comma, rust-analyzer would simply
add the comma and wouldn't even try to evaluate whether it needs to add
a semicolon. But when the comma is there, it proceeds to evaluate
whether it needs to add a semicolon and it looks like the evaluation
logic erroneously ignores the possibility that we're in a match arm.
IIUC it never makes sense to add a semicolon when we're extracting from
a match arm value, so I've adjusted the logic to always decide against
adding a semicolon when we're in a match arm
2023-07-08 15:41:24 +02:00
Adenine
2e515d0ac9 fix weird rebase error 2023-07-07 23:23:19 -04:00
Adenine
4d5c66986e cleanup + docs + tests 2023-07-07 23:12:09 -04:00
Adenine
de5e3cf745 fix incorrect committed rust and run prettier 2023-07-07 23:09:41 -04:00
Adenine
cfa15d49aa implement first pass of memory layout viewer 2023-07-07 23:09:41 -04:00
DropDemBits
2eb506462e
refactor: simplify generate_delegate_method
Can actually split out adding the functions from  getting the impl to
update or create thanks to being able to refer to the impl ast node.

FIXME Context:
Unfortunately we can't adjust the indentation of the newly added function
inside of `ast::AssocItemList::add_item` since for some reason the `todo!()`
placeholder generated by `add_missing_impl_members` and
`replace_derive_with_manual_impl` gets indented weirdly.
2023-07-07 20:08:32 -04:00
DropDemBits
09a3bd5899
Match indentation of generated delegate method 2023-07-07 20:06:10 -04:00
DropDemBits
58e2053327
Migrate generate_delegate_methods to mutable ast 2023-07-07 20:06:10 -04:00
DropDemBits
f8b6b4cc0b
Migrate wrap_return_type_in_result to mutable ast 2023-07-07 20:06:10 -04:00
DropDemBits
25088fca9d
Migrate generate_derive to mutable ast 2023-07-07 20:06:09 -04:00
DropDemBits
419f641d49
add AttrsOwnerEdit::add_attr 2023-07-07 20:06:09 -04:00
DropDemBits
c0172333c2
add attr-related make functions 2023-07-07 20:06:09 -04:00
DropDemBits
4de7cbe04c
internal: add add_tabstop_{before,after}_token 2023-07-07 20:06:09 -04:00
bors
db0add1ce9 Auto merge of #15230 - HKalbasi:mir, r=HKalbasi
Use debug impl in rendering const eval result

fix #15188
2023-07-07 21:38:14 +00:00
hkalbasi
f0ba0dbe8a Use debug impl in rendering const eval result 2023-07-08 01:07:38 +03:30
Ali Bektas
915ddb05fa HiddenDocAttr becomes DocHiddenAttr 2023-07-07 14:15:15 +02:00
bors
c5ca8165e1 Auto merge of #15228 - HKalbasi:mir, r=HKalbasi
Implement recursion in mir interpreter without recursion

This enables interpreting functions with deep stack + profiling. I also applied some changes to make it faster based on the profiling result.
2023-07-07 11:40:47 +00:00
hkalbasi
4a444e768c Implement recursion in mir interpreter without recursion 2023-07-07 15:07:29 +03:30
bors
954a341008 Auto merge of #15226 - alibektas:15109, r=Veykril
assist : add enum to glob_import_expand

fixes #15109
2023-07-07 10:17:55 +00:00
Ali Bektas
d2693aabd6 assist : add enum to glob_import_expand 2023-07-07 02:40:35 +02:00
hkalbasi
3a1054fc1c Replace x with it 2023-07-06 17:33:17 +03:30
bors
4125fea0a7 Auto merge of #15222 - HKalbasi:mir, r=HKalbasi
Fix size_of_val and support min_align_of_val
2023-07-06 12:40:21 +00:00
bors
54c2ee9fab Auto merge of #15219 - alibektas:15080, r=Veykril
Unify getter and setter assists

This PR combines what previously have been two different files into a single file. I want to talk about the reasons why I did this. The issue that prompted this PR ( and before I forget : this pr fixes #15080 ) mentions an interesting behavior. We combine these two assists into an assist group and the order in which the assists are listed in this group changes depending on the text range of the selected area. The reason for that is that VSCode prioritizes actions that have a bigger impact in a smaller area and until now generate setter assist was only possible to be invoked for a single field whereas you could generate multiple getters for the getter assist. So I used the latter's infra to make former applicable to multiple fields, hence the unification. So this PR solves in essence

1. Make `generate setter` applicable to multiple fields
2. Provide a consistent order of the said assists in listing.
2023-07-06 12:22:39 +00:00
hkalbasi
171ae2ee5d Fix size_of_val and support min_align_of_val 2023-07-06 15:41:52 +03:30
bors
db17f792bf Auto merge of #15223 - lowr:patch/no-unresolved-field-for-missing, r=HKalbasi
Don't show `unresolved-field` diagnostic for missing names

I don't think reporting ``"no field `[missing name]` on type `SomeType`"`` makes much sense because it's a syntax error rather than a semantic error. We already report a syntax error for it and I find it sufficient.
2023-07-06 11:54:08 +00:00
Ryo Yoshida
827a0530bc
Don't show unresolved-field diagnostic for missing names 2023-07-06 20:39:48 +09:00
Ali Bektas
1829d550ac Unify getter and setter assists 2023-07-06 12:27:45 +02:00
bors
aa91eda902 Auto merge of #15152 - alibektas:14987, r=Veykril,lowr
assist : generate trait from impl

fixes #14987 . As the name suggests this assist is used to generate traits from inherent impls while adapting the original impl to fit to the newly generated trait. I made some decisions regarding when the assist should be applicable. These are surely open to discussion. I looking forward to any feedback.

![generate_trait_from_impl_v1](https://github.com/rust-lang/rust-analyzer/assets/20956650/05d4dda5-604a-4108-8b82-9b60bd45894a)
2023-07-05 16:56:37 +00:00
bors
3ea31e0ccf Auto merge of #15216 - AmrDeveloper:stop_diagnostics_for_self, r=lowr
Disable remove unnecessary braces diagnotics for self imports

Disable `remove unnecessary braces` diagnostic if the there is a `self` inside the bracketed `use`

Fix #15191
2023-07-05 16:41:45 +00:00
AmrDeveloper
54e897368d Cover disable diagnostic from case with invalid syntax 2023-07-05 19:31:37 +02:00
AmrDeveloper
fe65eabc81 Remove un used import 2023-07-05 17:41:51 +02:00
AmrDeveloper
3fb6a3be82 Remove un needed extra handling for remove self with braces 2023-07-05 17:38:58 +02:00
Ali Bektas
8edb3e192a Minor changes 2023-07-05 16:45:54 +02:00
AmrDeveloper
ce0239bd6a Disable remove unnecessary braces diagnotics for self imports 2023-07-05 16:34:04 +02:00
Ali Bektas
30cbba20de Add snippet insert if client supports it 2023-07-05 13:41:54 +02:00
bors
e95644e279 Auto merge of #15212 - lowr:patch/recover-from-incomplete-assoc-ty, r=HKalbasi
Recover from missing associated items and generic const defaults

Fixes #15129
2023-07-04 18:10:20 +00:00
Ali Bektas
18ea9245c6 v2 2023-07-04 19:32:48 +02:00
Ali Bektas
8a2c5d215b Still in need of more test cases 2023-07-04 19:27:50 +02:00
Ali Bektas
0df1153277 bugfix : skip doc(hidden) default members
fixes  #14957
2023-07-04 19:27:50 +02:00
bors
e219999a17 Auto merge of #15211 - lowr:patch/gats-in-bounds-for-assoc, r=flodiebold
Support GATs in bounds for associated types

Chalk has a dedicated IR for bounds on trait associated type: `rust_ir::InlineBound`. We have been failing to convert GATs inside those bounds from our IR to chalk IR. This PR provides an easy fix for it: properly take GATs into account during the conversion.
2023-07-04 15:36:16 +00:00
Ali Bektas
03423116ad Generate trait from impl v2 2023-07-04 17:33:45 +02:00
Ryo Yoshida
49b039f1d1
Recover from missing associated items and generic const defaults 2023-07-05 00:24:11 +09:00
Ryo Yoshida
9fd5f8c670
Support GATs in bounds for associated types 2023-07-04 18:58:19 +09:00
Lukas Wirth
7b36a73351 internal: Remove CfgExpander 2023-07-04 10:38:23 +02:00
Lukas Wirth
8886d707b8 Stronger typing for AstId and AstIdMap 2023-07-04 09:16:15 +02:00
bors
45272efec5 Auto merge of #14990 - HKalbasi:diagnostic-map, r=HKalbasi
Map our diagnostics to rustc and clippy's ones

And control their severity by lint attributes `#[allow]`, `#[deny]` and ... .

It doesn't work with proc macros and I would like to fix that before merge but I don't know how to do it.
2023-07-03 18:58:47 +00:00
bors
daba334611 Auto merge of #15206 - Veykril:let-else-fmt, r=Veykril
internal: Format let-else

As nightly finally got support for it I went ahead and formatted r-a with the latest nightly, then with the latest stable (in case other stuff changed)
2023-07-03 18:41:59 +00:00
Lukas Wirth
69cd3c30ac Format let-else 2023-07-03 20:34:09 +02:00
bors
b9101895d2 Auto merge of #15205 - Veykril:load-cargo, r=Veykril
Split out project loading capabilities from rust-analyzer crate

External tools currently depend on the entire lsp infra for no good reason so let's lift that out so those tools have something better to depend on
2023-07-03 15:46:09 +00:00
Lukas Wirth
28fcd1bdd7 Split out project loading capabilities from rust-analyzer crate 2023-07-03 17:40:31 +02:00
bors
5703346523 Auto merge of #15118 - alexkirsz:alexkirsz/resolve-deref-raw, r=Veykril
Follow raw pointers in autoderef chain when resolving methods with custom receiver

Fixes #15083

I believe this stopped working after e797479651
2023-07-03 14:55:08 +00:00
bors
691600a885 Auto merge of #15181 - lowr:patch/import-map-purge-unused, r=Veykril
Clean up `ImportMap`

There are several things in `hir_def::import_map` that are never used. This PR removes them and restructures the code. Namely:

- Removes `Query::name_only`, because it's *always* true.
  - Because of this, we never took advantage of storing items' full path. This PR removes `ImportPath` and changes `ImportInfo` to only store items' name, which should reduce the memory consumption to some extent.
- Removes `SearchMode::Contains` for `Query` because it's never used.
- Merges `Query::assoc_items_only` and `Query::exclude_import_kinds` into `Query::assoc_mode`, because the latter is never used besides filtering associated items out.

Best reviewed one commit at a time. I made sure each commit passes full test suite. I can squash the first three commits if needed.
2023-07-03 14:37:55 +00:00
Lukas Wirth
e52027861e Add analysis-stats flag to trigger some IDE features 2023-07-03 16:04:08 +02:00
Lukas Wirth
bdc3d0f551 Shuffle some proc_macro_expand query things around 2023-07-03 15:05:25 +02:00
Lukas Wirth
321e570d92 Don't diagnose builtin derives 2023-07-03 14:23:36 +02:00
Ryo Yoshida
6086ced61d Revert "Support #[rustc_coinductive]"
This reverts commit d026479ba6.
2023-07-03 05:06:55 +09:00
hkalbasi
6f7452882a Fix layout of simd types and respect align in mir interpreter 2023-07-02 00:42:33 +03:30
hkalbasi
15a0da6f30 Fix overflow checking in shift operator 2023-07-01 17:16:56 +03:30
hkalbasi
bb85a980e0 Bump chalk 2023-06-30 23:36:47 +03:30
hkalbasi
45828cdb54 Disable mir interpreter for targets with different pointer size from host 2023-06-30 21:21:52 +03:30
bors
76bcd9946a Auto merge of #15169 - lowr:patch/impl-header-anon-lifetime, r=HKalbasi
Use anonymous lifetime where possible

Because anonymous lifetimes are *super* cool.

More seriously, I believe anonymous lifetimes, especially those in impl headers, reduce cognitive load to a certain extent because they usually signify that they are not relevant in the signature of the methods within (or that we can apply the usual lifetime elision rules even if they are relevant).
2023-06-30 16:57:20 +00:00
Ryo Yoshida
5db0e1a346
Restructure ImportMap collection 2023-07-01 00:18:23 +09:00
Ryo Yoshida
2b106648a7
Only store item name instead of full path 2023-07-01 00:17:57 +09:00
Ryo Yoshida
860628af7c
Remove SearchMode:Contains
Also micro-optimizes fuzzy search.
2023-06-30 23:37:23 +09:00
Ryo Yoshida
8cd4e9f7ec
Merge assoc_items_only and exclude_import_kinds into assoc_mode 2023-06-30 23:37:10 +09:00
Ryo Yoshida
97b725e269
Remove name_only from import map query 2023-06-30 23:35:55 +09:00
Ali Bektas
cfbeb66a63 Purge of unwrap version 2 2023-06-30 16:31:20 +02:00
Ali Bektas
72aeaef5f3 Purge of unwraps 2023-06-30 15:47:17 +02:00
Lukas Wirth
7e7f401a81
Fix panic in handle_code_action 2023-06-30 08:42:46 +02:00
Lukas Wirth
60d046f567
Fix panic in handle_code_action 2023-06-30 08:38:44 +02:00
hkalbasi
302bb3c871 Fix data layout of reference to nested unsized structs 2023-06-29 23:38:13 +03:30
hkalbasi
f53f9230f0 Support #[derive_const(Trait)] 2023-06-29 20:58:35 +03:30
Ryo Yoshida
4e793e7859
Use anonymous lifetime where possible 2023-06-29 23:27:28 +09:00
hkalbasi
2272803330 Fix realloc problem in allocating smaller amounts 2023-06-29 17:28:48 +03:30
bors
ad434fc4ac Auto merge of #15157 - HKalbasi:tokio-test, r=HKalbasi
Fix runnable detection for `#[tokio::test]`

fix #15141

It is hacky, and it wouldn't work for e.g. this case:
```Rust
use ::core::prelude;

#[prelude::v1::test]
fn foo() {
}
```
But it works for the tokio case. We should use the name resolution here somehow, and after that we should probably also get rid of the ast based `test_related_attribute` function.
2023-06-28 20:02:00 +00:00
hkalbasi
7901538dc8 Fix runnable detection for #[tokio::test] 2023-06-28 23:31:08 +03:30
bors
ae89ca3fbb Auto merge of #15161 - lowr:patch/fixture-metadata-library, r=Veykril
internal: add `library` fixture meta

Currently, there is no way to specify `CrateOrigin` of a file fixture ([this] might be a bug?). This PR adds `library` meta to explicitly specify the fixture to be `CrateOrigin::Library` and also makes sure crates that belong to a library source root are set `CrateOrigin::Library`.

(`library` isn't really the best name. It essentially means that the crate is outside workspace but `non_workspace_member` feels a bit too long. Suggestions for the better name would be appreciated)

Additionally:
- documents the fixture meta syntax as thoroughly as possible
- refactors relevant code

[this]: 4b06d3c595/crates/base-db/src/fixture.rs (L450)
2023-06-28 15:23:32 +00:00
Ryo Yoshida
d51536c242
Add library fixture meta
Additionally documents the syntax for fixture meta.
2023-06-28 22:34:14 +09:00
bors
4b06d3c595 Auto merge of #15148 - lowr:fix/super-nameres-in-block, r=Veykril
Fix `self` and `super` path resolution in block modules

This PR fixes `self` and `super` path resolution with block modules involved.

Previously, we were just going up the module tree count-of-`super` times without considering block modules in the way, and then if we ended up in a block `DefMap`, we adjust "to the containing crate-rooted module". While this seems to work in most real-world cases, we failed to resolve them within peculiar module structures.

`self` and `super` should actually be resolved to the nearest non-block module, and the paths don't necessarily resolve to a crate-rooted module. This PR makes sure every `self` and `super` segment in paths are resolved to a non-block module.
2023-06-28 10:43:56 +00:00
Ali Bektas
20c877a700 Update crates/ide-assists/src/handlers/generate_trait_from_impl.rs
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2023-06-28 12:38:54 +02:00
bors
021604431c Auto merge of #15125 - lowr:patch/rustc_coinductive, r=Veykril
internal: support `#[rustc_coinductive]`

rust-lang/rust#100386 changed the trait solver so that `Sized` is treated as coinductive trait, just like auto traits. This is now controlled by the perma-unstable `#[rustc_coinductive]` attribute (rust-lang/rust#108033), which this PR adds support for.

In practice, I don't think this matters much if at all. Currently we don't give chalk enough information so chalk cannot precisely (dis)prove `Sized` bounds.
2023-06-28 10:13:31 +00:00
bors
891331c74f Auto merge of #15101 - alibektas:14780, r=Veykril
Check Workspace Edit ResourceOps

PR fixes #14780
2023-06-28 09:57:54 +00:00
Lukas Wirth
f8518a6cfa
Update crates/rust-analyzer/src/handlers/request.rs 2023-06-28 11:57:36 +02:00
Ali Bektas
677151e4e1 Version 1 2023-06-27 18:03:36 +02:00
Ryo Yoshida
56dd5368f5
Refactor
- don't take `&self` as receiver for `Copy` types
- simplify `hir::Module::nearest_non_block_module()`
- style changes for consistency
2023-06-27 16:01:07 +09:00
Ryo Yoshida
a02846343f
Fix self and super path resolution in block modules 2023-06-27 15:29:08 +09:00
bors
8769cd24bc Auto merge of #15140 - tetsuharuohzeki:issue-15088-comment, r=Veykril
Add the comment why `HasSource::source()` returns `Option`

Fix https://github.com/rust-lang/rust-analyzer/issues/15088
2023-06-26 10:12:00 +00:00
Tetsuharu Ohzeki
7b418d3a8c Add the comment why HasSource::source() returns Option 2023-06-26 17:05:13 +09:00
bors
4a2ceeff0f Auto merge of #15135 - HKalbasi:mir, r=HKalbasi
Fix some unsizing problems in mir
2023-06-25 22:28:23 +00:00
hkalbasi
6d2d1387af Fix some unsizing problems in mir 2023-06-26 01:57:12 +03:30
Josh Stone
380773b3e8 Upgrade to indexmap v2 2023-06-24 17:35:20 -07:00
Ryo Yoshida
d026479ba6
Support #[rustc_coinductive] 2023-06-25 00:13:31 +09:00
hkalbasi
5eb4796d3d Support more intrinsics in mir interpreter 2023-06-23 21:08:05 +03:30
Ali Bektas
b96796ce5e Minor changes. Add resolve_resource_op() 2023-06-23 19:22:59 +02:00