aboutsummaryrefslogtreecommitdiff
path: root/crates/hir
Commit message (Collapse)AuthorAgeFilesLines
* Merge #7873 #7933bors[bot]2021-03-091-0/+11
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7873: Consider unresolved qualifiers during flyimport r=matklad a=SomeoneToIgnore Closes https://github.com/rust-analyzer/rust-analyzer/issues/7679 Takes unresolved qualifiers into account, providing better completions (or none, if the path is resolved or do not match). Does not handle cases when both path qualifier and some trait has to be imported: there are many extra issues with those (such as overlapping imports, for instance) that will require large diffs to address. Also does not do a fuzzy search on qualifier, that requires some adjustments in `import_map` for better queries and changes to the default replace range which also seems relatively big to include here. ![qualifier_completion](https://user-images.githubusercontent.com/2690773/110040808-0af8dc00-7d4c-11eb-83db-65af94e843bb.gif) 7933: Improve compilation speed r=matklad a=matklad bors r+ 🤖 Co-authored-by: Kirill Bulatov <[email protected]> Co-authored-by: Aleksey Kladov <[email protected]>
| * Less lifetines: derive SemanticsScope in placeKirill Bulatov2021-03-081-1/+1
| |
| * Refactor the import locationKirill Bulatov2021-03-081-0/+11
| |
| * Do not propose already imported importsKirill Bulatov2021-03-081-1/+1
| |
* | Use `Type::new_with_resolver_inner` moreJonas Schievink2021-03-091-26/+14
|/
* Hygiene is an internal implementation detail of the compilerAleksey Kladov2021-03-081-2/+5
|
* Remove useless code_model indirectionAleksey Kladov2021-03-085-2132/+2120
|
* Rename a few `crate_def_map`s to `def_map`Jonas Schievink2021-03-061-3/+3
| | | | These could all be block `DefMap`s instead of crate-level `DefMap`s
* Use chalk_ir::AdtIdLukas Wirth2021-03-041-3/+3
|
* Show docs on hover for keywords and primitivesLukas Wirth2021-03-021-6/+5
|
* Use chalk_ir::MutabilityLukas Wirth2021-03-011-5/+8
|
* Introduce Ty::AliasLukas Wirth2021-03-011-4/+4
|
* Being Ty::InferenceVar closes to chalk equivalentLukas Wirth2021-03-011-2/+2
|
* Lift FnPointer into a structLukas Wirth2021-02-281-5/+5
|
* Turn Ty::Tuple variant into a tuple-variantLukas Wirth2021-02-281-2/+2
|
* Merge #7813bors[bot]2021-02-282-106/+61
|\ | | | | | | | | | | | | | | 7813: Inline TypeCtor into Ty r=flodiebold a=Veykril This removes the `ApplicationTy` variant from `Ty` bringing the representation a lot closer to chalk's `TyKind`. Co-authored-by: Lukas Wirth <[email protected]>
| * Fix code_model::Type::walk not walking all typesLukas Wirth2021-02-281-7/+7
| |
| * Inline TypeCtor into TyLukas Wirth2021-02-282-104/+59
| |
* | Merge #7804bors[bot]2021-02-281-3/+6
|\| | | | | | | | | | | | | | | 7804: Introduce TypeCtor::Scalar r=lnicola a=Veykril `TypeCtor::Int(..) | TypeCtor::Float(..) | TypeCtor::Char | TypeCtor::Bool` => `TypeCtor::Scalar(..)`, in this case we can actually just straight up use `chalk_ir::Scalar` already since its just a POD without any IDs or anything. Co-authored-by: Lukas Wirth <[email protected]>
| * Introduce TypeCtor::ScalarLukas Wirth2021-02-281-3/+6
| |
* | For unresolved macros, hightlight only the last segmentAleksey Kladov2021-02-282-6/+6
|/
* Don't write trailing whitespace when formatting empty GenericPredicatesLukas Wirth2021-02-201-3/+2
|
* Consider import prefix config settings during flyimportsKirill Bulatov2021-02-201-1/+1
|
* expose hir::Type::type_paramtersVladyslav Katasonov2021-02-131-0/+12
| | | | Used to get E parameter from `Result<T, E>`
* Wrap `BuiltinType` in code modelJonas Schievink2021-02-114-11/+41
|
* Resolve TupleStructPat in SourceAnalyzer::resolve_pathLukas Wirth2021-02-101-6/+11
|
* Prefer ValueNS when resolving hir path for PathExpressionsLukas Wirth2021-01-291-14/+31
|
* Classify function calls as functions when shadowed by typesLukas Wirth2021-01-281-2/+6
|
* Create all `ModuleId`s through a `DefMap` methodJonas Schievink2021-01-252-23/+14
| | | | | `ModuleId` needs to be able to represent blocks, and only the associated `DefMap` will know how to construct that `ModuleId`
* Implement fix, add testsPhil Ellison2021-01-231-9/+0
|
* Add diagnostic for filter_map followed by nextPhil Ellison2021-01-231-1/+10
|
* Make `ModuleId`'s `krate` field privateJonas Schievink2021-01-222-22/+36
|
* Obtain `ModuleId`'s `DefMap` through a methodJonas Schievink2021-01-223-12/+13
|
* Fix broken link in intra-docDaiki Ihara2021-01-221-0/+6
|
* Add name resolution query for block expressionsJonas Schievink2021-01-211-7/+7
|
* Make public DefMap fields privateJonas Schievink2021-01-201-3/+3
|
* Merge #7351bors[bot]2021-01-192-2/+2
|\ | | | | | | | | | | | | | | | | | | 7351: Show const params in completions r=Veykril a=Veykril bors r+ ![image](https://user-images.githubusercontent.com/3757771/105080872-bba76680-5a91-11eb-91cd-0910da4c8312.png) Co-authored-by: Lukas Wirth <[email protected]>
| * Show const params in completionsLukas Wirth2021-01-192-2/+2
| |
* | Show deprecated completions for deprecated traitsKirill Bulatov2021-01-181-9/+10
|/
* Add flyimport completion for trait assoc itemsKirill Bulatov2021-01-161-0/+16
|
* Handle self/super/crate in PathSegment as NameRefLukas Wirth2021-01-152-0/+10
|
* Merge #7218bors[bot]2021-01-101-1/+1
|\ | | | | | | | | | | | | | | 7218: Fix typos r=Veykril a=regexident Apart from the very last commit on this PR (which fixes a public type's name) all changes are non-breaking. Co-authored-by: Vincent Esche <[email protected]>
| * Fixed typos in code commentsVincent Esche2021-01-091-1/+1
| |
* | Use hir::GenericParam in ide_db::Definition instead of relisting all 3Lukas Wirth2021-01-101-0/+18
|/
* Merge #7145bors[bot]2021-01-081-2/+2
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7145: Proper handling $crate Take 2 [DO NOT MERGE] r=edwin0cheng a=edwin0cheng Similar to previous PR (#7133) , but improved the following things : 1. Instead of storing the whole `ExpansionInfo`, we store a similar but stripped version `HygieneInfo`. 2. Instread of storing the `SyntaxNode` (because every token we are interested are IDENT), we store the `TextRange` only. 3. Because of 2, we now can put it in Salsa. 4. And most important improvement: Instead of computing the whole frames every single time, we compute it recursively through salsa: (Such that in the best scenario, we only need to compute the first layer of frame) ```rust let def_site = db.hygiene_frame(info.def.file_id); let call_site = db.hygiene_frame(info.arg.file_id); HygieneFrame { expansion: Some(info), local_inner, krate, call_site, def_site } ``` The overall speed compared to previous PR is much faster (65s vs 45s) : ``` [WITH old PR] Database loaded 644.86ms, 284mi Crates in this dir: 36 Total modules found: 576 Total declarations: 11153 Total functions: 8715 Item Collection: 15.78s, 91562mi Total expressions: 240721 Expressions of unknown type: 2635 (1%) Expressions of partially unknown type: 2064 (0%) Type mismatches: 865 Inference: 49.84s, 250747mi Total: 65.62s, 342310mi rust-analyzer -q analysis-stats . 66.72s user 0.57s system 99% cpu 1:07.40 total [WITH this PR] Database loaded 665.83ms, 284mi Crates in this dir: 36 Total modules found: 577 Total declarations: 11188 Total functions: 8743 Item Collection: 15.28s, 84919mi Total expressions: 241229 Expressions of unknown type: 2637 (1%) Expressions of partially unknown type: 2064 (0%) Type mismatches: 868 Inference: 30.15s, 135293mi Total: 45.43s, 220213mi rust-analyzer -q analysis-stats . 46.26s user 0.74s system 99% cpu 47.294 total ``` *HOWEVER*, it is still a perf regression (35s vs 45s): ``` [WITHOUT this PR] Database loaded 657.42ms, 284mi Crates in this dir: 36 Total modules found: 577 Total declarations: 11177 Total functions: 8735 Item Collection: 12.87s, 72407mi Total expressions: 239380 Expressions of unknown type: 2643 (1%) Expressions of partially unknown type: 2064 (0%) Type mismatches: 868 Inference: 22.88s, 97889mi Total: 35.74s, 170297mi rust-analyzer -q analysis-stats . 36.71s user 0.63s system 99% cpu 37.498 total ``` Co-authored-by: Edwin Cheng <[email protected]>
| * Proper handling $crate Take 2Edwin Cheng2021-01-071-2/+2
| |
* | Add fix to wrap return expression in SomePhil Ellison2021-01-071-1/+1
| |
* | Rename expr -> tail_exprAleksey Kladov2021-01-051-3/+4
| |
* | Remove `RetType`Arnaud2021-01-041-18/+3
| |
* | Document `hir::Function::ret_type`Arnaud2021-01-041-0/+4
| | | | | | | | | | This adds documentation for the newly added function. It might be a bit too detailed, but I like it that way :)