aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty/src
Commit message (Collapse)AuthorAgeFilesLines
* Use arrayvec 0.6Laurențiu Nicola2021-03-252-6/+4
|
* 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]>
| * | | Fix box pattern inference panicLukas Wirth2021-03-213-9/+51
| | | |
* | | | Merge #8134bors[bot]2021-03-211-0/+23
|\ \ \ \ | |_|/ / |/| | | | | | | | | | | | | | | | | | | | | | | 8134: Correct the paths of submodules from the include! macro r=edwin0cheng a=sticnarf This PR should fix #7846. It mostly follows the instructions from @edwin0cheng in that issue. Co-authored-by: Yilin Chen <[email protected]>
| * | | use the included file as the source of expanded include macroYilin Chen2021-03-211-0/+23
| | |/ | |/| | | | | | | Signed-off-by: Yilin Chen <[email protected]>
* | | Merge #8133bors[bot]2021-03-216-15/+169
|\ \ \ | |_|/ |/| | | | | | | | | | | | | | | | | | | | | | | 8133: Ignore type bindings in generic_predicates_for_param (fix panic on ena and crates depending on it) r=flodiebold a=flodiebold This allows us to handle more cases without a query cycle, which includes certain cases that rustc accepted. That in turn means we avoid triggering salsa-rs/salsa#257 on valid code (it will still happen if the user writes an actual cycle). We actually accept more definitions than rustc now; that's because rustc only ignores bindings when looking up super traits, whereas we now also ignore them when looking for predicates to disambiguate associated type shorthand. We could introduce a separate query for super traits if necessary, but for now I think this should be fine. Co-authored-by: Florian Diebold <[email protected]>
| * | Ignore type bindings in generic_predicates_for_paramFlorian Diebold2021-03-215-18/+48
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows us to handle more cases without a query cycle, which includes certain cases that rustc accepted. That in turn means we avoid triggering salsa-rs/salsa#257 on valid code (it will still happen if the user writes an actual cycle). We actually accept more definitions than rustc now; that's because rustc only ignores bindings when looking up super traits, whereas we now also ignore them when looking for predicates to disambiguate associated type shorthand. We could introduce a separate query for super traits if necessary, but for now I think this should be fine.
| * | Test for a Salsa bugFlorian Diebold2021-03-213-0/+124
| |/
* | clippy::complexity simplifications related to IteratorsMatthias Krüger2021-03-211-1/+1
| |
* | remove more redundant clones (clippy::redundant_clone())Matthias Krüger2021-03-211-2/+1
|/
* Turn Obligation into something similar to chalk_ir::DomainGoalFlorian Diebold2021-03-2013-86/+124
| | | | This includes starting to make use of Chalk's `Cast` trait.
* Remove WhereClause::ErrorFlorian Diebold2021-03-207-42/+8
| | | | | Chalk doesn't have it, and judging from the removed code, it wasn't useful anyway.
* Rename GenericPredicate -> WhereClauseFlorian Diebold2021-03-209-99/+83
|
* Replace Projection variant in GenericPredicate with AliasEqLukas Wirth2021-03-199-120/+210
|
* Chalkify TraitRefFlorian Diebold2021-03-1814-68/+94
|
* Fix infinite recursion when computing diagnostics for inner itemsJonas Schievink2021-03-181-1/+14
|
* Merge #8082bors[bot]2021-03-181-0/+22
|\ | | | | | | | | | | | | | | | | | | | | | | 8082: Proper handle inner recursive macro rules cases r=edwin0cheng a=edwin0cheng Fixes #7645 cc @jonas-schievink bors r+ Co-authored-by: Edwin Cheng <[email protected]>
| * Handle inner recursive macro rules casesEdwin Cheng2021-03-181-0/+22
| |
* | Support `#[cfg]` on all associated itemsJonas Schievink2021-03-181-0/+19
| |
* | Add test for self-calling inner functionJonas Schievink2021-03-171-0/+21
| |
* | Improve testJonas Schievink2021-03-171-0/+21
| |
* | Add test for `#[cfg]` on function paramsJonas Schievink2021-03-171-0/+13
| |
* | Handle `#[cfg]` on call argumentsJonas Schievink2021-03-171-0/+23
|/
* avoid converting types into themselves via .into() (clippy::useless-conversion)Matthias Krüger2021-03-174-20/+20
| | | | example: let x: String = String::from("hello world").into();
* Rename Substs -> SubstitutionFlorian Diebold2021-03-1614-143/+155
|
*-. Merge #7900 #8000bors[bot]2021-03-164-13/+200
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7900: show function params in completion detail r=matklad a=JoshMcguigan This resolves #7842 by updating the detail for function completions from `-> T` to `fn(T, U) -> V`. I added an expicit unit test for this, `ide_completion::render::fn_detail_includes_args_and_return_type`, which passes. Lots of other unit tests fail (~60 of them) due to this change, although I believe the failures are purely cosmetic (they were testing the exact format of this output). I'm happy to go update those tests, but before I do that I'd like to make sure this is in fact the format we want for the detail? edit - I realized `UPDATE_EXPECT=1 cargo test` automatically updates `expect!` tests. Big :+1: to whoever worked on that! So I'll go ahead and update all these tests soon. But I still would like to confirm `fn(T, U) -> V` is the desired content in the `detail` field. 8000: Use hir formatter for hover text r=matklad a=oxalica Fix #2765 , (should) fix #4665 Co-authored-by: Josh Mcguigan <[email protected]> Co-authored-by: oxalica <[email protected]>