aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty
Commit message (Collapse)AuthorAgeFilesLines
* 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 #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]>
| | * Use hir formatter moreoxalica2021-03-151-1/+1
| | |
| | * Impl HirDisplay for function hover messageoxalica2021-03-151-8/+195
| | |
| | * Introduce FunctionQualifier for hir::FunctionDataoxalica2021-03-152-4/+4
| | |
* | | Fix macro expansion for statements w/o semicolonEdwin Cheng2021-03-161-0/+16
| | |
* | | Use SmallVec for SubstsFlorian Diebold2021-03-153-14/+29
| | | | | | | | | | | | | | | Doesn't help as much as I hoped, but it helps a bit and I also did some refactorings that were necessary anyway.
* | | Fix unification logicFlorian Diebold2021-03-152-101/+117
| |/ |/|
* | Merge #8029bors[bot]2021-03-151-2/+2
|\ \ | | | | | | | | | | | | | | | | | | | | | 8029: Enable thread-local coverage marks r=JoshMcguigan a=lnicola Co-authored-by: Laurențiu Nicola <[email protected]>
| * | Enable thread-local coverage marksLaurențiu Nicola2021-03-151-2/+2
| | |
* | | Merge #8020bors[bot]2021-03-151-1/+9
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8020: Power up goto_implementation r=matklad a=Veykril by allowing it to be invoked on references of names, now showing all (trait) implementations of the given type in all crates instead of just the defining crate as well as including support for builtin types ![image](https://user-images.githubusercontent.com/3757771/111144403-52bb0700-8587-11eb-9205-7a2a5b8b75a3.png) Example screenshot of `impl`s of Box in `log`, `alloc`, `std` and the current crate. Before you had to invoke it on the definition where it would only show the `impls` in `alloc`. Co-authored-by: Lukas Wirth <[email protected]>
| * | Speedup trait impl search for goto_implementationLukas Wirth2021-03-151-1/+9
| | |
* | | Merge #8018bors[bot]2021-03-1510-137/+126
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8018: Make Ty wrap TyKind in an Arc r=flodiebold a=flodiebold ... to further move towards Chalk. This is a bit of a slowdown (218ginstr vs 213ginstr for inference on RA), even though it allows us to unwrap the Substs in `TyKind::Ref` etc.. Co-authored-by: Florian Diebold <[email protected]>
| * | | Don't use Substs for Ref/Raw/Array/SliceFlorian Diebold2021-03-149-111/+74
| | | |
| * | | Make Ty wrap TyKind in an ArcFlorian Diebold2021-03-148-27/+53
| |/ / | | | | | | | | | | | | | | | | | | | | | ... like it will be in Chalk. We still keep `interned_mut` and `into_inner` methods that will probably not exist with Chalk. This worsens performance slightly (5ginstr inference on RA), but doesn't include other simplifications we can do yet.
* / / Simplify source maps for fieldsAleksey Kladov2021-03-152-6/+5
|/ /
* | More renamingFlorian Diebold2021-03-144-18/+22
| |
* | Use chalk_ir::FnSigFlorian Diebold2021-03-145-21/+22
| |
* | Rename some fields to their Chalk namesFlorian Diebold2021-03-1410-45/+45
| |
* | Move type lowering methods to TyLoweringContextFlorian Diebold2021-03-134-286/+246
| |
* | Create TraitEnvironment through a queryFlorian Diebold2021-03-134-45/+59
| |
* | Use chalk_ir::OpaqueTyIdFlorian Diebold2021-03-137-63/+53
| |
* | Use chalk_ir::PlaceholderIndexFlorian Diebold2021-03-137-43/+52
| |
* | Use chalk_ir::ClosureIdFlorian Diebold2021-03-135-23/+17
| |
* | Use chalk_ir::FnDefIdFlorian Diebold2021-03-139-26/+47
| |
* | Use chalk_ir::AssocTypeIdFlorian Diebold2021-03-139-74/+82
| |
* | Use chalk_ir::ForeignDefIdFlorian Diebold2021-03-136-38/+32
| |
* | Separate `Ty` and `TyKind` like in ChalkFlorian Diebold2021-03-1318-583/+718
| | | | | | | | | | Currently `Ty` just wraps `TyKind`, but this allows us to change most places to already use `intern` / `interned`.
* | Remove `ItemTree::source`Jonas Schievink2021-03-121-6/+4
|/ | | | `HasSource` should be used instead
* Simplify a bitFlorian Diebold2021-03-121-10/+5
|