Commit graph

10674 commits

Author SHA1 Message Date
Jonas Schievink
ebd8233b3e Replace impls_in_trait with CrateImplDefs 2020-06-19 01:29:34 +02:00
bors[bot]
902a9c6da7
Merge #4930
4930: Avoid all unchecked indexing in match checking r=flodiebold a=jonas-schievink

Fixes https://github.com/rust-analyzer/rust-analyzer/issues/4416, but replaces it with a false positive.

r? @flodiebold 

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2020-06-18 19:43:05 +00:00
bors[bot]
1e35c74055
Merge #4941
4941: Simplify r=matklad a=matklad



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-06-18 14:05:54 +00:00
Aleksey Kladov
42be05a335 Simplify 2020-06-18 16:02:45 +02:00
bors[bot]
f7f627d342
Merge #4903
4903: Add highlighting support for doc comments r=matklad a=Nashenas88

The language server protocol includes a semantic modifier for documentation. This change exports that modifier for doc comments so users can choose to highlight them differently compared to regular comments.

Example:
<img width="375" alt="Screen Shot 2020-06-16 at 10 34 14 AM" src="https://user-images.githubusercontent.com/1673130/84788271-f6599580-afbc-11ea-96e5-7a0215da620b.png">

CC @woody77 

Co-authored-by: Paul Daniel Faria <Nashenas88@users.noreply.github.com>
2020-06-18 13:23:14 +00:00
Paul Daniel Faria
66fc084a86 Remove logic to mark all doctest code as 2020-06-18 09:14:02 -04:00
bors[bot]
0262dba97e
Merge #4935
4935: Simplify r=matklad a=matklad



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-06-18 10:41:37 +00:00
Aleksey Kladov
61a3f6d463 Simplify 2020-06-18 12:39:41 +02:00
bors[bot]
13adfedf82
Merge #4821
4821: display Doctest code lens before comment r=matklad a=bnjjj

close #4785

Co-authored-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-06-18 10:34:21 +00:00
Benjamin Coenen
2732fdb595 display Doctest code lens before comment #4785
Signed-off-by: Benjamin Coenen <5719034+bnjjj@users.noreply.github.com>
2020-06-18 11:31:15 +02:00
bors[bot]
28077f971a
Merge #4872
4872: Reduce the usage of bare subscript operator r=matklad a=Veetaha



Co-authored-by: Veetaha <veetaha2@gmail.com>
2020-06-18 06:48:12 +00:00
bors[bot]
99e3acd1fe
Merge #4934
4934: Remove special casing for library symbols r=matklad a=matklad

We might as well handle them internally, via queries.

I am not sure, but it looks like the current LibraryData setup might
even predate salsa? It's not really needed and creates a bunch of
complexity.



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-06-18 06:31:24 +00:00
Aleksey Kladov
d1d0b5a88c Remove special casing for library symbols
We might as well handle them internally, via queries.

I am not sure, but it looks like the current LibraryData setup might
even predate salsa? It's not really needed and creates a bunch of
complexity.
2020-06-18 08:29:34 +02:00
bors[bot]
f5af48dc49
Merge #4932
4932: Simplify r=matklad a=Veetaha



Co-authored-by: Veetaha <veetaha2@gmail.com>
2020-06-18 04:45:06 +00:00
Veetaha
9bb028189a Simplify 2020-06-18 02:00:48 +03:00
Jonas Schievink
4d6d7aec50 Avoid all unchecked indexing in match checking 2020-06-17 21:41:07 +02:00
bors[bot]
1ce8c2b5a0
Merge #4927
4927: Better encapsulate reverse-mapping of files to cargo targets r=matklad a=matklad

We need to find a better way to do it...

CrateGraph by itself is fine, CargoWorkspace as well, but the mapping
between the two seems arbitrary...



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-06-17 15:53:07 +00:00
Aleksey Kladov
dc90e0b5a5 Better encapsulate reverse-mapping of files to cargo targets
We need to find a better way to do it...

CrateGraph by itself is fine, CargoWorkspace as well, but the mapping
between the two seems arbitrary...
2020-06-17 17:51:46 +02:00
bors[bot]
f061b2daeb
Merge #4925
4925: Syntax highlighting for escape sequences in strings r=matklad a=ltentrup

I have added a new semantic token type `ESCAPE_SEQUENCE` as the LSP specification does not seem to have an appropriate token type. This may actually be a regression for some users, as the TextMate Rust grammar has a scope `constant.character.escape.rust` which highlights escape sequences (which caused problems with semantic highlighting, see #4138).

Fixes #2604.

Co-authored-by: Leander Tentrup <leander.tentrup@gmail.com>
2020-06-17 15:08:17 +00:00
Paul Daniel Faria
a951108173 Ensure all existing doctest code highlights have documentation modifier 2020-06-17 09:33:21 -04:00
Leander Tentrup
2145e2d878 Syntax highlighting for escape sequences in strings 2020-06-17 15:27:13 +02:00
Paul Daniel Faria
aae26bc5b8 Add highlighting support for doc comments 2020-06-17 08:29:13 -04:00
bors[bot]
931f317399
Merge #4913 #4915 #4916
4913: Remove debugging code for incremental sync r=matklad a=lnicola



4915: Inspect markdown code fences to determine whether to apply syntax highlighting r=matklad a=ltentrup

Fixes #4904 

4916: Warnings as hint or info r=matklad a=GabbeV

Fixes #4229 

This PR is my second attempt at providing a solution to the above issue. My last PR(#4721) had to be rolled back(#4862) due to it overriding behavior many users expected. This PR solves a broader problem while trying to minimize surprises for the users. 

### Problem description
The underlying problem this PR tries to solve is the mismatch between [Rustc lint levels](https://doc.rust-lang.org/rustc/lints/levels.html) and [LSP diagnostic severity](https://microsoft.github.io/language-server-protocol/specification#diagnostic). Rustc currently doesn't have a lint level less severe than warning forcing the user to disable warnings if they think they get to noisy. LSP however provides two severitys below warning, information and hint. This allows editors like VSCode to provide more fine grained control over how prominently to show different diagnostics.

Info severity shows a blue squiggly underline in code and can be filtered separately from errors and warnings in the problems panel.
![image](https://user-images.githubusercontent.com/13839236/84830640-0bb8d900-b02a-11ea-9e2f-0561b0e8f1ef.png)
![image](https://user-images.githubusercontent.com/13839236/84826931-ffca1880-b023-11ea-8080-5e5b91a6ac0d.png)

Hint severity doesn't show up in the problems panel at all and only show three dots under the affected code or just faded text if the diagnostic also has the unnecessary tag.
![image](https://user-images.githubusercontent.com/13839236/84827165-55062a00-b024-11ea-8bd6-bdbf1217c4c5.png)

### Solution
The solution provided by this PR allows the user to configure lists of of warnings to report as info severity and hint severity respectively. I purposefully only convert warnings and not errors as i believe it's a good idea to have the editor show the same severity as the compiler as much as possible.
![image](https://user-images.githubusercontent.com/13839236/84829609-50437500-b028-11ea-80a8-1bbd05680ba7.png)

### Open questions
#### Discoverability
How do we teach this to new and existing users? Should a section be added to the user manual? If so  where and what should it say?

#### Defaults
Other languages such as TypeScript report unused code as hint by default. Should rust-analyzer similarly report some problems as hint/info by default?

Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
Co-authored-by: Leander Tentrup <leander.tentrup@gmail.com>
Co-authored-by: Gabriel Valfridsson <gabriel.valfridsson@gmail.com>
2020-06-17 11:01:37 +00:00
bors[bot]
09c5cfedff
Merge #4914
4914: Fix panic in match checking r=flodiebold a=jonas-schievink

Fixes https://github.com/rust-analyzer/rust-analyzer/issues/4416

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2020-06-17 10:53:22 +00:00
bors[bot]
e9ddd12e8a
Merge #4919
4919: Remove :expr from placeholders r=matklad a=davidlattimore

Reasoning discussed at https://github.com/rust-analyzer/rust-analyzer/issues/3186#issuecomment-644069324

Co-authored-by: David Lattimore <dml@google.com>
2020-06-17 09:31:13 +00:00
David Lattimore
ac9166a7af Remove :expr from placeholders
Reasoning discussed at #3186
2020-06-17 18:28:24 +10:00
Gabriel Valfridsson
656e95211e Warnings as hint or info 2020-06-17 00:00:43 +02:00
Leander Tentrup
8ff91cf6b6 Inspect markdown code fences to determine whether to apply syntax highlighting 2020-06-16 23:03:59 +02:00
Jonas Schievink
d8af7983b1 Use ra_fixture and reformat tests 2020-06-16 22:54:41 +02:00
Jonas Schievink
9ecbadcedb Fix index-out-of-bounds panic in match checking 2020-06-16 22:45:34 +02:00
Laurențiu Nicola
2fa0b20ce0 Remove debugging code for incremental sync 2020-06-16 22:06:24 +03:00
bors[bot]
5d7974e5fb
Merge #4911
4911: cargo update r=kjeremy a=kjeremy



Co-authored-by: kjeremy <kjeremy@gmail.com>
2020-06-16 17:37:18 +00:00
kjeremy
31c8476a11 cargo update 2020-06-16 13:21:38 -04:00
bors[bot]
b64d0a3659
Merge #4909
4909: Anchor file-system operations to the file, and not to the source root.  r=matklad a=matklad



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-06-16 16:58:41 +00:00
Aleksey Kladov
3c72fc0573 Anchor file-system operations to the file, and not to the source root.
Anchoring to the SourceRoot wont' work if the path is absolute:

  #[path = "/tmp/foo.rs"]
  mod foo;

Anchoring to a file will.

However, we *should* anchor, instead of just producing an abs path.

I can imagine a situation where, for example, rust-analyzer processes
crates from different machines (or, for example, from in-memory git
branch), where the same absolute path in different crates might refer
to different files in the end!
2020-06-16 18:45:58 +02:00
bors[bot]
da34d630b8
Merge #4908
4908: Fix typos in docs/dev/README.md r=kjeremy a=okaneco

Small grammar and spelling changes in the README.md for the dev docs.

Co-authored-by: okaneco <47607823+okaneco@users.noreply.github.com>
2020-06-16 15:24:40 +00:00
okaneco
3910ea5cbf Fix typos in docs/dev/README.md
Small grammar and spelling changes
2020-06-16 10:44:56 -04:00
bors[bot]
6b2175878d
Merge #4891
4891: New VFS API r=matklad a=matklad

cc @flodiebold , @jonas-schievink 

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-06-16 11:48:36 +00:00
Aleksey Kladov
c002322bde New VFS API 2020-06-16 13:42:29 +02:00
bors[bot]
4342b71715
Merge #4876
4876: Syntactic highlighting of NAME_REF for injections r=matklad a=ltentrup

This commit adds a function that tries to determine the syntax highlighting class of NAME_REFs based on the usage.
It is used for highlighting injections (such as highlighting of doctests) as the semantic logic will most of the time result in unresolved references.
It also adds a color to unresolved references in HTML encoding.

Follow up of #4683.
Fixes #4809.

Co-authored-by: Leander Tentrup <leander.tentrup@gmail.com>
2020-06-16 11:40:51 +00:00
bors[bot]
83a16e825d
Merge #4878
4878: Make "Replace qualified name with use" replace *all* mentions of the path r=matklad a=jonas-schievink

Fixes https://github.com/rust-analyzer/rust-analyzer/issues/4836

Co-authored-by: Jonas Schievink <jonasschievink@gmail.com>
2020-06-16 05:29:05 +00:00
Jonas Schievink
4295a004ed Operate only on AST paths instead of HIR 2020-06-16 00:49:59 +02:00
Jonas Schievink
aaaa68b56c Simplify 2020-06-15 22:59:49 +02:00
Jonas Schievink
71c002e589 It's fookin' raw 2020-06-15 22:39:26 +02:00
Leander Tentrup
c4b3db0c2f Syntactic highlighting of NAME_REF for injections
This commit adds a function that tries to determine the syntax highlighting class of NAME_REFs based on the usage.
It is used for highlighting injections (such as highlighting of doctests) as the semantic logic will most of the time result in unresolved references.
It also adds a color to unresolved references in HTML encoding.
2020-06-15 22:13:53 +02:00
bors[bot]
f4f51171ca
Merge #4860
4860: Accept relative paths in rust-project.json r=matklad a=tweksteen

If a relative path is found as part of Crate.root_module or Root.path, interpret it as relative to the location of the rust-project.json file.

Fixes: #4816 

Co-authored-by: Thiébaud Weksteen <tweek@google.com>
2020-06-15 15:03:31 +00:00
bors[bot]
5b013e5665
Merge #4877
4877: Fix syntax highlighting of recursive macros r=matklad a=ltentrup

Add syntax highlighting for the BANG (`!`) token if the parent is `MACRO_CALL`.

Before:
<img width="514" alt="before" src="https://user-images.githubusercontent.com/201808/84595030-11f65c00-ae56-11ea-9bb2-b1abe2236990.png">

After:
<img width="516" alt="recursive-macro" src="https://user-images.githubusercontent.com/201808/84594981-d196de00-ae55-11ea-8636-f877d5d795ff.png">


Fixes #4694.

Co-authored-by: Leander Tentrup <leander.tentrup@gmail.com>
2020-06-15 13:44:46 +00:00
bors[bot]
d0ac2f746a
Merge #4892
4892: Make ra_syntax::{SyntaxNodeChildren, SyntaxElementChildren} public. r=matklad a=davidlattimore

SyntaxNode::children and SyntaxNode::children_with_tokens return these types, but there's currently no way AFAIK to name them.

Co-authored-by: David Lattimore <dml@google.com>
2020-06-15 13:15:33 +00:00
bors[bot]
74ed2a1133
Merge #4893
4893: Add Embark Studios to the sponsors list r=matklad a=matklad

Forgot to do this when updating the sponsors list on the website the
last time :(



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-06-15 13:07:38 +00:00
Aleksey Kladov
603ebb1f59 Add Embark Studios to the sponsors list
Forgot to do this when updating the sponsors list on the website the
last time :(
2020-06-15 15:06:03 +02:00