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
Jonas Schievink
036e5b2806
Refactor name resolution to resolve derive helpers
2021-05-20 19:56:04 +02:00
bors[bot]
f86a9572f3
Merge #8897
...
8897: minor: Don't compare ast::Visibility by stringifying r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Tobias Wirth <lukastw97@gmail.com>
2021-05-20 16:05:54 +00:00
Lukas Tobias Wirth
da7f1eb756
Don't compare ast::Visibility by stringifying
2021-05-20 17:45:59 +02:00
bors[bot]
7aab09ca6c
Merge #8893
...
8893: Update outdated auto-import documentation r=Veykril a=Veykril
bors r+
Co-authored-by: Lukas Tobias Wirth <lukastw97@gmail.com>
2021-05-20 13:32:45 +00:00
Lukas Tobias Wirth
066856ab5b
Update outdated auto-import documentation
2021-05-20 15:31:33 +02:00
Jonas Schievink
f088606d89
Rename unexpanded_macros
to unresolved_macros
2021-05-20 13:12:29 +02:00
bors[bot]
8bb37737c9
Merge #8873
...
8873: Implement import-granularity guessing r=matklad a=Veykril
This renames our `MergeBehavior` to `ImportGranularity` as rustfmt has it as the purpose of them are basically the same. `ImportGranularity::Preserve` currently has no specific purpose for us as we don't have an organize imports assist yet, so it currently acts the same as `ImportGranularity::Item`.
We now try to guess the import style on a per file basis and fall back to the user granularity setting if the file has no specific style yet or where it is ambiguous. This can be turned off by setting `import.enforceGranularity` to `true`.
Closes https://github.com/rust-analyzer/rust-analyzer/issues/8870
Co-authored-by: Lukas Tobias Wirth <lukastw97@gmail.com>
2021-05-20 08:27:16 +00:00
Lukas Tobias Wirth
2bf720900f
Check for differing attributes in granularity guessing
2021-05-20 10:25:04 +02:00