rust/src/tools/rustc-workspace-hack
Matthias Krüger 696fb8faa9 submodules: update rls from ae0d89a to c9d25b6
Changes:
````
Remove state.analysis due to Rust PR #57476
Improve missing nightly readme info
Bump languageserver-types to v0.54.0 and renam crate name to lsp-types
Delete bors.toml
Fix tests
Fix https://github.com/rust-lang/rls/issues/1231
Implement asynchronous message reading
Use typed requests
Implement Tokio-based test LSP client
Update README.md to account for Travis url change
Simplify wait_for_all recv calls
Update dependencies
Revert NLL bug workaround
Remove old test_data entry in .gitignore
Reorganize some tests
Don't test RLS binary target directly
Move tooltip tests to integration tests
Simplify tooltip test harness
Only use FIXTURES_DIR to determine fixtures
Remove src/test/mod.rs
Centralise FIXTURES_DIR across unit and integration tests
Move lens test to tests/
Suppress unused warnings in tests/*
Beautify main.rs and lib.rs
WIP: Move tests
Move src/test/harness to tests/support/harness
Split RLS into bin/lib
Update Clippy
Change all mentions of `rls-preview` to `rls`
Make config mutex borrow scope explicit
Fallback to racer definition
````

Fixes rls build.
2019-01-22 18:03:52 +01:00
..
Cargo.toml submodules: update rls from ae0d89a to c9d25b6 2019-01-22 18:03:52 +01:00
lib.rs Remove licenses 2018-12-25 21:08:33 -07:00
README.md Update Cargo submodule 2018-08-02 18:09:19 -07:00

rustc-workspace-hack

This crate is a bit of a hack to make workspaces in rustc work a bit better. The rationale for this existence is a bit subtle, but the general idea is that we want commands like ./x.py build src/tools/{rls,clippy,cargo} to share as many dependencies as possible.

Each invocation is a different invocation of Cargo, however. Each time Cargo runs a build it will re-resolve the dependency graph, notably selecting different features sometimes for each build.

For example, let's say there's a very deep dependency like num-traits in each of these builds. For Cargo the num-traits's default feature is turned off. In RLS, however, the default feature is turned. This means that building Cargo and then the RLS will actually build Cargo twice (as a transitive dependency changed). This is bad!

The goal of this crate is to solve this problem and ensure that the resolved dependency graph for all of these tools is the same in the various subsets of each tool, notably enabling the same features of transitive dependencies.

All tools vendored here depend on the rustc-workspace-hack crate on crates.io. When on crates.io this crate is an empty crate that is just a noop. We override it, however, in this workspace to this crate here, which means we can control crates in the dependency graph for each of these tools.