aboutsummaryrefslogtreecommitdiff
path: root/crates
Commit message (Collapse)AuthorAgeFilesLines
* Merge #3120bors[bot]2020-02-132-45/+545
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3120: Support trait auto import r=matklad a=SomeoneToIgnore Unfortunately, for real cases it does not work as spectacular as in the tests. The main reason for that is type inference: * The callee type [here](https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_hir_ty/src/method_resolution.rs#L369) is unknown for many cases * The trait solution [here](https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_hir_ty/src/method_resolution.rs#L399) is also often ambiguous That results in trait candidates being rejected, and some real cases not supported. Example: no imports for `String::from_str("test")` Co-authored-by: Kirill Bulatov <[email protected]>
| * Do not collect all traitsKirill Bulatov2020-02-121-102/+53
| |
| * Support associated constsKirill Bulatov2020-02-121-18/+133
| |
| * Also consider associated constantsKirill Bulatov2020-02-121-8/+8
| |
| * Revert source_analyzer changesKirill Bulatov2020-02-122-55/+6
| |
| * Fix post-rebase issuesKirill Bulatov2020-02-122-25/+25
| |
| * Refactor the codeKirill Bulatov2020-02-121-96/+93
| |
| * Adjust the assist group nameKirill Bulatov2020-02-121-9/+25
| |
| * Add profilingKirill Bulatov2020-02-121-0/+3
| |
| * Support trait method call autoimportsKirill Bulatov2020-02-122-101/+211
| |
| * Trait location draftKirill Bulatov2020-02-122-20/+127
| |
| * Refactor path for imports extractionKirill Bulatov2020-02-121-20/+92
| |
| * Add method testsKirill Bulatov2020-02-121-3/+116
| |
| * Resolve methods and functions betterKirill Bulatov2020-02-122-9/+74
| |
* | Add error context to failures in `ra_project_model` using `anyhow` crate (#3119)Adam Bratschi-Kaye2020-02-134-20/+58
| | | | | | Add error context to failures in ra_project_model using anyhow crate
* | prevent "Play" symbol in "Run Test" code lens from rendering as emojiQuan Luu2020-02-131-1/+1
| |
* | Run cargo testHan Mertens2020-02-121-0/+26
| |
* | Run cargo xtask codegenHan Mertens2020-02-121-0/+1
| |
* | Add test for unnamed argument in function pointerHan Mertens2020-02-121-0/+3
| |
* | Support unnamed arguments in function pointersHan Mertens2020-02-121-1/+1
| | | | | | | | Fixes #3089
* | Add couple of utility methodsAleksey Kladov2020-02-121-3/+19
| |
* | SimplifyAleksey Kladov2020-02-121-15/+7
|/
* Merge #3121bors[bot]2020-02-123-7/+49
|\ | | | | | | | | | | | | | | | | | | 3121: Do not add imports before inner attributes r=matklad a=SomeoneToIgnore Current `insert_use_statement` function adds imports before inner attributes which results in compiler errors: <img width="1440" alt="image" src="https://user-images.githubusercontent.com/2690773/74344019-a3749500-4db4-11ea-9d88-f71e903e795a.png"> Co-authored-by: Kirill Bulatov <[email protected]>
| * Fix the trailing whitespace testKirill Bulatov2020-02-121-4/+1
| |
| * Introduce AttrKindKirill Bulatov2020-02-123-8/+16
| |
| * Do not add imports before inner attributesKirill Bulatov2020-02-122-1/+38
| |
* | Add more hir APIs for associated itemsAleksey Kladov2020-02-122-14/+64
|/
* Merge #3062bors[bot]2020-02-116-9/+59
|\ | | | | | | | | | | | | | | | | | | 3062: Implement slice pattern AST > HIR lowering r=jplatte a=jplatte WIP. The necessary changes for parsing are implemented, but actual inference is not yet. Just wanted to upload what I've got so far so it doesn't get duplicated :) Will fix #3043 Co-authored-by: Jonas Platte <[email protected]>
| * Implement slice pattern AST > HIR loweringJonas Platte2020-02-116-9/+59
| |
* | Don't let unknown match arms fall back to !Florian Diebold2020-02-112-1/+22
| |
* | Return early, return oftenAleksey Kladov2020-02-111-27/+33
| |
* | Fix join lines when two rules matchAleksey Kladov2020-02-111-23/+46
| |
* | Merge #3064bors[bot]2020-02-112-25/+68
|\ \ | | | | | | | | | | | | | | | | | | | | | 3064: Handle macro token cases for rename r=matklad a=edwin0cheng Fixes #2957 Co-authored-by: Edwin Cheng <[email protected]>
| * | Use get_or_insert_withEdwin Cheng2020-02-091-4/+3
| | |
| * | Handle macro token cases for renameEdwin Cheng2020-02-092-25/+69
| |/
* | Better error messages while deserializingAleksey Kladov2020-02-113-11/+17
| |
* | Merge #3074bors[bot]2020-02-1020-112/+420
|\ \ | | | | | | | | | | | | | | | | | | | | | 3074: Or patterns r=matthewjasper a=matthewjasper Works towards #2458 Co-authored-by: Matthew Jasper <[email protected]>
| * | Address review commentsMatthew Jasper2020-02-103-14/+66
| | |
| * | Update tests for or-patternsMatthew Jasper2020-02-094-60/+184
| | |
| * | Add or- and parenthesized-patternsMatthew Jasper2020-02-0914-45/+177
| | |
* | | More specific error if `rustc --print sysroot` failsAleksey Kladov2020-02-101-1/+2
| | |
* | | move to to_usize()Veetaha2020-02-093-6/+6
|/ /
* | Fix rebase leftoversKirill Bulatov2020-02-091-2/+2
| |
* | Do not import anything if first segment of FQN resolvesKirill Bulatov2020-02-091-12/+36
| |
* | Set auto-import targetAleksey Kladov2020-02-091-1/+17
| | | | | | | | closes #3067
* | Simplify Assists interfaceAleksey Kladov2020-02-095-141/+108
| | | | | | | | | | Instead of building a physical tree structure, just "tag" related assists with the same group
* | Slightly simpler API for groupsAleksey Kladov2020-02-092-48/+77
| |
* | Some README fixes/cleanupsFlorian Diebold2020-02-091-1/+1
| | | | | | | | Make capitalization more consistent and fix some typos.
* | Merge #3050bors[bot]2020-02-0924-614/+1174
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3050: Refactor type parameters, implement argument position impl trait r=matklad a=flodiebold I wanted to implement APIT by lowering to type parameters because we need to do that anyway for correctness and don't need Chalk support for it; this grew into some more wide-ranging refactoring of how type parameters are handled :sweat_smile: - use Ty::Bound instead of Ty::Param to represent polymorphism, and explicitly count binders. This gets us closer to Chalk's way of doing things, and means that we now only use Param as a placeholder for an unknown type, e.g. within a generic function. I.e. we're never using Param in a situation where we want to substitute it, and the method to do that is gone; `subst` now always works on bound variables. (This changes how the types of generic functions print; previously, you'd get something like `fn identity<i32>(T) -> T`, but now we display the substituted signature `fn identity<i32>(i32) -> i32`, which I think makes more sense.) - once we do this, it's more natural to represent `Param` by a globally unique ID; the use of indices was mostly to make substituting easier. This also means we fix the bug where `Param` loses its name when going through Chalk. - I would actually like to rename `Param` to `Placeholder` to better reflect its use and get closer to Chalk, but I'll leave that to a follow-up. - introduce a context for type lowering, to allow lowering `impl Trait` to different things depending on where we are. And since we have that, we can also lower type parameters directly to variables instead of placeholders. Also, we'll be able to use this later to collect diagnostics. - implement argument position impl trait by lowering it to type parameters. I've realized that this is necessary to correctly implement it; e.g. consider `fn foo(impl Display) -> impl Something`. It's observable that the return type of e.g. `foo(1u32)` unifies with itself, but doesn't unify with e.g. `foo(1i32)`; so the return type needs to be parameterized by the argument type. This fixes a few bugs as well: - type parameters 'losing' their name when they go through Chalk, as mentioned above (i.e. getting `[missing name]` somewhere) - impl trait not being considered as implementing the super traits (very noticeable for the `db` in RA) - the fact that argument impl trait was only turned into variables when the function got called caused type mismatches when the function was used as a value (fixes a few type mismatches in RA) The one thing I'm not so happy with here is how we're lowering `impl Trait` types to variables; since `TypeRef`s don't have an identity currently, we just count how many of them we have seen while going through the function signature. That's quite fragile though, since we have to do it while desugaring generics and while lowering the type signature, and in the exact same order in both cases. We could consider either giving only `TypeRef::ImplTrait` a local id, or maybe just giving all `TypeRef`s an identity after all (we talked about this before)... Follow-up tasks: - handle return position impl trait; we basically need to create a variable and some trait obligations for that variable - rename `Param` to `Placeholder` Co-authored-by: Florian Diebold <[email protected]> Co-authored-by: Florian Diebold <[email protected]>
| * | Add two more testsFlorian Diebold2020-02-071-0/+51
| | |