aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge #3080bors[bot]2020-02-103-19/+16
|\ | | | | | | | | | | | | | | 3080: More convenient run_with_output r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * More convenient run_with_outputAleksey Kladov2020-02-103-19/+16
|/
* Merge #3079bors[bot]2020-02-101-0/+11
|\ | | | | | | | | | | | | | | 3079: Add note r=matklad a=matklad Co-authored-by: Aleksey Kladov <[email protected]>
| * Add noteAleksey Kladov2020-02-101-0/+11
| |
* | Merge #3075bors[bot]2020-02-103-6/+6
|\ \ | |/ |/| | | | | | | | | | | 3075: Migrate u32::from(TextUnit) as usize to .to_usize() r=matklad a=Veetaha @matklad I see 29 uses of `.to_usize()` cast, wouldn't it be reasonable to change `TextUnit(u32)` to `TextUnit(usize)` ? Or do you have reasons to stick with `u32` here? Co-authored-by: Veetaha <[email protected]>
| * move to to_usize()Veetaha2020-02-093-6/+6
| |
* | Merge #3077bors[bot]2020-02-101-4/+4
|\ \ | |/ |/| | | | | | | | | | | 3077: Move build prerequisites into build section r=matklad a=dvermd Co-authored-by: dvermd <[email protected]>
| * Move build prerequisites into build sectiondvermd2020-02-101-4/+4
|/
* Merge #3072bors[bot]2020-02-091-5/+11
|\ | | | | | | | | | | | | | | 3072: vscode: removed unnecessary awaits feature r=matklad a=Veetaha Found a feature that when the user has no internet connection the whole extension is blocked by waiting for the user to dismiss the error message and for making a sanity-check dns resolution. Co-authored-by: Veetaha <[email protected]>
| * vscode: changed dns sanity-check url from google.com to example.comVeetaha2020-02-091-3/+6
| |
| * vscode: add on-success logic to dns resolution sanity checkVeetaha2020-02-091-4/+7
| |
| * vscode: removed unnecessary awaitsVeetaha2020-02-091-2/+2
| |
* | Merge #3071bors[bot]2020-02-092-26/+63
|\ \ | |/ |/| | | | | | | | | | | | | | | 3071: Freshen docs for prebuilt binaries and raLspServer setting r=matklad a=Veetaha Better documented breaking changes as per an incident in #2988 Follow up for #3053 Co-authored-by: Veetaha <[email protected]>
| * docs: quick fix inner link in docsVeetaha2020-02-091-1/+2
| |
| * docs: more documentation on prebuilt binaries all-editors-wiseVeetaha2020-02-091-22/+40
| |
| * docs: Freshen docs for prebuilt binaries and raLspServer settingVeetaha2020-02-092-5/+23
|/
* Merge #3068bors[bot]2020-02-091-13/+37
|\ | | | | | | | | | | | | | | 3068: Do not import anything if first segment of the qualified path resolves r=matklad a=SomeoneToIgnore Part of initial https://github.com/rust-analyzer/rust-analyzer/pull/3061, closing 2nd issue mentioned in the last comment there. Co-authored-by: Kirill Bulatov <[email protected]>
| * Fix rebase leftoversKirill Bulatov2020-02-091-2/+2
| |
| * Do not import anything if first segment of FQN resolvesKirill Bulatov2020-02-091-12/+36
| |
* | Merge #3053bors[bot]2020-02-0911-30/+429
|\ \ | |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3053: Feature: downloading lsp server from GitHub r=matklad a=Veetaha This is currently very WIP, I may need to change this and that, add "download language server command", logging stuff (for future bug reports), etc., but it already works. Also didn't test this on windows yet and mac (don't have the latter) The quirks: * Downloaded binary doesn't have executable permissions by default, that's why we ~~`chmod 111`~~ (**[UPD]** `chmod 755` as per @lnicola [suggestion](https://github.com/rust-analyzer/rust-analyzer/pull/3053#discussion_r376694456)) for it. * To remove installed binary run `rm /${HOME}/.config/Code/User/globalStorage/matklad.rust-analyzer/ra_lsp_server-linux`, ~~note that `-f` flag is necessary, because of `111` permissions (I think this should be changed)~~ (**[UPD]** --force is no longer needed due to 755 permissions). I also tried to keep things simple and not to use too many dependencies, all the ones added have 0 dependencies, (`ts-not-nil` is my personal npm package, that imitates `unwrap()` in TypeScript) **[UPD]** I reduced throttle latency of progress indicator to 200ms for smoother UX // TODO: - [x] ~~Add `Rust Analyzer: Download latest language server` vscode command.~~ **[UPD]**: having reviewed the code and estimated available options I concluded that this feature requires too many code changes, I'd like to extract this into a separate PR after we merge this one. - [x] Add some logging for future debugging - [x] ~~Gracefully handle the case when language server is not available (e.g. no internet connection, user explicitly rejected the download, etc.)~~ **[UPD]** Decided to postpone better implementation of graceful degradation logic as per [conversation](https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Fwg-rls-2.2E0/topic/Deployment.20and.20installation/near/187758550). Demo (**[UPD]** this is a bit outdated, but still mainly reflects the feature): ![ra-github-release-download-mvp](https://user-images.githubusercontent.com/36276403/74077961-4f248a80-4a2d-11ea-962f-27c650fd6c4c.gif) Related issue: #2988 #3007 Co-authored-by: Veetaha <[email protected]> Co-authored-by: Veetaha <[email protected]>
| * docs: fix spelling untill -> untilVeetaha2020-02-091-1/+1
| | | | | | Co-Authored-By: Jonas Platte <[email protected]>
| * docs: minor fixes in wordings and punctuationVeetaha2020-02-091-2/+2
| |
| * vscode: updated docs on prebuilt binariesVeetaha2020-02-091-0/+32
| |
| * vscode: added logging when donloading binariesVeetaha2020-02-093-5/+26
| |
| * vscode: move throtting of download progress to call siteVeetaha2020-02-092-16/+19
| |
| * vscode: replaced unwrapNotNil() with ! as per @matkladVeetaha2020-02-093-21/+3
| |
| * vscode: refactor inverted ternaries to if statements as per @matkladVeetaha2020-02-092-2/+6
| |
| * vscode: remove noise data fields declarations as per @matkladVeetaha2020-02-091-6/+1
| |
| * vscode: refactor levels of code nesting and string literals quotesVeetaha2020-02-091-26/+30
| |
| * vscode: fix chmod to octal literalVeetaha2020-02-091-1/+1
| | | | | | Co-Authored-By: Aleksey Kladov <[email protected]>
| * vscode: minor names and message contents changesVeetaha2020-02-082-9/+12
| |
| * vscode: rename raLspServer variable to langServerVeetaha2020-02-081-3/+3
| |
| * vscode: refactor commentVeetaha2020-02-081-1/+1
| |
| * vscode: refactor platform artifact name query to switch statement, move ↵Veetaha2020-02-084-70/+89
| | | | | | | | BinarySource union variants into a namespace
| * vscode: reduce throttle latency of downloadFile() progress callback for ↵Veetaha2020-02-081-1/+1
| | | | | | | | smoother UX
| * vscode: add name to the second unused argument of withProgress() callbackVeetaha2020-02-081-1/+1
| |
| * vscode: add docs to installation module interfaces and sanity check to ↵Veetaha2020-02-082-4/+39
| | | | | | | | donloadFile()
| * vscode: converted fetchLatestArtifactMetadata params to positional, added docsVeetaha2020-02-081-10/+10
| |
| * vscode: changed chmod value to 755 as per @lnicolaVeetaha2020-02-081-3/+3
| |
| * vscode: amended config to use binary from globalStoragePath, added ui for ↵Veetaha2020-02-0810-41/+229
| | | | | | | | downloading
| * added fetchLatestArtifactMetadata() and downloadFile() functionsVeetaha2020-02-084-1/+111
| |
| * vscode: add FIXME about language client shared resource protectionVeetaha2020-02-081-0/+3
| |
* | Merge #3070bors[bot]2020-02-091-1/+17
|\ \ | | | | | | | | | | | | | | | | | | | | | 3070: Set auto-import target r=matklad a=matklad closes #3067 Co-authored-by: Aleksey Kladov <[email protected]>
| * | Set auto-import targetAleksey Kladov2020-02-091-1/+17
|/ / | | | | | | closes #3067
* | Merge #3069bors[bot]2020-02-096-156/+152
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | 3069: Simplify Assists interface r=matklad a=matklad Instead of building a physical tree structure, just tag related assists with the same group Co-authored-by: Aleksey Kladov <[email protected]>
| * | 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
|/ /
* | Merge #3066bors[bot]2020-02-092-11/+11
|\ \ | | | | | | | | | | | | | | | | | | | | | 3066: Some README fixes/cleanups r=matklad a=flodiebold Make capitalization more consistent and fix some typos. Co-authored-by: Florian Diebold <[email protected]>
| * | Some README fixes/cleanupsFlorian Diebold2020-02-092-11/+11
|/ / | | | | | | 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]>