Aleksey Kladov
e6776c3e1b
use more precise name
2021-05-22 16:23:07 +03:00
Aleksey Kladov
47d7434dde
internal: replace AstTransformer with mutable syntax trees
2021-05-22 15:27:32 +03:00
bors[bot]
3cfe2d0a5d
Merge #8918
...
8918: fix: fix hang caused by non-unique attribute IDs r=jonas-schievink a=jonas-schievink
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/8905 (again)
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-05-22 00:31:17 +00:00
Jonas Schievink
d077b8a7e0
Work around non-unique AttrIds
2021-05-22 02:30:03 +02:00
bors[bot]
ae24651e44
Merge #8916
...
8916: ItemTree pretty-printing r=jonas-schievink a=jonas-schievink
This adds a printer for `ItemTree` contents, and a few tests to ensure that `ItemTree` lowering works like we expect it to. It also adds a new "Debug ItemTree" command that can be used to see the `ItemTree` of the currently open file. The pretty-printed output is usually close enough to Rust syntax that we can even use Rust syntax highlighting.
This is similar to the old `ItemTree` tests we had, but produces significantly more readable output, so these should actually carry their weight.
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-05-21 23:18:19 +00:00
Jonas Schievink
463ecefc64
Use .rs
file ending to get syntax highlighting
2021-05-22 00:11:54 +02:00
Jonas Schievink
3360053312
Update lsp-extensions.md
2021-05-22 00:03:36 +02:00
Jonas Schievink
271ec6b990
Add a "Debug ItemTree" LSP request
2021-05-21 23:59:52 +02:00
Jonas Schievink
8d13864440
Add an ItemTree pretty-printer
2021-05-21 23:45:27 +02:00
Jonas Schievink
01df4c04d1
impl Display for AttrInput/ImportAlias
2021-05-21 23:45:09 +02:00
bors[bot]
5b6c0c1af2
Merge #8914
...
8914: internal: remove `StructDefKind` r=jonas-schievink a=jonas-schievink
The `Fields` enum already encodes this, so `StructDefKind` is redundant.
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-05-21 19:08:49 +00:00
Jonas Schievink
45f4a1e559
Remove StructDefKind
2021-05-21 21:08:06 +02:00
bors[bot]
edbde25ca2
Merge #8856
...
8856: Use Chalk for unification r=flodiebold a=flodiebold
- use Chalk's unification, get rid of our own `unify`
- rewrite coercion to not use unification internals and to be more analogous to rustc
- fix various coercion bugs
- rewrite handling of obligations, since the old hacky optimization where we noted when an inference variable changes wasn't possible anymore
- stop trying to deeply resolve types all the time during inference, instead only do it shallowly where necessary
Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2021-05-21 17:51:53 +00:00
Florian Diebold
ef558c97d0
Clean up visibilities
2021-05-21 19:51:21 +02:00
bors[bot]
de403b1044
Merge #8910
...
8910: Don't lower extern block in the ItemTree r=jonas-schievink a=jonas-schievink
The ItemTree lowering code used to attach attributes on an `extern {}` block to all the children. This is wrong and causes problems with attribute resolution that manifested as a hang.
This PR treats extern blocks as first-class items in the ItemTree and lowers its contents in the `ModCollector` instead.
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/8414#issuecomment-845607923
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/8905
Fixes https://github.com/rust-analyzer/rust-analyzer/issues/8909
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-05-21 16:29:31 +00:00
Jonas Schievink
d00bc9c2fc
Don't lower extern block in the ItemTree
2021-05-21 18:27:25 +02:00
Florian Diebold
67f1a08fd8
Some remaining cleanups
2021-05-21 18:23:03 +02:00
Florian Diebold
e9d1550001
Fix test after rebase
2021-05-21 18:23:03 +02:00
Florian Diebold
6e5637983c
Record type mismatches for failed coercions in match etc.
2021-05-21 18:23:03 +02:00
Florian Diebold
556c9cebdb
Refactor expectation handling
...
So as to not use `TyKind::Error` as "no expectation".
2021-05-21 18:23:03 +02:00
Florian Diebold
99c73537fa
Remove TypeVariableTable
2021-05-21 17:49:09 +02:00
Florian Diebold
9716c0b949
Deal with goals arising from unification
2021-05-21 17:49:09 +02:00
Florian Diebold
4bd446f5b3
Get rid of resolve_ty_as_possible
...
Instead use shallow resolving where necessary.
2021-05-21 17:49:07 +02:00
Florian Diebold
a78f0076ab
Make resolve_ty_shallow return Ty
2021-05-21 17:48:34 +02:00
Florian Diebold
1250ddc5cf
Rework obligation handling
...
We can't do the easy hack that we did before anymore, where we kept
track of whether any inference variables changed since the last time we
rechecked obligations. Instead, we store the obligations in
canonicalized form; that way we can easily check the inference variables
to see whether they have changed since the goal was canonicalized.
2021-05-21 17:48:34 +02:00
Florian Diebold
a3d9cac690
Fix another panic
2021-05-21 17:48:34 +02:00
Florian Diebold
29266ada04
Improve debug printing without TLS
2021-05-21 17:48:34 +02:00
Florian Diebold
7c423f5b88
Fix panic
2021-05-21 17:48:34 +02:00
Florian Diebold
8397734cfe
Fix HIR expecting errors to unify with anything
2021-05-21 17:48:34 +02:00
Florian Diebold
48c492af7e
Fix compilation of hir and ide crates
2021-05-21 17:48:34 +02:00
Florian Diebold
b939a6dcac
Fix if/else coercion
2021-05-21 17:48:34 +02:00
Florian Diebold
212f0477f2
Make diverging type variables work again
...
Chalk doesn't know about the `diverging` flag, so we need to instead
propagate it before fully resolving the variables.
2021-05-21 17:48:34 +02:00
Florian Diebold
32fc944263
Fix handling of diverging branches in match coercion
...
Fixes #7626 .
2021-05-21 17:48:34 +02:00
Florian Diebold
a09079f27a
Fix coercion of two closures to a function pointer
...
Fixes #8604 .
2021-05-21 17:48:34 +02:00
Florian Diebold
afa6be2435
Update tests with expected changes
2021-05-21 17:48:34 +02:00
Florian Diebold
3379a52dff
Make type resolver a proper folder, make it resolve consts as well
2021-05-21 17:48:34 +02:00
Florian Diebold
278f5b043d
Fix fallback to bound vars in unify
2021-05-21 17:48:34 +02:00
Florian Diebold
aebcf7b5d4
Better Debug impl for InternedWrapper
2021-05-21 17:48:34 +02:00
Florian Diebold
0f7f1f0705
Temporary fix for unknown expectations
2021-05-21 17:48:34 +02:00
Florian Diebold
4ca1981c91
Fix warnings & format
2021-05-21 17:48:34 +02:00
Florian Diebold
693582946f
Rewrite coercion using the new unification
2021-05-21 17:48:33 +02:00
Florian Diebold
84074cb185
Remove our unification code, use Chalk's instead
2021-05-21 17:48:33 +02:00
bors[bot]
eb08a27f1b
Merge #8902
...
8902: fix: Fix code completion not inserting borrow text when client supports InsertAndReplace r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Tobias Wirth <lukastw97@gmail.com>
2021-05-20 21:23:20 +00:00
Lukas Tobias Wirth
6b0ac95df1
Fix code completion not inserting borrow text when client supports InsertAndReplace
2021-05-20 23:22:21 +02:00
bors[bot]
8d713b3e46
Merge #8900
...
8900: internal: support `#[register_attr]` and `#[register_tool]` r=jonas-schievink a=jonas-schievink
Relatively straightforward since these are crate-local.
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-05-20 18:41:26 +00:00
Jonas Schievink
6f19484c93
Support #[register_attr]
and #[register_tool]
2021-05-20 20:40:02 +02:00
Jonas Schievink
df824c2f81
Rename ignore_attrs_on
to skip_attrs
2021-05-20 20:18:53 +02:00
bors[bot]
9b94a27813
Merge #8899
...
8899: minor: Simplify r=jonas-schievink a=jonas-schievink
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-05-20 18:09:12 +00:00
Jonas Schievink
9ac5a90522
Simplify
2021-05-20 20:08:39 +02:00
bors[bot]
79f50bd583
Merge #8898
...
8898: internal: resolve derive helpers r=jonas-schievink a=jonas-schievink
bors r+
Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2021-05-20 17:57:06 +00:00