aboutsummaryrefslogtreecommitdiff
path: root/crates/hir
Commit message (Collapse)AuthorAgeFilesLines
* Thread proc-macro types through the HIRJonas Schievink2021-05-291-5/+13
|
* Don't store supertraits in ItemTreeLaurențiu Nicola2021-05-271-4/+0
|
* Merge #8997bors[bot]2021-05-271-20/+6
|\ | | | | | | | | | | | | | | | | | | | | | | 8997: internal: stop expanding UseTrees during ItemTree lowering r=jonas-schievink a=jonas-schievink Closes https://github.com/rust-analyzer/rust-analyzer/issues/8908 Messy diff, but `ItemTree` lowering got simpler, since we now have a strict 1-to-1 mapping between `ast::Item` and `ModItem`. The most messy part is mapping a single `UseTree` back to its `ast::UseTree` counterpart for diagnostics, but I think the ad-hoc source map built during lowering does the job. Co-authored-by: Jonas Schievink <[email protected]>
| * Stop expanding UseTrees during ItemTree loweringJonas Schievink2021-05-261-20/+6
| |
* | simplifyLukas Wirth2021-05-261-1/+5
|/
* internal: move diagnostics to hirAleksey Kladov2021-05-252-13/+395
| | | | | | | | | | | | | | | | | | | | | | | The idea here is to eventually get rid of `dyn Diagnostic` and `DiagnosticSink` infrastructure altogether, and just have a `enum hir::Diagnostic` instead. The problem with `dyn Diagnostic` is that it is defined in the lowest level of the stack (hir_expand), but is used by the highest level (ide). As a first step, we free hir_expand and hir_def from `dyn Diagnostic` and kick the can up to `hir_ty`, as an intermediate state. The plan is then to move DiagnosticSink similarly to the hir crate, and, as final third step, remove its usage from the ide. One currently unsolved problem is testing. You can notice that the test which checks precise diagnostic ranges, unresolved_import_in_use_tree, was moved to the ide layer. Logically, only IDE should have the infra to render a specific range. At the same time, the range is determined with the data produced in hir_def and hir crates, so this layering is rather unfortunate. Working on hir_def shouldn't require compiling `ide` for testing.
* Merge #8942bors[bot]2021-05-251-32/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | 8942: Add `library` semantic token modifier to items from other crates r=arzg a=arzg Closes #5772. A lot of code here is pretty repetitive; please let me know if you have any ideas how to improve it, or whether it’s fine as-is. Side-note: How can I add tests for this? I don’t see a way for the test Rust code in `test_highlighting` to reference other crates to observe the new behaviour. Co-authored-by: Aramis Razzaghipour <[email protected]>
| * Remove hir krate methodsAramis Razzaghipour2021-05-241-48/+0
| |
| * Add highlighting of items from other cratesAramis Razzaghipour2021-05-241-0/+17
| |
* | internal: rename hypothetical -> speculativeAleksey Kladov2021-05-241-5/+5
| | | | | | | | | | Lets steal this good naming from Roslyn before I forget about it yet again.
* | internal: intern `TypeBound`sJonas Schievink2021-05-241-1/+1
| | | | | | | | | | Doesn't save much memory (~2 mb), but interning things is generally a good pattern to follow
* | Merge #8945bors[bot]2021-05-233-14/+17
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8945: fix: Make expected type work in more situations r=flodiebold a=flodiebold Also makes call info show the correct types for generic methods. ![2021-05-23-182952_1134x616_scrot](https://user-images.githubusercontent.com/906069/119269023-dd5a5b00-bbf5-11eb-993a-b6e122c3b9a6.png) ![2021-05-23-183117_922x696_scrot](https://user-images.githubusercontent.com/906069/119269025-dfbcb500-bbf5-11eb-983c-fc415b8428e0.png) Co-authored-by: Florian Diebold <[email protected]>
| * | Get rid of field_type againFlorian Diebold2021-05-233-18/+11
| | |
| * | Infer correct expected type for generic struct fieldsFlorian Diebold2021-05-231-3/+15
| | |
| * | Record method call substs and use them in call infoFlorian Diebold2021-05-232-7/+5
| |/
* / Correctly resolve crate name in use paths when import shadows itselfLukas Tobias Wirth2021-05-231-1/+10
|/
* Give ‘unsafe’ semantic token modifier to unsafe traitsAramis Razzaghipour2021-05-231-0/+4
|
* Paper over #8931 a bit moreFlorian Diebold2021-05-231-2/+3
| | | | | | | | | The problem was the skipping of binders in `resolve_method_call_as_callable`; this still doesn't use the _correct_ substitution, but at least it doesn't return a type with free variables in it. Fixes #8931.
* Add test for #8931 and better checkingFlorian Diebold2021-05-231-2/+2
|
* Add more docsAleksey Kladov2021-05-222-3/+10
|
* Rework obligation handlingFlorian Diebold2021-05-211-4/+6
| | | | | | | | We can't do the easy hack that we did before anymore, where we kept track of whether any inference variables changed since the last time we rechecked obligations. Instead, we store the obligations in canonicalized form; that way we can easily check the inference variables to see whether they have changed since the goal was canonicalized.
* Fix HIR expecting errors to unify with anythingFlorian Diebold2021-05-211-6/+3
|
* Fix compilation of hir and ide cratesFlorian Diebold2021-05-211-2/+2
|
* Simplify eager macro representationJonas Schievink2021-05-191-2/+2
|
* Merge #8813bors[bot]2021-05-161-1/+4
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8813: Get some more array lengths! r=lf- a=lf- This is built on #8799 and thus contains its changes. I'll rebase it onto master when that one gets merged. It adds support for r-a understanding the length of: * `let a: [u8; 2] = ...` * `let a = b"aaa"` * `let a = [0u8; 4]` I have added support for getting the values of byte strings, which was not previously there. I am least confident in the correctness of this part and it probably needs some more tests, as we currently have only one test that exercised that part (!). Fixes #2922. Co-authored-by: Jade <[email protected]>
| * Address final feedbackJade2021-05-161-1/+1
| | | | | | | | | | * rename ConstExtension->ConstExt * refactor a manual construction of a Const
| * Add more tests, refactor array lengths/consteval workJade2021-05-141-1/+4
| | | | | | | | | | | | | | | | | | | | | | Fix #2922: add unknown length as a condition for a type having unknown. Incorporate reviews: * Extract some of the const evaluation workings into functions * Add fixmes on the hacks * Add tests for impls on specific array lengths (these work!!! 😁) * Add tests for const generics (indeed we don't support it yet)
* | Apply async semantic token modifier to async/await keywordshi-rustin2021-05-141-0/+4
|/ | | | Only async semantic token modifier
* Correctly support SelfType when searching for usagesLukas Wirth2021-05-081-0/+4
|
* internal: expose cfg attrs from hir::CrateAleksey Kladov2021-05-072-0/+6
|
* Merge #8745bors[bot]2021-05-061-0/+12
|\ | | | | | | | | | | | | | | | | 8745: Support goto_type_definition for types r=matklad a=Veykril I'm unsure if the approach of lowering an `ast::Type` to a `hir::Type` is a good idea, it seems fine to me at least. Fixes #2882 Co-authored-by: Lukas Tobias Wirth <[email protected]>
| * Support goto_type_definition for typesLukas Tobias Wirth2021-05-061-0/+12
| |
* | Reuse database in LowerCtxJonas Schievink2021-05-062-4/+3
| |
* | Don't store call-site text offsets in hygiene infoJonas Schievink2021-05-064-6/+7
| |
* | simplifyLukas Tobias Wirth2021-05-051-0/+4
|/
* internal: fix naming polarityAleksey Kladov2021-04-301-1/+1
| | | | | Type Constructors have *parameters*, when they are substituted with type *arguments*, we have a type.
* internal: normalize nameAleksey Kladov2021-04-302-2/+2
| | | | All def types in hir are unsubstituted
* hir_ty: deal with TypeRef::Macro in HirFormattercynecx2021-04-171-3/+2
|
* hir_ty: Expand macros at type positioncynecx2021-04-172-4/+9
|
* Exclude inherent traits from flyimportsKirill Bulatov2021-04-161-0/+12
|
* Improve indexing of implsFlorian Diebold2021-04-091-9/+21
| | | | | | Store impls for e.g. &Foo with the ones for Foo instead of the big "other" bucket. This can improve performance and simplifies the HIR impl search a bit.
* Intern SubstitutionsFlorian Diebold2021-04-081-1/+1
| | | | (Costs a bit of performance, reduces memory usage on RA by ~10%.)
* Fix missing match armsFlorian Diebold2021-04-081-1/+3
|
* InEnvironment::new takes a referenceFlorian Diebold2021-04-071-2/+2
|
* Make Canonical::new a free-standing functionFlorian Diebold2021-04-071-1/+1
|
* Move hir_trait_id to extension traitFlorian Diebold2021-04-071-1/+2
|
* Remove Ty::substs{_mut}Florian Diebold2021-04-072-11/+21
| | | | | | Almost all uses actually only care about ADT substs, so it's better to be explicit. The methods were a bad abstraction anyway since they already didn't include the inner types of e.g. `TyKind::Ref` anymore.
* Free Ty::def_cratesLukas Wirth2021-04-071-3/+3
|
* Remove `SolutionVariables`, add ConstrainedSubst analogous to ChalkFlorian Diebold2021-04-061-4/+4
| | | | ... just missing the constraints.
* infer: remove `record_pat_field_resolutions` fieldJonas Schievink2021-04-061-4/+8
| | | | | Same as https://github.com/rust-analyzer/rust-analyzer/pull/8376, this can be computed from other data