Commit Graph

8224 Commits

Author SHA1 Message Date
Aleksey Kladov
b1f59ff6c1 Reduce path_from_text usage 2020-08-31 15:47:42 +02:00
Aleksey Kladov
60706fca8e Remove dead code 2020-08-31 15:46:57 +02:00
Kirill Bulatov
3ac9732ca3 Fix some typos 2020-08-28 21:55:24 +03:00
Aleksey Kladov
c692b5d76d ⬆️ expect-test 2020-08-28 14:47:14 +02:00
Aleksey Kladov
07da02fc37 ⬆️ crates 2020-08-27 19:06:00 +02:00
Aleksey Kladov
4b989009e3 CONST LOOPS ARE HERE 2020-08-27 18:12:01 +02:00
Aleksey Kladov
4d0cfc07fd Minor 2020-08-27 15:02:56 +02:00
bors[bot]
e7da5816d6
Merge #5895
5895: Tease apart orthogonal concerns in markdown link rewriting
 r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-08-26 18:26:07 +00:00
Aleksey Kladov
f8a59adf5e Tease apart orthogonal concerns in markdown link rewriting
`hir` should know nothing about URLs, markdown and html. It should
only be able to:

* resolve stringy path from documentation
* generate canonical stringy path for a def

In contrast, link rewriting should not care about semantics of paths
and names resolution, and should be concern only with text mangling
bits.
2020-08-26 20:24:00 +02:00
bors[bot]
7e012ae8b5
Merge #5893
5893: Allow running a test as a binary r=matklad a=jonas-schievink

If a test uses `harness = false`, it just contains an `fn main` that is executed via `cargo test`. This adds support for that.

Note though that Cargo doesn't actually tell us whether `harness = false`, so this hint will always show up when you put an `fn main` into an integration test. Normally people shouldn't be doing that if they do use the harness though.

Co-authored-by: Jonas Schievink <jonas.schievink@ferrous-systems.com>
2020-08-26 17:41:45 +00:00
Aleksey Kladov
1c0ac2b9b4 Cleanup hover links tests 2020-08-26 18:36:16 +02:00
Jonas Schievink
964219f0be Allow running a test as a binary 2020-08-26 17:33:03 +02:00
León Orell Valerian Liehr
63caef372a Improve support for code block attributes 2020-08-26 15:55:06 +02:00
Aleksey Kladov
7431ec82c9 Simplify 2020-08-26 13:40:45 +02:00
bors[bot]
868aaf2bc6
Merge #5889
5889: Allow logging to file r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-08-26 11:21:17 +00:00
Aleksey Kladov
ed6304131a Simplify 2020-08-26 13:20:46 +02:00
Aleksey Kladov
bb50614d88 Simplify help 2020-08-26 13:20:46 +02:00
Aleksey Kladov
a53c6f6fee Allow redirecting logs to a specific file
There's a surprising lack of crates which are like env_logger, but
also allow writing to a file. Let's write our own then!
2020-08-26 13:20:46 +02:00
Aleksey Kladov
0fc8fd2bd5 **Inline Variable** works with field shorthand 2020-08-26 13:03:14 +02:00
Aleksey Kladov
189521a4db Add sysroot shortcut to rust-project.json 2020-08-25 19:41:56 +02:00
Aleksey Kladov
c6dffe479b Cleanup heavy tests 2020-08-25 19:26:45 +02:00
Aleksey Kladov
9786a8f2d4 Don't expose indexing details 2020-08-25 18:40:41 +02:00
Aleksey Kladov
4f6ca0e081 Minor 2020-08-25 18:07:25 +02:00
Aleksey Kladov
7239d8ca95 Provide better stack trace for overlapping edits
Overlapping indels are a bug. Checking this *always* is tricky (needs
a sorted data structure to not suffer O(N^2) perf). But
opportunistically checking small indels should give provide 80% of the
benefits.
2020-08-25 17:59:37 +02:00
Aleksey Kladov
7fcda5aa46 Prepare to share sysroot lowering code between Cargo & ProjectJSON 2020-08-25 17:53:24 +02:00
Aleksey Kladov
18b667cfcb Complete pub in fields 2020-08-25 17:22:23 +02:00
Aleksey Kladov
6b8bc132dc Prep work for overriding sysroot
The idea here is to make auto-discovery optional, and to allow to set
the path to sysroot directly. This is handy for JSON projects.
2020-08-25 17:04:24 +02:00
Aleksey Kladov
cd9ecdf467 Remove monomorphisation from doclinks resolving code 2020-08-25 14:58:22 +02:00
Aleksey Kladov
66e5ced894 Remove AttrDef 2020-08-25 14:44:15 +02:00
Aleksey Kladov
7487885309 Simplify 2020-08-25 12:58:00 +02:00
Aleksey Kladov
575fb9ab6a Move attrs from code_module to a separate module 2020-08-25 12:56:01 +02:00
Aleksey Kladov
663749beab Minor 2020-08-25 12:48:00 +02:00
Aleksey Kladov
b45dd9ef54 Use the same abstraction for attrs and docs
Doc comments *are* attributes, so there's no reason to have two crates
here.
2020-08-25 12:13:31 +02:00
bors[bot]
59c77ff062
Merge #5866
5866: Improve logging
 r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-08-25 09:46:21 +00:00
Aleksey Kladov
3a72afed8c Improve logging 2020-08-25 11:43:21 +02:00
bors[bot]
96cbad9fb5
Merge #4873
4873: Resolve links in hover documentation r=matklad a=zacps

This PR resolves links in hover documentation. Both the upcoming intra-doc-links style and the old "path-based" style.

## Todo

* [x] More tests
* [ ] Benchmark (Is there an easy way to benchmark this?)
* [x] ~~Resolve issues with the markdown parser/get rid of it~~ Migrate to `pulldown_cmark_to_cmark`
* [x] Reorganise code (Tips appreciated)

---

Fixes #503

Co-authored-by: Zac Pullar-Strecker <zacmps@gmail.com>
2020-08-25 09:11:26 +00:00
Aleksey Kladov
7721accebf Cleanup invert-if
* stick to trivial factory functions in make
* compress the logic for inverting Option/Result
2020-08-25 11:00:32 +02:00
Zac Pullar-Strecker
b835f06cec Merge remote-tracking branch 'upstream/master' into 503-hover-doc-links 2020-08-25 16:44:36 +12:00
Zac Pullar-Strecker
452afaebe1 Changes from review 2020-08-25 16:40:43 +12:00
Jonas Schievink
f3ac19e8cd Support extern types 2020-08-24 22:02:55 +02:00
Pavan Kumar Sunkara
b2d43daeb4 Allow rust-analyzer auto publishing 2020-08-24 17:27:17 +02:00
bors[bot]
81fa00c5b5
Merge #5733
5733: Fix expand glob import bugs r=matklad a=unexge

fixes https://github.com/rust-analyzer/rust-analyzer/issues/5709

TODOs:
- [x] Incorrect node replacing
<details>
    <summary>Details</summary>

```rust
use crate::{
    body::scope::{ExprScopes, ScopeId},
    body::Body,
    builtin_type::BuiltinType,
    db::DefDatabase,
    expr::{ExprId, PatId},
    generics::GenericParams,
    item_scope::{BuiltinShadowMode, BUILTIN_SCOPE},
    nameres::CrateDefMap,
    path::*<|>,
    per_ns::PerNs,
    visibility::{RawVisibility, Visibility},
    AdtId, AssocContainerId, ConstId, ContainerId, DefWithBodyId, EnumId, EnumVariantId,
    FunctionId, GenericDefId, HasModule, ImplId, LocalModuleId, Lookup, ModuleDefId, ModuleId,
    StaticId, StructId, TraitId, TypeAliasId, TypeParamId, VariantId,
};
```
becames
```rust
use crate::{PathKind, name, name, ModPath};
```
</details>

- [x] Ignoring visibility
<details>
    <summary>Details</summary>

```rust
mod foo {
    mod bar {
        pub struct Bar;
    }
}

use foo::bar::*;

fn baz(bar: Bar) {}
```
becames
```rust
mod foo {
    mod bar {
        pub struct Bar;
    }
}

use foo::bar::Bar;

fn baz(bar: Bar) {}
```
although mod `bar` is private
</details>

- [x] Eating attributes

Co-authored-by: unexge <unexge@gmail.com>
2020-08-24 14:26:33 +00:00
Pavan Kumar Sunkara
63f63acc7c Add TBD description to arena 2020-08-24 13:29:10 +02:00
bors[bot]
31cb13dde8
Merge #4776
4776: Do a weekly minor publish to crates.io r=matklad a=pksunkara

This is the same system I set up on Chalk repo.

Every week it creates a new minor version, pushes it to github and then deploys it to crates.io.

Co-authored-by: Pavan Kumar Sunkara <pavan.sss1991@gmail.com>
2020-08-24 11:14:45 +00:00
bors[bot]
150e3843b0
Merge #5845
5845: Omit lenses for not runnable doctests r=matklad a=SomeoneToIgnore

Ideally, we should properly parse the doctest attributes before, but since I need it for the code lens only, this way should suffice for now

Co-authored-by: Kirill Bulatov <mail4score@gmail.com>
2020-08-24 11:08:11 +00:00
Pavan Kumar Sunkara
335add49db Add description for crates that will be published 2020-08-24 13:07:22 +02:00
Zac Pullar-Strecker
5452368fad Renames, comments, and dead code removal 2020-08-24 21:50:30 +12:00
Zac Pullar-Strecker
7bbca7a1b3 Merge remote-tracking branch 'upstream/master' into 503-hover-doc-links 2020-08-24 21:20:13 +12:00
Pavan Kumar Sunkara
a8fa5cd42e Add version to deps in cargo.toml 2020-08-24 11:10:41 +02:00
Zac Pullar-Strecker
ca464650ee Add a test to document unimplemented case 2020-08-24 20:47:10 +12:00
Zac Pullar-Strecker
4f5f608b49 Reorganise code 2020-08-24 20:26:45 +12:00
dragfire
1d129a7172 Invert if should be smart about is_some, is_none, is_ok, is_err 2020-08-23 22:30:34 -06:00
Kirill Bulatov
cdd75a699a Omit lenses for not runnable doctests 2020-08-22 22:03:02 +03:00
bors[bot]
e65d48d1fb
Merge #5823
5823: Don't underline function definition if self is &mut r=Nashenas88 a=matklad

The self is right there, and is already underlined, so it makes little
sense to emit even more underlines.

before:
![before](https://user-images.githubusercontent.com/1711539/90672843-0d379500-e257-11ea-840f-b0caed4410f1.png)
after:
![after](https://user-images.githubusercontent.com/1711539/90672840-0c9efe80-e257-11ea-9739-23af433841c6.png)



Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-08-22 14:41:17 +00:00
Aleksey Kladov
863b1fb731 ⬆️ ungrammar 2020-08-21 19:14:05 +02:00
Aleksey Kladov
b0fd3faf36 Switch to expect_test from crates.io 2020-08-21 13:19:31 +02:00
Aleksey Kladov
66e0c9f840 Remove expect crate 2020-08-21 13:15:56 +02:00
unexge
ef54e8451d Use new Definition::usages API in expand glob import 2020-08-20 21:35:47 +03:00
unexge
5cff4b60be Fix importing private modules in expand glob import 2020-08-20 21:34:53 +03:00
unexge
5d28dec7b9 Fix importing unused traits in expand glob import 2020-08-20 21:34:53 +03:00
unexge
585f5d4901 Use fixme instead of todo 2020-08-20 21:34:53 +03:00
unexge
0847bc801e Use Definition::find_usages for finding used items in expand glob import 2020-08-20 21:34:53 +03:00
unexge
11d048af03 Run rustfmt 2020-08-20 21:34:53 +03:00
unexge
bb72150f02 Handle more cases in AST replacing in expand glob import 2020-08-20 21:34:53 +03:00
unexge
128eef779f Improve AST replacing in expand glob import 2020-08-20 21:34:53 +03:00
Aleksey Kladov
e262149b7c Optimize reference search 2020-08-20 00:54:44 +02:00
Aleksey Kladov
8000d1d30d Don't underline function definition if self is &mut
The self is right there, and is already underlined, so it makes little
sense to emit even more underlines.
2020-08-19 20:02:33 +02:00
bors[bot]
9051d6bc36
Merge #5822
5822: Remove dead code
 r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-08-19 17:56:19 +00:00
Aleksey Kladov
eb7bb2cba0 Remove dead code 2020-08-19 19:54:00 +02:00
Aleksey Kladov
4b5b55f6f3 **Remove Unused Parameter** refactoring 2020-08-19 19:40:55 +02:00
Aleksey Kladov
81b0976187 Future proof find-usages API
We might want to provide more efficient impls for check if usages
exist, limiting the search, filtering and cancellation, so let's
violate YAGNI a bit here.
2020-08-19 18:58:48 +02:00
Aleksey Kladov
b56e020077 Apply couple of rule of thumbs to simplify highlighting code
Main one: instead of adding a parameter to function to handle special
case, make the caller handle it.

Second main one: make sure that function does a reasonable thing.
`highlight_def` picks  a color for def, *regardless* of the context
the def is use. Feeding an info from the call-site muddies the
responsibilities here.

Minor smells, flagging the function as having space for improvement in
the first place:

* many parameters, some of which are set as constants on most
call-sites (introduce severalfunction instad)
* boolean param (add two functions instead)
2020-08-19 17:53:41 +02:00
Aleksey Kladov
11a1bb1c3e Inline trivial function 2020-08-19 17:41:56 +02:00
Aleksey Kladov
a9778c6d73 Simplify 2020-08-19 17:37:19 +02:00
Aleksey Kladov
0b62b990ba Minor 2020-08-19 17:33:25 +02:00
Aleksey Kladov
422ac441c2 Minor cleanups 2020-08-19 17:31:26 +02:00
Aleksey Kladov
5da1dc9a8b Better name 2020-08-19 17:30:43 +02:00
Aleksey Kladov
61754678fb Better API factoring around self access modes 2020-08-19 17:02:50 +02:00
Aleksey Kladov
73f4fcbd0f Better error if Cargo is not in Path 2020-08-19 16:34:11 +02:00
Aleksey Kladov
70fd542822 Introduce hir::Param
We generally shouldn't expose TypeRef out of hir. So, let's just use a
placehoder here.
2020-08-19 16:04:18 +02:00
Aleksey Kladov
b9b4693ce3 Add SelfParam to code_model 2020-08-19 15:16:24 +02:00
Aleksey Kladov
a3b0a3aeb8 Minor cleanups 2020-08-19 13:46:34 +02:00
bors[bot]
63ac896655
Merge #5811
5811: Minor
 r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-08-19 11:34:29 +00:00
Aleksey Kladov
80ea7f3c81 Minor 2020-08-19 13:33:51 +02:00
bors[bot]
529ca7e5e0
Merge #5643
5643: Add new consuming modifier, apply consuming and mutable to methods r=matklad a=Nashenas88

This adds a new `consuming` semantic modifier for syntax highlighters.

This also emits `mutable` and `consuming` in two cases:

- When a method takes `&mut self`, then it now has `function.mutable` emitted.
- When a method takes `self`, and the type of `Self` is not `Copy`, then `function.consuming` is emitted.

CC @flodiebold 

Co-authored-by: Paul Daniel Faria <Nashenas88@users.noreply.github.com>
2020-08-19 11:27:02 +00:00
Aleksey Kladov
17d6efe6f2 Make RacyFlag actually work 2020-08-18 23:51:01 +02:00
Aleksey Kladov
27ccc95c60 Cleanup feature generation 2020-08-18 19:36:27 +02:00
bors[bot]
f18f9da7d8
Merge #5695
5695: Added completion for unstable features r=matklad a=Fihtangolz

Added xtask for downloading list of unstable features from the unstable book and codegen for it. Also included small changes from linter.

Co-authored-by: Dmitry <mamhigtt@gmail.com>
Co-authored-by: Dmitry Opokin <mamhigtt@gmail.com>
2020-08-18 16:49:06 +00:00
bors[bot]
aa2def023e
Merge #5804
5804: Add type safety to diagnostic codes
 r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-08-18 16:40:12 +00:00
Aleksey Kladov
8146669542 Add type safety to diagnostic codes 2020-08-18 18:39:43 +02:00
bors[bot]
d21d5e42c4
Merge #5800
5800: Speedup ty tests
 r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-08-18 15:22:12 +00:00
Aleksey Kladov
aad911fb0c Speedup ty tests
Closes #5792
2020-08-18 17:20:57 +02:00
bors[bot]
0df9ecedb4
Merge #5798
5798: Introduce Label
 r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-08-18 14:51:10 +00:00
Aleksey Kladov
aa1a7a5414 Introduce Label 2020-08-18 16:50:07 +02:00
bors[bot]
e81c310b62
Merge #5797
5797: Minor
 r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-08-18 14:22:36 +00:00
Aleksey Kladov
eb81731600 Minor 2020-08-18 16:22:01 +02:00
bors[bot]
0e66dc690e
Merge #5796
5796: Align diagnostics config with the rest of rust-analyzer
 r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-08-18 14:12:00 +00:00
Aleksey Kladov
0866b1be89 Align diagnostics config with the rest of rust-analyzer 2020-08-18 16:03:15 +02:00
Dmitry
e18748ed15 Merge remote-tracking branch 'rust-analyzer/master' 2020-08-18 19:37:22 +07:00
bors[bot]
a3947129c5
Merge #5794
5794: Simplify building a symbol hierarchy
 r=matklad a=matklad

bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-08-18 12:32:32 +00:00