Commit Graph

16441 Commits

Author SHA1 Message Date
Daniel Franklin
23429a08d5
Mention how to customize unsafe operation styles
I was confused about how to do this, so I filed [an issue][issue].

[issue]: rust-analyzer/rust-analyzer#8474
2021-04-12 16:18:04 +01:00
bors[bot]
563d2d15b3
Merge #8481
8481: internal: prepare for lazy diagnostics r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-04-12 14:58:44 +00:00
Aleksey Kladov
426d098bd6 internal: prepare for lazy diagnostics 2021-04-12 17:58:01 +03:00
bors[bot]
cae920a1bb
Merge #8478
8478: fix: don't spam repeated error messages when `cargo check` fails r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-04-12 13:20:01 +00:00
Aleksey Kladov
29d5f29932 fix: don't spam repeated error messages when cargo check fails
Conceptually, using a *message* here is wrong, because this is a
"status", rather than "point in time" thing. But statuses are an LSP
extension, while messages are stable. As a compromise, send message only
for more critical `metadata` failures, and only once per state change.
2021-04-12 16:19:36 +03:00
bors[bot]
a526d0a4b7
Merge #8476
8476: feat: avoid checking the whole project during initial loading r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-04-12 12:32:55 +00:00
Aleksey Kladov
186c5c47cb feat: avoid checking the whole project during initial loading 2021-04-12 15:29:31 +03:00
bors[bot]
7be06139b6
Merge #8469
8469: Remove assertion in impl collection r=flodiebold a=flodiebold

This condition should always be true for *valid* code, but of course
there might be invalid code or things that we can't currently resolve.

Fixes #8464.

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2021-04-11 10:08:30 +00:00
Florian Diebold
97d6e36dbe Remove assertion in impl collection
This condition should always be true for *valid* code, but of course
there might be invalid code or things that we can't currently resolve.

Fixes #8464.
2021-04-11 12:07:58 +02:00
bors[bot]
5b40342d2d
Merge #8465
8465: Include more info in assert r=jonas-schievink a=jonas-schievink

This helped find https://github.com/rust-analyzer/rust-analyzer/issues/8464

changelog skip

bors r+

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-04-10 23:42:26 +00:00
Jonas Schievink
5f2efae3ba Include more info in assert 2021-04-11 01:41:40 +02:00
bors[bot]
eccd0efedb
Merge #8463
8463: Support macros in pattern position r=jonas-schievink a=jonas-schievink

This was fairly easy, because patterns are limited to bodies, so almost all changes were inside body lowering.

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-04-10 23:33:18 +00:00
Jonas Schievink
e2c1da36f5 Support macros in pattern position 2021-04-11 01:25:50 +02:00
bors[bot]
a8a25863f6
Merge #8436
8436: Fix extract function's mutability of variables outliving the body r=matklad a=brandondong

**Reproduction:**
```rust
fn main() {
    let mut k = 1;
    let mut j = 2;
    j += 1;
    k += j;
}
```
1. Select the first to third lines of the main function. Use the "Extract into function" code assist.
2. The output is the following which does not compile because the outlived variable `k` is declared as immutable:
```rust
fn main() {
    let (k, j) = fun_name();
    k += j;
}

fn fun_name() -> (i32, i32) {
    let mut k = 1;
    let mut j = 2;
    j += 1;
    (k, j)
}
```
3. We would instead expect the output to be:
```rust
fn main() {
    let (mut k, j) = fun_name();
    k += j;
}
```

**Fix:**
- Instead of declaring outlived variables as immutable unconditionally, check for any mutable usages outside of the extracted function.

Co-authored-by: Brandon <brandondong604@hotmail.com>
2021-04-10 21:35:05 +00:00
bors[bot]
bd675c8a8b
Merge #8460
8460: Revert "Rewrite `#[derive]` removal code to be based on AST" r=jonas-schievink a=jonas-schievink

It breaks some function-like proc macros: https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frust-analyzer/topic/Proc.20macro.20expansion/near/233971916

It also uses attribute indices incorrectly, which causes insufficient attributes to be removed.

bors r+

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-04-10 18:34:59 +00:00
Jonas Schievink
44b04ebe43 Revert "Rewrite #[derive] removal to be based on AST"
This reverts commit 7e78aebc8f.
2021-04-10 20:30:28 +02:00
Jonas Schievink
050dc93e00 Revert "Use pub(crate)"
This reverts commit c51213c2e7.
2021-04-10 20:30:24 +02:00
Jonas Schievink
526dc4b5f5 Revert "Use name![derive]"
This reverts commit d6187de4cd.
2021-04-10 20:30:19 +02:00
bors[bot]
dea3ff609e
Merge #8458
8458: Respect test style guidelines in tests::traits r=Veykril a=Veykril

bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-04-10 16:06:01 +00:00
Lukas Wirth
8113c3a914 Respect test style guidelines in tests::traits 2021-04-10 18:03:27 +02:00
bors[bot]
4bf32eea21
Merge #8457
8457: Implement more precise binary op return type heuristic r=flodiebold a=Veykril

Should fix #7150

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-04-10 15:53:06 +00:00
Lukas Wirth
a15b8136ee Add test for binary op return ty with adt 2021-04-10 17:52:24 +02:00
Lukas Wirth
d9554c258b Add manual ops::Add impls to test::traits::closure_2 2021-04-10 17:16:35 +02:00
Lukas Wirth
252eb78dc3 Implement more precise binary op return type prediction 2021-04-10 16:56:32 +02:00
bors[bot]
0fac165052
Merge #8410
8410: Use CompletionTextEdit::InsertAndReplace if supported by the client r=Veykril a=Veykril

Fixes #8404, Fixes #3130

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-04-10 13:07:46 +00:00
bors[bot]
e357b6bb36
Merge #8384
8384: add is quadratic test r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2021-04-10 10:01:03 +00:00
Aleksey Kladov
e012efca27 Let's try testing for "is not quadratic" condition 2021-04-10 12:43:07 +03:00
bors[bot]
00cdbceb9d
Merge #8453
8453: Avoid an unnecessary `collect` r=jonas-schievink a=jonas-schievink

bors r+

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-04-09 20:52:41 +00:00
Jonas Schievink
30ce8b20ec Avoid an unnecessary collect 2021-04-09 22:52:13 +02:00
bors[bot]
343b14f7e0
Merge #8450
8450: Don't ignore unnamed consts when looking for definitions r=Veykril a=Veykril

Fixes #8448
bors r+

Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-04-09 15:16:36 +00:00
Lukas Wirth
ec2895e956 Insert unnamed consts to ChildBySource DynMap 2021-04-09 17:14:48 +02:00
bors[bot]
c08e690c93
Merge #8447
8447: Resolve prelude and crate root names in the root DefMap r=jonas-schievink a=jonas-schievink

Should fix https://github.com/rust-analyzer/rust-analyzer/issues/8418

bors r+

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-04-09 13:30:12 +00:00
Jonas Schievink
75614b126b Resolve prelude and crate root names in the root DefMap 2021-04-09 15:29:42 +02:00
bors[bot]
3b1692c3e8
Merge #8443 #8446
8443: Rewrite `#[derive]` removal code to be based on AST r=jonas-schievink a=jonas-schievink

We now remove any `#[derive]` before and including the one we want to expand, in the `macro_arg` query.

The same infra will be needed by attribute macros (except we only remove the attribute we're expanding, not any preceding ones).

Part of https://github.com/rust-analyzer/rust-analyzer/issues/8434 (doesn't implement the cfg-expansion yet, because that's more difficult)

8446: Undo path resolution hack for extern prelude r=jonas-schievink a=jonas-schievink

Reverts the change made in https://github.com/rust-analyzer/rust-analyzer/pull/7959

We don't populate the extern prelude for block DefMaps anymore,
so this is unnecessary

bors r+

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-04-09 12:53:49 +00:00
Jonas Schievink
d6187de4cd Use name![derive] 2021-04-09 14:50:42 +02:00
Jonas Schievink
4ea5f690bc Undo path resolution hack for extern prelude
We don't populate the extern prelude for block DefMaps anymore,
so this is unnecessary
2021-04-09 14:46:52 +02:00
bors[bot]
972e1f4b8c
Merge #8445
8445: `hir_ty` cleanup r=flodiebold a=flodiebold

Move lots of things around within `hir_ty`. Most notably, all the Chalk-related stuff moves from within `traits/` to the top-level, since Chalk isn't purely a "traits thing" anymore.

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2021-04-09 12:43:48 +00:00
Florian Diebold
fbe98047d4 More cleanups / module docs 2021-04-09 14:40:58 +02:00
Florian Diebold
8a2c482082 More cleanups 2021-04-09 14:33:31 +02:00
Florian Diebold
2f02977e56 More moving stuff around 2021-04-09 14:28:04 +02:00
Jonas Schievink
c51213c2e7 Use pub(crate) 2021-04-09 14:24:31 +02:00
bors[bot]
a6b65cf516
Merge #8444
8444: Shrink `unlinked-file` diagnostic to 3 characters r=jonas-schievink a=jonas-schievink

Fixes https://github.com/rust-analyzer/rust-analyzer/issues/8442

(the diagnostic fires intentionally on `#[cfg]`d modules, but with this won't cover the whole file)

bors r+

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-04-09 12:24:03 +00:00
Jonas Schievink
ac980e96e5 Shrink unlinked-file diagnostic to 3 characters 2021-04-09 14:22:38 +02:00
Florian Diebold
9fba7cf827 Move some more stuff to better places 2021-04-09 14:18:58 +02:00
Florian Diebold
5ca481bbdc Move ToChalk -> mapping 2021-04-09 14:15:26 +02:00
Florian Diebold
743faa21e7 Reorganize hir_ty modules
Chalk isn't really a 'traits' thing anymore, so it doesn't make sense to
have all the Chalk-related stuff in submodules of `traits`.
2021-04-09 14:11:37 +02:00
Jonas Schievink
7e78aebc8f Rewrite #[derive] removal to be based on AST 2021-04-09 14:10:54 +02:00
Jonas Schievink
c0dd36fd42 Store #[derive] attribute ID along macro invoc 2021-04-09 13:38:01 +02:00
Jonas Schievink
546da15972 Rename Attrs index field to id 2021-04-09 13:36:22 +02:00
Jonas Schievink
3fcdd1bcdf Add AttrId to track attribute sources 2021-04-09 13:32:03 +02:00