aboutsummaryrefslogtreecommitdiff
path: root/crates/hir/src/lib.rs
Commit message (Collapse)AuthorAgeFilesLines
...
* Use arrayvec 0.6Laurențiu Nicola2021-03-251-1/+1
|
* Merge #7907bors[bot]2021-03-241-0/+2
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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: don't use the self module as visible_from in iterate_method_candidatescynecx2021-03-241-6/+1
| |
| * hir_ty: introduce visible_from_module param into method resolutioncynecx2021-03-201-0/+7
| |
* | simplifyLukas Wirth2021-03-231-0/+15
| |
* | Make more use of the HIR in rename::rename_to_selfLukas Wirth2021-03-231-4/+17
| |
* | Merge hir::MacroDef::is_* into hir::MacroDef::kindLukas Wirth2021-03-231-14/+17
| |
* | Set up a search scope when searching for mbe macro referencesLukas Wirth2021-03-231-0/+5
| |
* | Align naming of deps and revdepsAleksey Kladov2021-03-231-5/+1
| |
* | Compute more mathematically well-rounded notion of transitive depsAleksey Kladov2021-03-231-2/+1
| | | | | | | | | | | | | | | | By including the crate itself, we make the resulting set closed with respect to `transitve_reveres_dependencies` operation, as it becomes a proper transitive closure. This just feels more proper and mathy. And, indeed, this actually allows us to simplify call sites somewhat.
* | Align InEnvironment with ChalkFlorian Diebold2021-03-211-77/+55
| | | | | | | | | | | | 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-211-13/+28
| | | | | | | | In particular, use chalk_ir::CanonicalVarKinds.
* | Use QuantifiedWhereClause in generic_predicates as wellFlorian Diebold2021-03-211-1/+1
| | | | | | | | | | 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-211-6/+11
| | | | | | | | | | 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-211-1/+4
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-211-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.
* | | clippy::complexity simplifications related to IteratorsMatthias Krüger2021-03-211-1/+1
|/ /
* / Track labels in scopesLukas Wirth2021-03-211-0/+1
|/
* Turn Obligation into something similar to chalk_ir::DomainGoalFlorian Diebold2021-03-201-5/+6
| | | | This includes starting to make use of Chalk's `Cast` trait.
* Rename GenericPredicate -> WhereClauseFlorian Diebold2021-03-201-6/+6
|
* Add `AttrsWithOwner` and clean up `source_map`Jonas Schievink2021-03-191-1/+1
|
* Replace Projection variant in GenericPredicate with AliasEqLukas Wirth2021-03-191-11/+11
|
* Chalkify TraitRefFlorian Diebold2021-03-181-5/+5
|
* Store an `AstId` for procedural macrosJonas Schievink2021-03-181-2/+5
|
* Make MacroDefId's `AstId` mandatory when possibleJonas Schievink2021-03-181-1/+2
|
* Merge #8059bors[bot]2021-03-171-1/+1
|\ | | | | | | | | | | | | | | 8059: Move doc-comment highlight injection from AST to HIR r=matklad,jonas-schievink a=Veykril Fixes #5016 Co-authored-by: Lukas Wirth <[email protected]>
| * Properly handle doc attributes in doc-comment highlight injectionLukas Wirth2021-03-161-1/+1
| |
* | avoid converting types into themselves via .into() (clippy::useless-conversion)Matthias Krüger2021-03-171-6/+6
| | | | | | | | example: let x: String = String::from("hello world").into();
* | Rename Substs -> SubstitutionFlorian Diebold2021-03-161-8/+8
|/
* Merge #8034bors[bot]2021-03-161-4/+19
|\ | | | | | | | | | | | | | | 8034: Implement Crate::transitive_reverse_dependencies r=matklad a=Veykril changelog internal Implement Crate::transitive_reverse_dependencies Co-authored-by: Lukas Wirth <[email protected]>
| * Implement Crate::transitive_reverse_dependenciesLukas Wirth2021-03-151-4/+19
| |
| |
| \
*-. \ Merge #7900 #8000bors[bot]2021-03-161-24/+61
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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/+35
| | | |
| | * | Impl HirDisplay for function hover messageoxalica2021-03-151-2/+15
| | | |
| | * | Introduce FunctionQualifier for hir::FunctionDataoxalica2021-03-151-1/+1
| | | |
| | * | Collect HirDisplay impls to a single fileoxalica2021-03-151-20/+2
| | |/
| * | show function params in completion detailJosh Mcguigan2021-03-121-0/+8
| | |
* | | 7709: Import changes.Chetan Khilosiya2021-03-151-4/+2
| | |
* | | 7709: Added the check for return type of len function.Chetan Khilosiya2021-03-151-0/+7
| |/ |/|
* | Merge #8020bors[bot]2021-03-151-14/+44
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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]>
| * | goto_implementation: Look at the entire crate graph for trait implsLukas Wirth2021-03-151-8/+3
| | |
| * | Speedup trait impl search for goto_implementationLukas Wirth2021-03-151-2/+10
| | |
| * | Power up goto_implementationLukas Wirth2021-03-151-13/+40
| | | | | | | | | | | | | | | by allowing it to be invoked on references of names, showing all (trait) implementations of the given type in all crates including builtin types
* | | Merge #8018bors[bot]2021-03-151-5/+29
|\ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-141-5/+29
| |/ /
* / / some clippy::performance fixesMatthias Krüger2021-03-151-2/+1
|/ / | | | | | | | | | | | | use vec![] instead of Vec::new() + push() avoid redundant clones use chars instead of &str for single char patterns in ends_with() and starts_with() allocate some Vecs with capacity to avoid unneccessary resizing
* | More renamingFlorian Diebold2021-03-141-1/+1
| |
* | Rename some fields to their Chalk namesFlorian Diebold2021-03-141-2/+2
| |
* | Move type lowering methods to TyLoweringContextFlorian Diebold2021-03-131-3/+3
| |
* | Create TraitEnvironment through a queryFlorian Diebold2021-03-131-5/+7
| |