aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* use more precise nameAleksey Kladov2021-05-223-12/+7
|
* internal: replace AstTransformer with mutable syntax treesAleksey Kladov2021-05-226-208/+123
|
* Merge #8918bors[bot]2021-05-222-9/+39
|\ | | | | | | | | | | | | | | | | | | 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 <[email protected]>
| * Work around non-unique AttrIdsJonas Schievink2021-05-222-9/+39
|/
* Merge #8916bors[bot]2021-05-2215-3/+925
|\ | | | | | | | | | | | | | | | | | | 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 <[email protected]>
| * Use `.rs` file ending to get syntax highlightingJonas Schievink2021-05-211-1/+1
| |
| * Update lsp-extensions.mdJonas Schievink2021-05-211-2/+18
| |
| * Add a "Debug ItemTree" LSP requestJonas Schievink2021-05-219-0/+108
| |
| * Add an ItemTree pretty-printerJonas Schievink2021-05-213-0/+780
| |
| * impl Display for AttrInput/ImportAliasJonas Schievink2021-05-212-1/+19
|/
* Merge #8914bors[bot]2021-05-213-20/+4
|\ | | | | | | | | | | | | | | | | | | 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 <[email protected]>
| * Remove `StructDefKind`Jonas Schievink2021-05-213-20/+4
|/
* Merge #8856bors[bot]2021-05-2123-1077/+1206
|\ | | | | | | | | | | | | | | | | | | | | | | 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 <[email protected]>
| * Clean up visibilitiesFlorian Diebold2021-05-211-10/+10
| |
| * Some remaining cleanupsFlorian Diebold2021-05-213-18/+13
| |
| * Fix test after rebaseFlorian Diebold2021-05-211-1/+1
| |
| * Record type mismatches for failed coercions in match etc.Florian Diebold2021-05-212-15/+21
| |
| * Refactor expectation handlingFlorian Diebold2021-05-213-54/+88
| | | | | | | | So as to not use `TyKind::Error` as "no expectation".
| * Remove TypeVariableTableFlorian Diebold2021-05-212-56/+48
| |
| * Deal with goals arising from unificationFlorian Diebold2021-05-214-18/+21
| |
| * Get rid of resolve_ty_as_possibleFlorian Diebold2021-05-218-88/+56
| | | | | | | | Instead use shallow resolving where necessary.
| * Make resolve_ty_shallow return TyFlorian Diebold2021-05-213-14/+7
| |
| * Rework obligation handlingFlorian Diebold2021-05-2111-143/+240
| | | | | | | | | | | | | | | | 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.
| * Fix another panicFlorian Diebold2021-05-211-17/+15
| |
| * Improve debug printing without TLSFlorian Diebold2021-05-212-158/+21
| |
| * Fix panicFlorian Diebold2021-05-211-1/+4
| |
| * Fix HIR expecting errors to unify with anythingFlorian Diebold2021-05-213-8/+65
| |
| * Fix compilation of hir and ide cratesFlorian Diebold2021-05-212-3/+3
| |
| * Fix if/else coercionFlorian Diebold2021-05-211-1/+4
| |
| * Make diverging type variables work againFlorian Diebold2021-05-212-0/+23
| | | | | | | | | | Chalk doesn't know about the `diverging` flag, so we need to instead propagate it before fully resolving the variables.
| * Fix handling of diverging branches in match coercionFlorian Diebold2021-05-212-4/+52
| | | | | | | | Fixes #7626.
| * Fix coercion of two closures to a function pointerFlorian Diebold2021-05-214-56/+48
| | | | | | | | Fixes #8604.
| * Update tests with expected changesFlorian Diebold2021-05-212-40/+34
| |
| * Make type resolver a proper folder, make it resolve consts as wellFlorian Diebold2021-05-211-48/+117
| |
| * Fix fallback to bound vars in `unify`Florian Diebold2021-05-211-45/+78
| |
| * Better Debug impl for InternedWrapperFlorian Diebold2021-05-211-1/+7
| |
| * Temporary fix for unknown expectationsFlorian Diebold2021-05-212-0/+8
| |
| * Fix warnings & formatFlorian Diebold2021-05-213-20/+11
| |
| * Rewrite coercion using the new unificationFlorian Diebold2021-05-216-105/+371
| |
| * Remove our unification code, use Chalk's insteadFlorian Diebold2021-05-218-438/+125
| |
* | Merge #8910bors[bot]2021-05-214-20/+79
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <[email protected]>
| * Don't lower extern block in the ItemTreeJonas Schievink2021-05-214-20/+79
|/
* Merge #8902bors[bot]2021-05-201-3/+6
|\ | | | | | | | | | | | | | | 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 <[email protected]>
| * Fix code completion not inserting borrow text when client supports ↵Lukas Tobias Wirth2021-05-201-3/+6
| | | | | | | | InsertAndReplace
* | Merge #8900bors[bot]2021-05-203-38/+100
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 <[email protected]>
| * | Support `#[register_attr]` and `#[register_tool]`Jonas Schievink2021-05-203-32/+94
| | |
| * | Rename `ignore_attrs_on` to `skip_attrs`Jonas Schievink2021-05-201-6/+6
|/ /
* | Merge #8899bors[bot]2021-05-201-4/+2
|\ \ | | | | | | | | | | | | | | | | | | | | | 8899: minor: Simplify r=jonas-schievink a=jonas-schievink bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | SimplifyJonas Schievink2021-05-201-4/+2
|/ /
* | Merge #8898bors[bot]2021-05-202-75/+141
|\ \ | | | | | | | | | | | | | | | | | | | | | 8898: internal: resolve derive helpers r=jonas-schievink a=jonas-schievink bors r+ Co-authored-by: Jonas Schievink <[email protected]>