aboutsummaryrefslogtreecommitdiff
path: root/crates/hir/src
Commit message (Collapse)AuthorAgeFilesLines
* Refactor the import locationKirill Bulatov2021-03-081-0/+11
|
* Do not propose already imported importsKirill Bulatov2021-03-081-1/+1
|
* 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 :)
* | Make it possible to retrieve `hir::Function`'s return typeArnaud2021-01-041-0/+23
| | | | | | | | | | | | This is done by adding a `ret_type` method to `hir::Function`. I followed `assoc_fn_params` convention by creating a new `RetType` type, that contains the actual return type accessible via a `ty` method.
* | Show GotoTypeAction for TypeParamLukas Wirth2021-01-041-0/+12
| |
* | Show GotoTypeAction for ConstParamLukas Wirth2021-01-041-0/+6
| |