aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty/src
Commit message (Collapse)AuthorAgeFilesLines
* internal: move diagnostics to hirAleksey Kladov2021-05-257-15/+125
| | | | | | | | | | | | | | | | | | | | | | | The idea here is to eventually get rid of `dyn Diagnostic` and `DiagnosticSink` infrastructure altogether, and just have a `enum hir::Diagnostic` instead. The problem with `dyn Diagnostic` is that it is defined in the lowest level of the stack (hir_expand), but is used by the highest level (ide). As a first step, we free hir_expand and hir_def from `dyn Diagnostic` and kick the can up to `hir_ty`, as an intermediate state. The plan is then to move DiagnosticSink similarly to the hir crate, and, as final third step, remove its usage from the ide. One currently unsolved problem is testing. You can notice that the test which checks precise diagnostic ranges, unresolved_import_in_use_tree, was moved to the ide layer. Logically, only IDE should have the infra to render a specific range. At the same time, the range is determined with the data produced in hir_def and hir crates, so this layering is rather unfortunate. Working on hir_def shouldn't require compiling `ide` for testing.
* Minor test fixes / new testsFlorian Diebold2021-05-251-15/+62
|
* Fix type mismatch caused by macrosFlorian Diebold2021-05-252-1/+45
| | | | | | MacroStmts should be completely transparent, but it prevented coercion. (I should maybe give `infer_expr` and `infer_expr_inner` better names.)
* internal: rename hypothetical -> speculativeAleksey Kladov2021-05-241-1/+1
| | | | | Lets steal this good naming from Roslyn before I forget about it yet again.
* internal: intern `TypeBound`sJonas Schievink2021-05-242-1/+9
| | | | | Doesn't save much memory (~2 mb), but interning things is generally a good pattern to follow
* Record method call substs and use them in call infoFlorian Diebold2021-05-235-38/+42
|
* Add test for #8931 and better checkingFlorian Diebold2021-05-231-11/+83
|
* Add last remaining module docstringFlorian Diebold2021-05-221-1/+3
|
* Resolve any lifetime variables to 'static after inferenceFlorian Diebold2021-05-221-1/+13
| | | | | | | | Chalk's unification can sometimes create lifetime variables, which we currently don't really deal with, but at least we don't want to leak them outside of inference. Should fix #8919.
* 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-2110-139/+234
| | | | | | | | 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-212-2/+62
|
* 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
|
* Check patterns for type match recursively.Dawer2021-05-192-2/+30
|
* internal: Record mismatches of pattern types.Dawer2021-05-196-11/+93
|
* Merge #8813bors[bot]2021-05-1611-103/+251
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8813: Get some more array lengths! r=lf- a=lf- This is built on #8799 and thus contains its changes. I'll rebase it onto master when that one gets merged. It adds support for r-a understanding the length of: * `let a: [u8; 2] = ...` * `let a = b"aaa"` * `let a = [0u8; 4]` I have added support for getting the values of byte strings, which was not previously there. I am least confident in the correctness of this part and it probably needs some more tests, as we currently have only one test that exercised that part (!). Fixes #2922. Co-authored-by: Jade <[email protected]>
| * Address final feedbackJade2021-05-163-31/+17
| | | | | | | | | | * rename ConstExtension->ConstExt * refactor a manual construction of a Const
| * Add more tests, refactor array lengths/consteval workJade2021-05-145-34/+179
| | | | | | | | | | | | | | | | | | | | | | Fix #2922: add unknown length as a condition for a type having unknown. Incorporate reviews: * Extract some of the const evaluation workings into functions * Add fixmes on the hacks * Add tests for impls on specific array lengths (these work!!! 😁) * Add tests for const generics (indeed we don't support it yet)
| * Test lowering byte strings some moreJade2021-05-131-14/+25
| |
| * Add support for lengths in array repeats, if they are literalsJade2021-05-132-7/+17
| | | | | | | | Now we will get the type of `[0u8; 4]`.
| * Support length for ByteStringsJade2021-05-132-8/+16
| | | | | | | | I am not confident that my added byte string parsing is right.
| * Add lowering of array lengths in typesJade2021-05-139-76/+64
| | | | | | | | | | | | | | | | | | | | | | Now e.g. ```rust fn a(b: [u8; 2]) { } ``` will know about the length of b.
* | Fix false positive "Missing match arm".Dawer2021-05-143-5/+7
|/
* Merge #8799bors[bot]2021-05-1211-109/+155
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | 8799: Add basic support for array lengths in types r=flodiebold a=lf- This recognizes `let a = [1u8, 2, 3]` as having type `[u8; 3]` instead of the previous `[u8; _]`. Byte strings and `[0u8; 2]` kinds of range array declarations are unsupported as before. I don't know why a bunch of our rustc tests had single quotes inside strings un-escaped by `UPDATE_EXPECT=1 cargo t`, but I don't think it's bad? Maybe something in a nightly? Co-authored-by: Jade <[email protected]>
| * address review by @eddybJade2021-05-112-2/+3
| |
| * Add basic support for array lengths in typesJade2021-05-1111-109/+154
| | | | | | | | | | | | | | | | | | | | This recognizes `let a = [1u8, 2, 3]` as having type `[u8; 3]` instead of the previous `[u8; _]`. Byte strings and `[0u8; 2]` kinds of range array declarations are unsupported as before. I don't know why a bunch of our rustc tests had single quotes inside strings un-escaped by `UPDATE_EXPECT=1 cargo t`, but I don't think it's bad? Maybe something in a nightly?
* | Merge #8398bors[bot]2021-05-113-2/+51
|\ \ | |/ |/| | | | | | | | | | | 8398: Fix inference with conditionally compiled tails r=flodiebold a=DJMcNab Fixes #8378 Co-authored-by: Daniel McNab <[email protected]>
| * Add a test for conditionally compiled tailsDaniel McNab2021-05-031-0/+49
| |