Commit graph

8951 commits

Author SHA1 Message Date
Steffen Lyngbaek
eb51abdc64 Fixes to more accurately give complete_scope completions
- Exclude const, static, functions form is_pat_binding_and_path
  (there might be more?)
- Add a check to filter out Record Fields
- Fix tests
2020-03-19 14:12:00 -07:00
Steffen Lyngbaek
6941a7faba - Exclude Local Scope for BindPats
- Exclude BindPats with @ or ref
- Remove outdated test and add one testing for ref
2020-03-19 14:12:00 -07:00
Steffen Lyngbaek
b6d6277362 Completition for type name? #3418
Iterate through TupleStructPat's until a MatchArm if
one exists. Store in a new is_pat_bind_and_path bool
and allow the `complete_scope` to find matches.

Added some tests to ensure it works in simple and nested cases.
2020-03-19 14:12:00 -07:00
Steffen Lyngbaek
b5ba9c3e3a Address nits and suggestions.
Simplify the logic a lot by removing the check for a placeholder pat.
This means the auto-fill no longer returns a compile-able value.
2020-03-19 11:49:01 -07:00
Steffen Lyngbaek
5f8f8a38a2 Don't show assist if all arms are present 2020-03-19 11:47:33 -07:00
Steffen Lyngbaek
6087c01460 'Fill match arms' should work with existing match arms
Addresses #3039

This essentially adds missing match arms. The algorithm for this
can get complicated rather quickly so bail in certain conditions
and rely on a PlaceholderPat.

The algorighm works as such:
- Iterate through the Enum Def Variants
- Attempt to see if the variant already exists as a match arm
- If yes, skip the enum variant. If no, include it.
- If it becomes complicated, rather than exhaustively deal with every
  branch, mark it as a "partial match" and simply include the
  placeholder.

  Conditions for "complication":
  - The match arm contains a match guard
  - Any kind of nested destrucuring

Order the resulting merged match branches as such:
1. Provided match arms
2. Missing enum variant branch arms
3. End with Placeholder if required

- Add extra tests
2020-03-19 11:47:33 -07:00
bors[bot]
1ba03c6995
Merge #3656
3656: Simplify arenas r=matklad a=matklad

At the moment, Arena is paranetrized by two types: index and data. The original motivation was to allow index to be defined in the downstream crate, so that you can add inherent impls to the index. 

However, it seems like we've never actually used that capability, so perhaps we should switch to a generic Index impl? This PR tries this out, switching only `raw.rs` and parts of `hir_def`. 

wdyt?

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-03-19 17:47:43 +00:00
Aleksey Kladov
f840fcb2f5 Simplify Arena to use a generic index 2020-03-19 18:46:30 +01:00
bors[bot]
988f1dda6b
Merge #3658
3658: More direct CargoWorkspace r=matklad a=matklad



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-03-19 17:01:14 +00:00
Aleksey Kladov
fc230b943b Simplify Sysroot 2020-03-19 17:59:31 +01:00
Aleksey Kladov
516fe293a8 More direct CargoWorkspace 2020-03-19 17:53:31 +01:00
bors[bot]
d013a05fee
Merge #3655
3655: Downgrade vscode-langaugeclient r=matklad a=matklad

Looks like it broke completion :(



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-03-19 14:23:48 +00:00
Aleksey Kladov
7adcadd279 Downgrade vscode-langaugeclient
Looks like it broke completion :(
2020-03-19 15:08:10 +01:00
bors[bot]
774043759f
Merge #3652
3652: Cleanup imports r=matklad a=matklad



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-03-19 11:37:00 +00:00
Aleksey Kladov
7e2bca4ec3 Cleanup imports 2020-03-19 12:36:33 +01:00
bors[bot]
525feb0acd
Merge #3651
3651: Merge nested use trees r=matklad a=matklad



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-03-19 11:19:24 +00:00
Aleksey Kladov
0c55c06944 Merge nested use trees 2020-03-19 12:18:59 +01:00
bors[bot]
11f2c6908b
Merge #3650
3650: Generalize r=matklad a=matklad



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-03-19 10:38:59 +00:00
Aleksey Kladov
ef3bf906c4 Generalize 2020-03-19 11:38:26 +01:00
Aleksey Kladov
13af63a403
Merge pull request #3641 from darinmorrison/rollup-typescript
Some improvements to rollup and ts config
2020-03-19 11:26:00 +01:00
bors[bot]
5b0a7c7d16
Merge #3649
3649: ⬆️ npm r=matklad a=matklad



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-03-19 09:31:03 +00:00
Aleksey Kladov
8f8f6b47de ⬆️ npm 2020-03-19 10:30:41 +01:00
Aleksey Kladov
ee4fe18ac8 Don't trigger stable release when pushing to nightly branch 2020-03-19 09:48:36 +01:00
Aleksey Kladov
b792e4abbd
Merge pull request #3635 from matklad/tags
Simplify extension tag sniffing
2020-03-19 09:38:08 +01:00
Aleksey Kladov
3d1cb5e20f Simplify extension tag sniffing 2020-03-19 09:37:03 +01:00
bors[bot]
aca3c3086e
Merge #3629
3629: Alternative aproach to plugin auto update r=matklad a=matklad

This is very much WIP (as in, I haven't run this once), but I like the result so far.

cc @Veetaha 

The primary focus here on simplification:

* local simplification of data structures and control-flow: using union of strings instead of an enum, using unwrapped GitHub API responses
* global simplification of control flow: all logic is now in `main.ts`, implemented as linear functions without abstractions. This is stateful side-effective code, so arguments from [Carmack](http://number-none.com/blow/john_carmack_on_inlined_code.html) very much apply. We need all user interractions, all mutations, and all network requests to happen in a single file. 
* as a side-effect of condensing everything to functions, we can get rid of various enums. The enums were basically a reified control flow:

```
enum E { A, B }

fn foo() -> E {
    if cond { E::A } else { E::B }
}

fn bar(e: E) {
    match e {
        E::A => do_a(),
        E::B => do_b(),
    }
}

==>>

fn all() {
    if cond { do_a() } else { do_b() }
}
```

* simplification of model: we don't need to reinstall on settings update, we can just ask the user to reload, we don't need to handle nightly=>stable fallback, we can ask the user to reinstall extension, (todo) we don't need to parse out the date from the version, we can use build id for nightly and for stable we can write the info directly into package.json.

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-03-19 08:06:48 +00:00
Aleksey Kladov
fb6e655de8 Rewrite auto-update
Everything now happens in main.ts, in the bootstrap family of
functions. The current flow is:

* check everything only on extension installation.
* if the user is on nightly channel, try to download the nightly
  extension and reload.
* when we install nightly extension, we persist its release id, so
  that we can check if the current release is different.
* if server binary was not downloaded by the current version of the
  extension, redownload it (we persist the version of ext that
  downloaded the server).
2020-03-19 09:04:59 +01:00
Aleksey Kladov
55336722b3
Merge pull request #3646 from Veetaha/feature/revive-npm-audit
cicd: revive npm audit
2020-03-18 23:32:16 +01:00
Darin Morrison
630888df5b Target es2019 (code 1.43 uses chromium 78) 2020-03-18 16:30:34 -06:00
Darin Morrison
0ec20234a7 Add typing annotations for rollup config 2020-03-18 16:30:34 -06:00
bors[bot]
21a35b49ee
Merge #3645
3645: cargo update r=matklad a=CAD97

Closes #3644 as well.

Would setting up [dependabot](https://dependabot.com/) make sense for this repository?

Co-authored-by: CAD97 <cad97@cad97.com>
2020-03-18 21:24:23 +00:00
CAD97
27d9516105 cargo update 2020-03-18 17:17:45 -04:00
veetaha
e1e41c8b32 cicd: revive npm audit 2020-03-18 23:15:48 +02:00
bors[bot]
b376cabe5e
Merge #3643
3643: Use match_ast r=matklad a=matklad



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-03-18 19:52:10 +00:00
Aleksey Kladov
0bf903411c Use match_ast 2020-03-18 20:51:47 +01:00
bors[bot]
b28d411866
Merge #3640
3640: Merge imports assist r=matklad a=matklad

Work towards #2220



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-03-18 18:35:11 +00:00
Aleksey Kladov
3f6dc20d3c Merge imports assist
Work towards #2220
2020-03-18 19:34:47 +01:00
Aleksey Kladov
4e50efcfc5 Strongly-typed generic methods for editing nodes 2020-03-18 19:34:47 +01:00
bors[bot]
12c952f801
Merge #3637
3637: Update dependencies and fix minimist CVE r=matklad a=darinmorrison

This PR just updates some dependencies and also regenerates the `package-lock.json` to fix the recent [minimist CVE](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-7598) (a dependency of eslint).

Co-authored-by: Darin Morrison <darinmorrison@users.noreply.github.com>
2020-03-18 16:38:17 +00:00
Darin Morrison
482a7c2262 Update deps; regen lock file; fix minimist CVE 2020-03-18 10:36:11 -06:00
bors[bot]
198510760d
Merge #3636
3636: Reduce visibility r=matklad a=matklad



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-03-18 15:49:08 +00:00
Aleksey Kladov
3c88ef76d6 Reduce visibility 2020-03-18 16:48:45 +01:00
bors[bot]
f0a1b64d7e
Merge #3634
3634: Make xtask dist more reliable r=matklad a=matklad



bors r+
🤖

Co-authored-by: Aleksey Kladov <aleksey.kladov@gmail.com>
2020-03-18 12:28:28 +00:00
Aleksey Kladov
e511b3280f Make xtask dist more reliable 2020-03-18 13:23:44 +01:00
bors[bot]
2a3543d195
Merge #3630
3630: Feature: remove dat fixme r=matklad a=Veetaha



Co-authored-by: veetaha <veetaha2@gmail.com>
2020-03-18 08:44:46 +00:00
Aleksey Kladov
a8ddea8d1c Don't filter release by fork
This syntax does not work for some reason

https://github.com/rust-analyzer/rust-analyzer/runs/515231288?check_suite_focus=true
2020-03-18 09:43:49 +01:00
veetaha
4d83961acb ra_hir_def: remove dat fixme 2020-03-18 02:35:49 +02:00
Aleksey Kladov
46c618f7d9 Disable npm audit, as it blocks unrelated PR without a way to fix
https://github.com/rust-analyzer/rust-analyzer/pull/3582#issuecomment-600107117
2020-03-17 15:43:14 +01:00
Aleksey Kladov
ec1312ef38
Merge pull request #3582 from kiljacken/out-dir-from-check
Update OUT_DIR based on `cargo check` output
2020-03-17 15:42:02 +01:00
Emil Lauridsen
2dd887de47 Use dyn-ref instead of impl to impact compile times the least 2020-03-17 14:56:53 +01:00