aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty/src/lib.rs
Commit message (Collapse)AuthorAgeFilesLines
* internal: move diagnostics to hirAleksey Kladov2021-05-251-0/+1
| | | | | | | | | | | | | | | | | | | | | | | 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.
* Add test for #8931 and better checkingFlorian Diebold2021-05-231-11/+83
|
* Rework obligation handlingFlorian Diebold2021-05-211-1/+2
| | | | | | | | 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 HIR expecting errors to unify with anythingFlorian Diebold2021-05-211-0/+56
|
* Fix coercion of two closures to a function pointerFlorian Diebold2021-05-211-0/+1
| | | | Fixes #8604.
* Rewrite coercion using the new unificationFlorian Diebold2021-05-211-0/+11
|
* Add more tests, refactor array lengths/consteval workJade2021-05-141-0/+1
| | | | | | | | | | | 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)
* Add lowering of array lengths in typesJade2021-05-131-3/+6
| | | | | | | | | | | Now e.g. ```rust fn a(b: [u8; 2]) { } ``` will know about the length of b.
* Add basic support for array lengths in typesJade2021-05-111-2/+5
| | | | | | | | | | 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?
* Exclude inherent traits from flyimportsKirill Bulatov2021-04-161-0/+1
|
* More cleanups / module docsFlorian Diebold2021-04-091-2/+2
|
* More cleanupsFlorian Diebold2021-04-091-22/+20
|
* More moving stuff aroundFlorian Diebold2021-04-091-55/+6
|
* Move ToChalk -> mappingFlorian Diebold2021-04-091-1/+1
|
* Reorganize hir_ty modulesFlorian Diebold2021-04-091-1/+6
| | | | | 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`.
* Intern SubstitutionsFlorian Diebold2021-04-081-2/+2
| | | | (Costs a bit of performance, reduces memory usage on RA by ~10%.)
* Remove unusedFlorian Diebold2021-04-081-3/+0
|
* Replace remaining `fold` callsFlorian Diebold2021-04-081-0/+27
|
* Replace some `fold` callsFlorian Diebold2021-04-081-0/+26
|
* Fix shifted_{in,out} callsFlorian Diebold2021-04-081-4/+4
|
* Fix subst_prefixFlorian Diebold2021-04-081-1/+4
|
* Impl Fold for CallableSigFlorian Diebold2021-04-081-0/+18
|
* Add HasInterner boundsFlorian Diebold2021-04-081-4/+11
|
* Allow unusedFlorian Diebold2021-04-081-0/+3
|
* Replace all the types by their Chalk versionsFlorian Diebold2021-04-081-4/+31
|
* Merge #8409bors[bot]2021-04-071-17/+13
|\ | | | | | | | | | | | | | | 8409: Various remaining fixes for Chalk IR move r=flodiebold a=flodiebold CC #8313 Co-authored-by: Florian Diebold <[email protected]>
| * Make Canonical::new a free-standing functionFlorian Diebold2021-04-071-10/+12
| |
| * Move hir_trait_id to extension traitFlorian Diebold2021-04-071-7/+1
| |
* | Move `equals_ctor` to `TyExt`Florian Diebold2021-04-071-31/+1
|/ | | | | | I'd prefer getting rid of it, but it's used in the impl search and not super easy to replace there (I think ideally the impl search would do proper unification, but that's a bit more complicated).
* Remove Ty::substs{_mut}Florian Diebold2021-04-071-28/+0
| | | | | | Almost all uses actually only care about ADT substs, so it's better to be explicit. The methods were a bad abstraction anyway since they already didn't include the inner types of e.g. `TyKind::Ref` anymore.
* Move Ty::builtin_derefLukas Wirth2021-04-071-8/+0
|
* Align `InferenceVar` to ChalkFlorian Diebold2021-04-061-1/+1
|
* Move Ty accessors to TyExtLukas Wirth2021-04-061-211/+3
|
* Add chalk_ir::Const to TyKind::ArrayLukas Wirth2021-04-061-3/+26
|
* Use a constructor function for Static lifetimesLukas Wirth2021-04-061-0/+4
|
* Add Lifetime to TyKind::RefLukas Wirth2021-04-061-4/+4
|
* Align FnPointer with ChalkFlorian Diebold2021-04-051-6/+7
|
* Substitution::prefix -> subst_prefixFlorian Diebold2021-04-051-4/+3
| | | | I probably want to get rid of this function completely later.
* Get rid of Substitution::suffixFlorian Diebold2021-04-051-6/+0
|
* Remove some unused methods, move some to types.rsFlorian Diebold2021-04-051-29/+0
|
* Binders::wrap_empty -> wrap_empty_bindersFlorian Diebold2021-04-051-7/+5
|
* Substitution::single -> from1Florian Diebold2021-04-051-9/+0
|
* Move ProjectionTy methods to extension traitFlorian Diebold2021-04-051-24/+2
|
* Replace unused hir_ty::Lifetime with chalk equivalentsLukas Wirth2021-04-051-2/+12
|
* Rename shift_bound_vars{_out} to align with ChalkFlorian Diebold2021-04-051-2/+3
|
* Add Interner parameter to Binders::substituteFlorian Diebold2021-04-051-5/+5
|
* Binders::subst -> substituteFlorian Diebold2021-04-051-4/+4
|
* Use VariableKinds in BindersFlorian Diebold2021-04-051-10/+16
|
* Hide Binders internals moreFlorian Diebold2021-04-051-33/+11
|
* Pass interner to TraitRef::self_type_parameterLaurențiu Nicola2021-04-051-3/+5
|