Commit graph

6131 commits

Author SHA1 Message Date
Florian Diebold
e4add45951 Fix #2467
The stand-alone `unify` requires that the type doesn't contain any type
variables. So we can't share the code here for now (without more refactoring)...
2019-12-03 15:01:23 +01:00
bors[bot]
ba4f7fa02f
Merge #2465
2465: Extract built-in trait implementations to separate module r=matklad a=flodiebold

This untangles the builtin logic from the Chalk translation.

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-12-03 13:43:05 +00:00
bors[bot]
c5be0cedf3
Merge #2463
2463: More correct method resolution r=flodiebold a=flodiebold

This should fix the order in which candidates for method resolution are considered, i.e. `(&Foo).clone()` should now be of type `Foo` instead of `&Foo`. It also checks for inherent candidates that the self type unifies properly with the self type in the impl (i.e. `impl Foo<u32>` methods will only be considered for `Foo<u32>`).

To be able to get the correct receiver type to check in the method resolution, I needed the unification logic, so I extracted it to the `unify.rs` module.

Should fix #2435.

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-12-03 12:58:44 +00:00
Florian Diebold
18f25acb89 Make unify pub(crate) 2019-12-03 13:58:02 +01:00
Florian Diebold
176207f1e8 Extract built-in trait implementations to separate module
This untangles the builtin logic from the Chalk translation.
2019-12-03 12:30:50 +01:00
Florian Diebold
a5a07bde04 Add tests for checking the impl self type 2019-12-02 19:33:13 +01:00
Florian Diebold
cfa50df33e Refactor a bit 2019-12-02 19:33:13 +01:00
Florian Diebold
456d52fdfa Check receiver type properly 2019-12-02 19:33:13 +01:00
Florian Diebold
599dab5982 Extract unification code to unify module 2019-12-02 19:33:13 +01:00
Florian Diebold
cbf262a1bc Change order of calls to get method candidate order correct 2019-12-02 19:33:13 +01:00
bors[bot]
3376c08052
Merge #2018
2018: assists: add assist for custom implementation for derived trait r=matklad a=paulolieuthier

Please, tell me if something could be more idiomatic or efficient.

Fixes #1256.

Co-authored-by: Paulo Lieuthier <paulolieuthier@gmail.com>
2019-12-02 15:52:11 +00:00
bors[bot]
c5b322e3df
Merge #2462
2462: Switch back to npm install r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-12-02 14:19:12 +00:00
Aleksey Kladov
1836671d53 Switch back to npm install
Locks like it honors package.lock nowdays
2019-12-02 15:17:55 +01:00
bors[bot]
c6eff1da12
Merge #2457
2457: Clarify installation instructions r=matklad a=fintelia

In particular it is necessary to clone the repository before running the other commands. I also removed the `cargo install` side note because it didn't actually work (running the command just produces an error that --package isn't a recognized flag) and added a tldr code block with the list of commands to run.

Co-authored-by: Jonathan Behrens <fintelia@gmail.com>
2019-12-02 12:42:33 +00:00
bors[bot]
bd01f112e1
Merge #2461
2461: anyhow, libc, syn, cargo_metadata r=kjeremy a=kjeremy



Co-authored-by: Jeremy Kolb <kjeremy@gmail.com>
2019-12-01 20:02:01 +00:00
Jeremy Kolb
e6c0ad0d0a Just update some things 2019-12-01 15:00:34 -05:00
Jonathan Behrens
75be6553fe Add back corrected cargo install command 2019-12-01 13:29:49 -05:00
bors[bot]
ec164fbb68
Merge #2455
2455: Add BuiltinShadowMode r=flodiebold a=edwin0cheng

This PR try to fix #1905 by introduce an `BuiltinShadowMode` in name resolving functions. 

cc @flodiebold 

Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2019-12-01 11:13:25 +00:00
Edwin Cheng
cfc6e9e366 Remove some empty lines 2019-12-01 12:17:52 +08:00
Edwin Cheng
13c54685ff Use index instead of peekable 2019-12-01 12:14:35 +08:00
Edwin Cheng
5f11117733 Fix comment 2019-12-01 12:14:12 +08:00
Jonathan Behrens
c69ed9bd1f
Clarify installation instructions
In particular it is necessary to clone the repository before running the other commands. I also removed the `cargo install` side note because it didn't actually work (running the command just produces an error that --package isn't a recognized flag) and added a tldr code block with the list of commands to run.
2019-11-30 21:20:54 -05:00
bors[bot]
780f476b4f
Merge #2451
2451: Use env_logger instead of flexi_logger r=matklad a=AlexanderEkdahl

This fixes https://github.com/rust-analyzer/rust-analyzer/issues/2335

- By default only `error` will be printed. From what I can tell this matches the current behaviour. Configured through `RUST_LOG`.
- I looked through the optional dependencies for `env_logger`and I have only enabled `human_time`. Without this feature no timestamp will be shown for log messages.
- `RA_LOG_DIR` feature is removed

This PR adds 2 new dependencies(`env_logger` and `human_time`) and removes 6 dependencies.

Co-authored-by: Alexander Ekdahl <alexander@ekdahl.io>
2019-11-30 19:19:28 +00:00
Edwin Cheng
bb601e7eaf Add BuiltinShadowMode 2019-11-30 23:29:21 +08:00
bors[bot]
9712889ee4
Merge #2453
2453: Handle various cycles r=matklad a=flodiebold

 - handle `impl Trait<Self> for SomeType`, which is allowed. This necessitated splitting the `impl_ty` query, but I think the result actually makes a lot of code nicer. This should fix #2446.
 - add recovery for `impl Trait for SomeType<Self>`
 - add recovery for `type Type = Foo<Type>`
 - add recovery for cycles in generic param env

Co-authored-by: Florian Diebold <flodiebold@gmail.com>
2019-11-30 14:23:18 +00:00
Florian Diebold
1c622e9fed Add cycle recovery for type aliases 2019-11-30 12:57:32 +01:00
Florian Diebold
3ca40f7c08 Add cycle recovery for generic predicates 2019-11-30 12:57:32 +01:00
Florian Diebold
cf6809645e Handle cycles in impl types better
- impl Trait<Self> for S is allowed
 - impl Trait for S<Self> is an invalid cycle, but we can add cycle recovery for
   it in Salsa now
2019-11-30 12:57:32 +01:00
bors[bot]
7cecd0f331
Merge #2449
2449: Only allow renames to valid identifiers r=matklad a=detrumi

Implements #2121 

Co-authored-by: Wilco Kusee <wilcokusee@gmail.com>
2019-11-30 10:43:35 +00:00
Alexander Ekdahl
3fe539ce51 Remove log dependency from ra_cli 2019-11-29 19:40:59 -05:00
Alexander Ekdahl
1793abf4fd Update README 2019-11-29 19:36:48 -05:00
Alexander Ekdahl
eb4e70fc67 Remove flexi_logger from ra_lsp_server 2019-11-29 19:35:03 -05:00
Alexander Ekdahl
9c01c0dcb5 Use env_logger in ra_cli 2019-11-29 19:20:48 -05:00
bors[bot]
10c8e5eecb
Merge #2445
2445: Infer range types r=flodiebold a=oxalica



Co-authored-by: oxalica <oxalicc@pm.me>
2019-11-29 19:34:02 +00:00
Wilco Kusee
b3856568af
Push identifier check to rename function 2019-11-29 16:06:20 +01:00
Wilco Kusee
645df2b5f5
Test rename for various identifiers 2019-11-29 16:03:39 +01:00
Wilco Kusee
be9ba2b392
Move identifier check to analysis 2019-11-29 15:52:12 +01:00
Wilco Kusee
f081c9d94d
Also allow renaming to underscore 2019-11-29 15:27:22 +01:00
Wilco Kusee
9c764cb966
Only allow renames to valid identifiers 2019-11-29 15:14:53 +01:00
oxalica
2cb684bbce
Reduce variants of Expr 2019-11-29 14:49:12 +08:00
Paulo Lieuthier
5b2d52c8df docs: describe new feature 'add custom impl for derived trait' 2019-11-28 17:36:40 -03:00
Paulo Lieuthier
439080f027 assists: add assist for custom implementation for derived trait 2019-11-28 16:56:06 -03:00
oxalica
4992d2bf79
Infer range types 2019-11-29 03:10:16 +08:00
bors[bot]
8b278b1ab6
Merge #2442
2442: Move source-related traits to a separate module r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-11-28 16:05:46 +00:00
Aleksey Kladov
8f1f5a783a Move source-related traits to a separate module 2019-11-28 19:05:21 +03:00
bors[bot]
2c7f6b573e
Merge #2441
2441: Use InFile for AstId r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-11-28 13:04:52 +00:00
Aleksey Kladov
e823c578c9 Use InFile for AstId 2019-11-28 16:02:38 +03:00
bors[bot]
16030528b5
Merge #2440
2440: Rename Source -> InFile r=matklad a=matklad



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2019-11-28 10:02:46 +00:00
Aleksey Kladov
ccd1b0800a Rename Source -> InFile 2019-11-28 12:50:26 +03:00
bors[bot]
2702fa1c5d
Merge #2438
2438: Derive Hash for tt::TokenTree r=matklad a=edwin0cheng

Preparation for intern `TokenTree` to salsa database

Co-authored-by: Edwin Cheng <edwin0cheng@gmail.com>
2019-11-28 08:46:36 +00:00