aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty
Commit message (Collapse)AuthorAgeFilesLines
...
* Rename Ty::interned to Ty::kindFlorian Diebold2021-04-0316-62/+60
| | | | ... since that's the actual method on Chalk side that matches the signature.
* Introduce `GenericArg` like in ChalkFlorian Diebold2021-04-0316-152/+301
| | | | | | | Plus some more adaptations to Substitution. Lots of `assert_ty_ref` that we should revisit when introducing lifetime/const parameters.
* Merge #8284bors[bot]2021-04-021-1/+1
|\ | | | | | | | | | | | | | | 8284: Reduce memory usage by using global `Arc`-based interning r=jonas-schievink a=jonas-schievink This saves around 50 mb when running `analysis-stats` on r-a itself. Not a lot, but this infra can be easily reused to intern more stuff. Co-authored-by: Jonas Schievink <[email protected]>
| * Global TypeRef/TraitRef interningJonas Schievink2021-04-011-1/+1
| |
* | Merge #8287bors[bot]2021-04-021-36/+33
|\ \ | | | | | | | | | | | | | | | | | | | | | 8287: Don't allocate in `associated_type_shorthand_candidates` r=Veykril a=Veykril Co-authored-by: Lukas Wirth <[email protected]>
| * | Don't allocate in `associated_type_shorthand_candidates`Lukas Wirth2021-04-021-36/+33
| | |
* | | minor: add profile call for resolve_obligationsAleksey Kladov2021-04-021-0/+2
| | |
* | | Merge #8285bors[bot]2021-04-024-8/+26
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | 8285: Don't recheck obligations if we have learned nothing new r=matklad a=flodiebold This is just the most trivial check: If no inference variables have been updated, and there are no new obligations, we can just skip trying to solve them again. We could be smarter about it, but this already helps quite a bit, and I don't want to touch this too much before we replace the inference table by Chalk's. Fixes #8263 (well, improves it quite a bit). Co-authored-by: Florian Diebold <[email protected]>
| * | Don't recheck obligations if we have learned nothing newFlorian Diebold2021-04-014-8/+26
| |/ | | | | | | | | | | | | | | | | | | This is just the most trivial check: If no inference variables have been updated, and there are no new obligations, we can just skip trying to solve them again. We could be smarter about it, but this already helps quite a bit, and I don't want to touch this too much before we replace the inference table by Chalk's. Fixes #8263 (well, improves it quite a bit).
* | Merge #8283bors[bot]2021-04-011-1/+1
|\ \ | |/ |/| | | | | | | | | | | 8283: Resolve associated types r=flodiebold a=Veykril Prior we were only resolving paths until the first type was found, then discarding the result if the path wasn't fully consumed. That of course causes associated types to not resolve. Fixes #5003 Co-authored-by: Lukas Wirth <[email protected]>
| * Resolve associated types with type anchorsLukas Wirth2021-04-011-1/+1
| |
* | Fix block inner item defined in macroEdwin Cheng2021-03-311-0/+26
|/
* Merge #8266bors[bot]2021-03-311-0/+43
|\ | | | | | | | | | | | | | | | | | | 8266: Fix generic arguments being incorrectly offset in qualified trait casts r=flodiebold a=Veykril We reverse the segments and generic args of the lowered path after building it, this wasn't accounted for when inserting the self parameter in `Type as Trait` segments. Fixes #5886 Co-authored-by: Lukas Wirth <[email protected]>
| * Fix generic arguments being incorrectly offset in qualified trait castsLukas Wirth2021-03-301-0/+43
| |
* | Merge #8186bors[bot]2021-03-301-8/+4
|\ \ | | | | | | | | | | | | | | | | | | | | | 8186: Lower traits to `TraitRef` instead of `TypeRef` r=matklad a=Veykril Co-authored-by: Lukas Wirth <[email protected]>
| * | Remove TraitRef::ErrorLukas Wirth2021-03-291-4/+1
| | |
| * | Rename target_ty to self_tyLukas Wirth2021-03-291-1/+1
| | |
| * | Lower traits to TraitRef instead of TypeRefLukas Wirth2021-03-291-7/+6
| | |
* | | Fix expansion of OR-patterns in match checkJesse Bakker2021-03-301-25/+15
| |/ |/|
* | internal: ensure that runaway type-inference doesn't block the main loopAleksey Kladov2021-03-291-0/+2
|/ | | | | | We have a bug where type-checking `per_query_memory_usage` takes a couple of seconds. It also reveals another bug: our type inference is not cancellable.
* Basic Support Macro 2.0Edwin Cheng2021-03-271-1/+82
|
* Merge #8201bors[bot]2021-03-272-1/+40
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8201: Fix recursive macro statements expansion r=edwin0cheng a=edwin0cheng This PR attempts to properly handle macro statement expansion by implementing the following: 1. Merge macro expanded statements to parent scope statements. 2. Add a new hir `Expr::MacroStmts` for handle tail expression infer. PS : The scope of macro expanded statements are so strange that it took more time than I thought to understand and implement it :( Fixes #8171 Co-authored-by: Edwin Cheng <[email protected]>
| * Fix recursive macro statement expansionEdwin Cheng2021-03-252-1/+40
| |
* | completion relevance consider if types can be unifiedJosh Mcguigan2021-03-263-1/+10
| |
* | Use arrayvec 0.6Laurențiu Nicola2021-03-253-7/+5
|/
* Merge #7907bors[bot]2021-03-247-36/+210
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7907: Autoderef with visibility r=cynecx a=cynecx Fixes https://github.com/rust-analyzer/rust-analyzer/issues/7841. I am not sure about the general approach here. Right now this simply tries to check whether the autoderef candidate is reachable from the current module. ~~However this doesn't exactly work with traits (see the `tests::macros::infer_derive_clone_in_core` test, which fails right now).~~ see comment below Refs: - `rustc_typeck` checking fields: https://github.com/rust-lang/rust/blob/66ec64ccf31883cd2c28d045912a76179c0c6ed2/compiler/rustc_typeck/src/check/expr.rs#L1610 r? @flodiebold Co-authored-by: cynecx <[email protected]>
| * hir_ty: don't call write_field_resolution when field candidate isn't visiblecynecx2021-03-241-6/+4
| |
| * hir_def: move visibility queries from hir_ty to hir_defcynecx2021-03-243-34/+5
| |
| * hir_ty: add coverage testing for autoderef_visibility_method testcynecx2021-03-202-0/+2
| |
| * hir_ty: fix test by removing trailing whitespacecynecx2021-03-201-24/+23
| |
| * hir_ty: iterate_method_candidates_for_self_ty pass `visible_from_module` ↵cynecx2021-03-201-1/+6
| | | | | | | | down to `iterate_inherent_methods`
| * hir_ty: fix visibility in infer_inherent_method testcynecx2021-03-201-16/+16
| |
| * hir_ty: introduce visible_from_module param into method resolutioncynecx2021-03-203-4/+33
| |
| * hir_ty: check field visibility while iterating through autoderef candidatescynecx2021-03-201-14/+36
| |
| * hir_ty: add field_visibilities and fn_visibility queriescynecx2021-03-202-4/+33
| |
| * hir_ty: add tests around autoderef with visibility checkingcynecx2021-03-201-0/+119
| |
| * hir_ty: fix tests by making required methods publiccynecx2021-03-202-4/+4
| |
* | Fix chalk_ir assertionFlorian Diebold2021-03-244-18/+42
| | | | | | | | Fixes #8150.
* | Merge #8156bors[bot]2021-03-222-8/+63
|\ \ | | | | | | | | | | | | | | | | | | | | | 8156: Correctly lower TraitRefs with default params r=flodiebold a=Veykril Fixes #5685 Co-authored-by: Lukas Wirth <[email protected]>
| * | Correctly lower TraitRefs with default paramsLukas Wirth2021-03-222-8/+63
| | |
* | | resolver: manually traverse nested block scopesJonas Schievink2021-03-221-0/+13
|/ /
* | Merge #8144bors[bot]2021-03-221-0/+6
|\ \ | | | | | | | | | | | | | | | | | | | | | 8144: bail out early for source code closures r=Veykril a=hi-rustin close https://github.com/rust-analyzer/rust-analyzer/issues/8084 Co-authored-by: hi-rustin <[email protected]>
| * | bail out early for source code closureshi-rustin2021-03-221-0/+6
| |/ | | | | | | add closure error
* | Merge #8139bors[bot]2021-03-229-109/+131
|\ \ | | | | | | | | | | | | | | | | | | | | | 8139: Align `Canonical` and `InEnvironment` with the Chalk versions r=flodiebold a=flodiebold Co-authored-by: Florian Diebold <[email protected]>
| * | Align InEnvironment with ChalkFlorian Diebold2021-03-218-45/+38
| | | | | | | | | | | | | | | | | | This in particular means storing a chalk_ir::Environment, not our TraitEnvironment. This makes InEnvironment not usable for Type, where we need to keep the full TraitEnvironment.
| * | Align Canonical more with Chalk's versionFlorian Diebold2021-03-215-68/+97
| | | | | | | | | | | | In particular, use chalk_ir::CanonicalVarKinds.
* | | Merge #8136 #8146bors[bot]2021-03-229-106/+200
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8136: Introduce QuantifiedWhereClause and DynTy analogous to Chalk r=flodiebold a=flodiebold This introduces a bunch of new binders in lots of places, which we have to be careful about, but we had to add them at some point. There's a lot of skipping of the binders; once we're done with the Chalk move, we should review the remaining ones. 8146: Document patch policy r=matklad a=matklad bors r+ 🤖 Co-authored-by: Florian Diebold <[email protected]> Co-authored-by: Aleksey Kladov <[email protected]>
| * | Use QuantifiedWhereClause in generic_predicates as wellFlorian Diebold2021-03-217-31/+26
| | | | | | | | | | | | | | | Still far too much binder skipping going on; I find it hard to imagine this is all correct, but the tests pass.
| * | Introduce QuantifiedWhereClause and DynTy analogous to ChalkFlorian Diebold2021-03-216-98/+197
| | | | | | | | | | | | | | | This introduces a bunch of new binders in lots of places, which we have to be careful about, but we had to add them at some point.
* | | Merge #8137bors[bot]2021-03-213-9/+51
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8137: Fix box pattern inference panic r=flodiebold a=Veykril Fixes #6560 Co-authored-by: Lukas Wirth <[email protected]>