aboutsummaryrefslogtreecommitdiff
path: root/crates/hir_ty/src
Commit message (Collapse)AuthorAgeFilesLines
* Merge #8813bors[bot]2021-05-1611-103/+251
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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-163-31/+17
| | | | | | | | | | * rename ConstExtension->ConstExt * refactor a manual construction of a Const
| * Add more tests, refactor array lengths/consteval workJade2021-05-145-34/+179
| | | | | | | | | | | | | | | | | | | | | | 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)
| * Test lowering byte strings some moreJade2021-05-131-14/+25
| |
| * Add support for lengths in array repeats, if they are literalsJade2021-05-132-7/+17
| | | | | | | | Now we will get the type of `[0u8; 4]`.
| * Support length for ByteStringsJade2021-05-132-8/+16
| | | | | | | | I am not confident that my added byte string parsing is right.
| * Add lowering of array lengths in typesJade2021-05-139-76/+64
| | | | | | | | | | | | | | | | | | | | | | Now e.g. ```rust fn a(b: [u8; 2]) { } ``` will know about the length of b.
* | Fix false positive "Missing match arm".Dawer2021-05-143-5/+7
|/
* Merge #8799bors[bot]2021-05-1211-109/+155
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | 8799: Add basic support for array lengths in types r=flodiebold a=lf- This recognizes `let a = [1u8, 2, 3]` as having type `[u8; 3]` instead of the previous `[u8; _]`. Byte strings and `[0u8; 2]` kinds of range array declarations are unsupported as before. I don't know why a bunch of our rustc tests had single quotes inside strings un-escaped by `UPDATE_EXPECT=1 cargo t`, but I don't think it's bad? Maybe something in a nightly? Co-authored-by: Jade <[email protected]>
| * address review by @eddybJade2021-05-112-2/+3
| |
| * Add basic support for array lengths in typesJade2021-05-1111-109/+154
| | | | | | | | | | | | | | | | | | | | This recognizes `let a = [1u8, 2, 3]` as having type `[u8; 3]` instead of the previous `[u8; _]`. Byte strings and `[0u8; 2]` kinds of range array declarations are unsupported as before. I don't know why a bunch of our rustc tests had single quotes inside strings un-escaped by `UPDATE_EXPECT=1 cargo t`, but I don't think it's bad? Maybe something in a nightly?
* | Merge #8398bors[bot]2021-05-113-2/+51
|\ \ | |/ |/| | | | | | | | | | | 8398: Fix inference with conditionally compiled tails r=flodiebold a=DJMcNab Fixes #8378 Co-authored-by: Daniel McNab <[email protected]>
| * Add a test for conditionally compiled tailsDaniel McNab2021-05-031-0/+49
| |
| * Fix inference with conditionally compiled tailsDaniel McNab2021-05-032-2/+2
| | | | | | | | Fixes #8378
* | Correctly support SelfType when searching for usagesLukas Wirth2021-05-081-2/+34
| |
* | Reuse database in LowerCtxJonas Schievink2021-05-061-1/+1
| |
* | Don't store call-site text offsets in hygiene infoJonas Schievink2021-05-061-2/+2
|/
* Don't look in super traits for <T as Trait>::AssocFlorian Diebold2021-04-292-7/+14
| | | | | | | This isn't actually how it works, you have to specify the exact trait that has the associated type. Fixes #8686.
* Rewrite all_super_trait_refs as an iteratorFlorian Diebold2021-04-291-18/+34
| | | | | Doesn't fix the bug I was trying to fix, but now that I did it anyway it seems fine to keep.
* Handle cycles in generic_defaults more gracefullyFlorian Diebold2021-04-292-0/+22
|
* Add test for #8686Florian Diebold2021-04-291-0/+30
|
* fix: closure unify without check ClosureIdComonad2021-04-292-0/+40
| | | | closes #8604
* Merge #8462bors[bot]2021-04-193-8/+275
|\ | | | | | | | | | | | | | | 8462: Expand macros at type position r=jonas-schievink a=cynecx Co-authored-by: cynecx <[email protected]>
| * hir_ty: cleanups and extend infinitely_recursive_macro_type testcynecx2021-04-182-8/+14
| |
| * hir_ty: keep body::Expander in TyLoweringContextcynecx2021-04-182-14/+83
| |
| * hir_def: refactor expand_macro_type and cleanupscynecx2021-04-171-3/+3
| |
| * hir_ty: deal with TypeRef::Macro in HirFormattercynecx2021-04-171-2/+15
| |
| * hir_ty: Expand macros at type positioncynecx2021-04-173-2/+181
| |
* | Collect inherent impls in unnamed constsJonas Schievink2021-04-192-17/+62
|/
* Merge #8539bors[bot]2021-04-162-1/+2
|\ | | | | | | | | | | | | | | | | | | 8539: fix: Do not propose inherent traits in flyimports and import assists r=flodiebold a=SomeoneToIgnore Closes https://github.com/rust-analyzer/rust-analyzer/issues/8520 I've went with a separate method approach, since the [highlighted code](https://github.com/rust-analyzer/rust-analyzer/issues/8520#issuecomment-819856337) has not`Type` and uses `Ty` to get his data, but the code I had to change has no access to `Ty` and has `Type` only. Co-authored-by: Kirill Bulatov <[email protected]>
| * Exclude inherent traits from flyimportsKirill Bulatov2021-04-162-1/+2
| |
* | Fix primitive shadowing with inner itemsJonas Schievink2021-04-161-0/+18
|/
* Profile trait solving for all invocationsKirill Bulatov2021-04-142-5/+19
|
* Better places for spansKirill Bulatov2021-04-141-2/+1
|
* We need to go deeperKirill Bulatov2021-04-141-1/+5
|
* Add a missing spanKirill Bulatov2021-04-141-0/+2
|
* decl_check: follow test style guideJonas Schievink2021-04-131-60/+59
|
* Merge #8432bors[bot]2021-04-131-14/+140
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8432: decl_check: consider outer scopes' allows r=jonas-schievink a=lf- Fix #8417. Also makes it less noisy about no_mangle annotated stuff the user can do nothing about. Note: this still is broken with bitfield! macros. A repro in an ignore test is included here. I believe this bug is elsewhere, and I don't think I can work around it here. I would like help filing the remaining bug, as it does actually affect users, but I don't know how to describe the behaviour (or even if it is unintended). Co-authored-by: Jade <[email protected]>
| * address review feedbackJade2021-04-131-21/+35
| |
| * decl_check: consider outer scopes' allowsJade2021-04-081-10/+122
| | | | | | | | | | | | | | | | | | Fix #8417. Also makes it less noisy about no_mangle annotated stuff the user can do nothing about. Note: this still is broken with bitfield! macros. A repro in an ignore test is included here. I believe this bug is elsewhere, and I don't think I can work around it here.
* | Remove assertion in impl collectionFlorian Diebold2021-04-111-4/+3
| | | | | | | | | | | | | | This condition should always be true for *valid* code, but of course there might be invalid code or things that we can't currently resolve. Fixes #8464.
* | Merge #8465bors[bot]2021-04-111-3/+3
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 8465: Include more info in assert r=jonas-schievink a=jonas-schievink This helped find https://github.com/rust-analyzer/rust-analyzer/issues/8464 changelog skip bors r+ Co-authored-by: Jonas Schievink <[email protected]>
| * | Include more info in assertJonas Schievink2021-04-111-3/+3
| | |
* | | Support macros in pattern positionJonas Schievink2021-04-112-2/+28
|/ /
* | Respect test style guidelines in tests::traitsLukas Wirth2021-04-101-698/+656
| |
* | Add test for binary op return ty with adtLukas Wirth2021-04-101-0/+47
| |
* | Add manual ops::Add impls to test::traits::closure_2Lukas Wirth2021-04-101-20/+46
| |
* | Implement more precise binary op return type predictionLukas Wirth2021-04-102-17/+51
| |
* | Resolve prelude and crate root names in the root DefMapJonas Schievink2021-04-091-0/+30
| |
* | More cleanups / module docsFlorian Diebold2021-04-096-10/+12
| |