aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.cargo/config25
-rw-r--r--.travis.yml6
-rw-r--r--Cargo.lock395
-rw-r--r--Cargo.toml5
-rw-r--r--README.md6
-rw-r--r--crates/ra_assists/Cargo.toml4
-rw-r--r--crates/ra_assists/src/assist_ctx.rs1
-rw-r--r--crates/ra_assists/src/assists/early_return.rs276
-rw-r--r--crates/ra_assists/src/assists/fill_match_arms.rs18
-rw-r--r--crates/ra_assists/src/assists/move_bounds.rs2
-rw-r--r--crates/ra_assists/src/assists/raw_string.rs110
-rw-r--r--crates/ra_assists/src/lib.rs2
-rw-r--r--crates/ra_batch/Cargo.toml2
-rw-r--r--crates/ra_batch/src/lib.rs18
-rw-r--r--crates/ra_cfg/src/lib.rs24
-rw-r--r--crates/ra_cli/Cargo.toml2
-rw-r--r--crates/ra_cli/src/analysis_bench.rs2
-rw-r--r--crates/ra_cli/src/analysis_stats.rs33
-rw-r--r--crates/ra_db/Cargo.toml2
-rw-r--r--crates/ra_db/src/input.rs6
-rw-r--r--crates/ra_db/src/lib.rs76
-rw-r--r--crates/ra_hir/Cargo.toml4
-rw-r--r--crates/ra_hir/src/adt.rs12
-rw-r--r--crates/ra_hir/src/attr.rs24
-rw-r--r--crates/ra_hir/src/code_model.rs44
-rw-r--r--crates/ra_hir/src/code_model/docs.rs20
-rw-r--r--crates/ra_hir/src/db.rs18
-rw-r--r--crates/ra_hir/src/debug.rs20
-rw-r--r--crates/ra_hir/src/from_source.rs10
-rw-r--r--crates/ra_hir/src/ids.rs45
-rw-r--r--crates/ra_hir/src/impl_block.rs35
-rw-r--r--crates/ra_hir/src/lib.rs3
-rw-r--r--crates/ra_hir/src/mock.rs42
-rw-r--r--crates/ra_hir/src/nameres/collector.rs77
-rw-r--r--crates/ra_hir/src/nameres/mod_resolution.rs228
-rw-r--r--crates/ra_hir/src/nameres/raw.rs53
-rw-r--r--crates/ra_hir/src/nameres/tests.rs13
-rw-r--r--crates/ra_hir/src/nameres/tests/incremental.rs2
-rw-r--r--crates/ra_hir/src/nameres/tests/macros.rs29
-rw-r--r--crates/ra_hir/src/nameres/tests/mod_resolution.rs214
-rw-r--r--crates/ra_hir/src/resolve.rs32
-rw-r--r--crates/ra_hir/src/source_binder.rs2
-rw-r--r--crates/ra_hir/src/ty.rs24
-rw-r--r--crates/ra_hir/src/ty/infer.rs1164
-rw-r--r--crates/ra_hir/src/ty/infer/coerce.rs336
-rw-r--r--crates/ra_hir/src/ty/infer/expr.rs658
-rw-r--r--crates/ra_hir/src/ty/infer/pat.rs180
-rw-r--r--crates/ra_hir/src/ty/infer/unify.rs23
-rw-r--r--crates/ra_hir/src/ty/lower.rs39
-rw-r--r--crates/ra_hir/src/ty/tests.rs22
-rw-r--r--crates/ra_hir/src/ty/traits.rs2
-rw-r--r--crates/ra_hir/src/ty/traits/chalk.rs61
-rw-r--r--crates/ra_hir/src/type_alias.rs18
-rw-r--r--crates/ra_hir/src/util.rs12
-rw-r--r--crates/ra_ide_api/Cargo.toml3
-rw-r--r--crates/ra_ide_api/src/change.rs2
-rw-r--r--crates/ra_ide_api/src/completion/complete_dot.rs185
-rw-r--r--crates/ra_ide_api/src/completion/complete_macro_in_item_position.rs62
-rw-r--r--crates/ra_ide_api/src/completion/complete_path.rs166
-rw-r--r--crates/ra_ide_api/src/completion/complete_postfix.rs67
-rw-r--r--crates/ra_ide_api/src/completion/complete_scope.rs679
-rw-r--r--crates/ra_ide_api/src/completion/completion_context.rs19
-rw-r--r--crates/ra_ide_api/src/completion/completion_item.rs4
-rw-r--r--crates/ra_ide_api/src/completion/presentation.rs389
-rw-r--r--crates/ra_ide_api/src/db.rs25
-rw-r--r--crates/ra_ide_api/src/diagnostics.rs13
-rw-r--r--crates/ra_ide_api/src/display/navigation_target.rs6
-rw-r--r--crates/ra_ide_api/src/extend_selection.rs3
-rw-r--r--crates/ra_ide_api/src/goto_definition.rs12
-rw-r--r--crates/ra_ide_api/src/hover.rs11
-rw-r--r--crates/ra_ide_api/src/lib.rs14
-rw-r--r--crates/ra_ide_api/src/marks.rs1
-rw-r--r--crates/ra_ide_api/src/name_ref_kind.rs98
-rw-r--r--crates/ra_ide_api/src/references.rs524
-rw-r--r--crates/ra_ide_api/src/references/classify.rs179
-rw-r--r--crates/ra_ide_api/src/references/name_definition.rs113
-rw-r--r--crates/ra_ide_api/src/references/rename.rs469
-rw-r--r--crates/ra_ide_api/src/references/search_scope.rs92
-rw-r--r--crates/ra_ide_api/src/snapshots/highlighting.html2
-rw-r--r--crates/ra_ide_api/src/symbol_index.rs2
-rw-r--r--crates/ra_ide_api/src/syntax_highlighting.rs17
-rw-r--r--crates/ra_lsp_server/Cargo.toml6
-rw-r--r--crates/ra_lsp_server/src/conv.rs106
-rw-r--r--crates/ra_lsp_server/src/lib.rs2
-rw-r--r--crates/ra_lsp_server/src/main_loop.rs24
-rw-r--r--crates/ra_lsp_server/src/main_loop/handlers.rs22
-rw-r--r--crates/ra_lsp_server/src/world.rs9
-rw-r--r--crates/ra_mbe/Cargo.toml1
-rw-r--r--crates/ra_parser/src/grammar/expressions.rs11
-rw-r--r--crates/ra_project_model/Cargo.toml2
-rw-r--r--crates/ra_project_model/src/lib.rs44
-rw-r--r--crates/ra_syntax/Cargo.toml3
-rw-r--r--crates/ra_syntax/src/ast/edit.rs119
-rw-r--r--crates/ra_syntax/src/ast/make.rs14
-rw-r--r--crates/ra_syntax/src/grammar.ron2
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0146_as_precedence.rs3
-rw-r--r--crates/ra_syntax/test_data/parser/inline/ok/0146_as_precedence.txt43
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0058_unary_expr_precedence.rs7
-rw-r--r--crates/ra_syntax/test_data/parser/ok/0058_unary_expr_precedence.txt97
-rw-r--r--crates/ra_tt/Cargo.toml4
-rw-r--r--crates/ra_vfs_glob/Cargo.toml2
-rw-r--r--docs/dev/README.md12
-rw-r--r--docs/dev/architecture.md16
-rw-r--r--docs/user/README.md26
-rw-r--r--docs/user/features.md7
-rw-r--r--editors/code/package-lock.json46
-rw-r--r--editors/code/package.json16
-rw-r--r--editors/code/src/commands/cargo_watch.ts7
-rw-r--r--editors/code/src/config.ts11
-rw-r--r--website/src/index.html21
-rw-r--r--website/src/wasm-demo/index.html13
-rw-r--r--website/website-gen/Cargo.toml9
-rw-r--r--website/website-gen/src/main.rs64
-rw-r--r--xtask/Cargo.toml (renamed from crates/ra_tools/Cargo.toml)2
-rw-r--r--xtask/src/bin/pre-commit.rs (renamed from crates/ra_tools/src/bin/pre-commit.rs)2
-rw-r--r--xtask/src/boilerplate_gen.rs (renamed from crates/ra_tools/src/boilerplate_gen.rs)0
-rw-r--r--xtask/src/help.rs (renamed from crates/ra_tools/src/help.rs)10
-rw-r--r--xtask/src/lib.rs (renamed from crates/ra_tools/src/lib.rs)4
-rw-r--r--xtask/src/main.rs (renamed from crates/ra_tools/src/main.rs)52
-rw-r--r--xtask/tests/tidy-tests/cli.rs (renamed from crates/ra_tools/tests/cli.rs)6
-rw-r--r--xtask/tests/tidy-tests/docs.rs (renamed from crates/ra_tools/tests/docs.rs)2
-rw-r--r--xtask/tests/tidy-tests/main.rs (renamed from crates/ra_tools/tests/main.rs)0
122 files changed, 5209 insertions, 3276 deletions
diff --git a/.cargo/config b/.cargo/config
index 9f9b24a49..3812e1e2d 100644
--- a/.cargo/config
+++ b/.cargo/config
@@ -1,25 +1,4 @@
1[alias] 1[alias]
2# Automatically generates the ast and syntax kinds files 2xtask = "run --package xtask --bin xtask --"
3gen-syntax = "run --package ra_tools --bin ra_tools -- gen-syntax"
4 3
5# Extracts the tests from 4install-ra = "run --package xtask --bin xtask -- install" # for backwards compat
6gen-tests = "run --package ra_tools --bin ra_tools -- gen-tests"
7
8build-website = "run --package website-gen"
9
10# Installs the visual studio code extension
11install-ra = "run --package ra_tools --bin ra_tools -- install-ra"
12install-code = "run --package ra_tools --bin ra_tools -- install-ra" # just an alias
13
14# Formats the full repository or installs the git hook to do it automatically.
15format = "run --package ra_tools --bin ra_tools -- format"
16format-hook = "run --package ra_tools --bin ra_tools -- format-hook"
17
18# Run clippy
19lint = "run --package ra_tools --bin ra_tools -- lint"
20
21# Runs the fuzzing test suite (currently only parser)
22fuzz-tests = "run --package ra_tools --bin ra_tools -- fuzz-tests"
23
24# Parse a file. This should be piped the file contents
25parse = "run --package ra_cli -- parse"
diff --git a/.travis.yml b/.travis.yml
index d4cf71ab5..7d66f72d8 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -14,7 +14,7 @@ matrix:
14 script: 14 script:
15 - rustup component add rustfmt 15 - rustup component add rustfmt
16 - rustup component add rust-src 16 - rustup component add rust-src
17 - printf "\n\n[profile.dev]\ndebug = false\n" >> Cargo.toml 17 - sed -i "s/debug = 1/debug = false/g" Cargo.toml
18 - cargo test --no-run # let's measure compile time separately 18 - cargo test --no-run # let's measure compile time separately
19 - cargo test 19 - cargo test
20 env: 20 env:
@@ -28,7 +28,7 @@ matrix:
28 language: rust 28 language: rust
29 rust: stable 29 rust: stable
30 script: 30 script:
31 - cargo build-website 31 - cargo doc --all --no-deps
32 env: 32 env:
33 - RUSTFLAGS="-D warnings", CARGO_INCREMENTAL=0 33 - RUSTFLAGS="-D warnings", CARGO_INCREMENTAL=0
34 34
@@ -59,7 +59,7 @@ deploy:
59 skip-cleanup: true 59 skip-cleanup: true
60 github-token: $DOCS_TOKEN # Set in the settings page of your repository, as a secure variable 60 github-token: $DOCS_TOKEN # Set in the settings page of your repository, as a secure variable
61 keep-history: false 61 keep-history: false
62 local-dir: target/website/ 62 local-dir: target/doc
63 on: 63 on:
64 branch: master 64 branch: master
65 condition: $DEPLOY_DOCS = 1 65 condition: $DEPLOY_DOCS = 1
diff --git a/Cargo.lock b/Cargo.lock
index a5a43cffc..634480e5f 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -10,44 +10,49 @@ dependencies = [
10 10
11[[package]] 11[[package]]
12name = "arrayvec" 12name = "arrayvec"
13version = "0.4.11" 13version = "0.4.12"
14source = "registry+https://github.com/rust-lang/crates.io-index" 14source = "registry+https://github.com/rust-lang/crates.io-index"
15dependencies = [ 15dependencies = [
16 "nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 16 "nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)",
17] 17]
18 18
19[[package]] 19[[package]]
20name = "arrayvec"
21version = "0.5.1"
22source = "registry+https://github.com/rust-lang/crates.io-index"
23
24[[package]]
20name = "atty" 25name = "atty"
21version = "0.2.13" 26version = "0.2.13"
22source = "registry+https://github.com/rust-lang/crates.io-index" 27source = "registry+https://github.com/rust-lang/crates.io-index"
23dependencies = [ 28dependencies = [
24 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 29 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
25 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 30 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
26] 31]
27 32
28[[package]] 33[[package]]
29name = "autocfg" 34name = "autocfg"
30version = "0.1.6" 35version = "0.1.7"
31source = "registry+https://github.com/rust-lang/crates.io-index" 36source = "registry+https://github.com/rust-lang/crates.io-index"
32 37
33[[package]] 38[[package]]
34name = "backtrace" 39name = "backtrace"
35version = "0.3.38" 40version = "0.3.40"
36source = "registry+https://github.com/rust-lang/crates.io-index" 41source = "registry+https://github.com/rust-lang/crates.io-index"
37dependencies = [ 42dependencies = [
38 "backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)", 43 "backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)",
39 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 44 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
40 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 45 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
41 "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)", 46 "rustc-demangle 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)",
42] 47]
43 48
44[[package]] 49[[package]]
45name = "backtrace-sys" 50name = "backtrace-sys"
46version = "0.1.31" 51version = "0.1.32"
47source = "registry+https://github.com/rust-lang/crates.io-index" 52source = "registry+https://github.com/rust-lang/crates.io-index"
48dependencies = [ 53dependencies = [
49 "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", 54 "cc 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
50 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 55 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
51] 56]
52 57
53[[package]] 58[[package]]
@@ -73,7 +78,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
73 78
74[[package]] 79[[package]]
75name = "bitflags" 80name = "bitflags"
76version = "1.2.0" 81version = "1.2.1"
77source = "registry+https://github.com/rust-lang/crates.io-index" 82source = "registry+https://github.com/rust-lang/crates.io-index"
78 83
79[[package]] 84[[package]]
@@ -91,27 +96,26 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
91 96
92[[package]] 97[[package]]
93name = "c2-chacha" 98name = "c2-chacha"
94version = "0.2.2" 99version = "0.2.3"
95source = "registry+https://github.com/rust-lang/crates.io-index" 100source = "registry+https://github.com/rust-lang/crates.io-index"
96dependencies = [ 101dependencies = [
97 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 102 "ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)",
98 "ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)",
99] 103]
100 104
101[[package]] 105[[package]]
102name = "cargo_metadata" 106name = "cargo_metadata"
103version = "0.8.2" 107version = "0.9.0"
104source = "registry+https://github.com/rust-lang/crates.io-index" 108source = "registry+https://github.com/rust-lang/crates.io-index"
105dependencies = [ 109dependencies = [
106 "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 110 "semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
107 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", 111 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)",
108 "serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", 112 "serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)",
109 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 113 "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)",
110] 114]
111 115
112[[package]] 116[[package]]
113name = "cc" 117name = "cc"
114version = "1.0.45" 118version = "1.0.46"
115source = "registry+https://github.com/rust-lang/crates.io-index" 119source = "registry+https://github.com/rust-lang/crates.io-index"
116 120
117[[package]] 121[[package]]
@@ -122,17 +126,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
122[[package]] 126[[package]]
123name = "chalk-engine" 127name = "chalk-engine"
124version = "0.9.0" 128version = "0.9.0"
125source = "git+https://github.com/rust-lang/chalk.git#df09cc603c0cff9ed95e5554055d483fdd756fbc" 129source = "git+https://github.com/rust-lang/chalk.git#13303bb0067c6ed0572322080ae367ee38f9e7c9"
126dependencies = [ 130dependencies = [
127 "chalk-macros 0.1.1 (git+https://github.com/rust-lang/chalk.git)", 131 "chalk-macros 0.1.1 (git+https://github.com/rust-lang/chalk.git)",
128 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 132 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
129 "stacker 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 133 "stacker 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
130] 134]
131 135
132[[package]] 136[[package]]
133name = "chalk-ir" 137name = "chalk-ir"
134version = "0.1.0" 138version = "0.1.0"
135source = "git+https://github.com/rust-lang/chalk.git#df09cc603c0cff9ed95e5554055d483fdd756fbc" 139source = "git+https://github.com/rust-lang/chalk.git#13303bb0067c6ed0572322080ae367ee38f9e7c9"
136dependencies = [ 140dependencies = [
137 "chalk-engine 0.9.0 (git+https://github.com/rust-lang/chalk.git)", 141 "chalk-engine 0.9.0 (git+https://github.com/rust-lang/chalk.git)",
138 "chalk-macros 0.1.1 (git+https://github.com/rust-lang/chalk.git)", 142 "chalk-macros 0.1.1 (git+https://github.com/rust-lang/chalk.git)",
@@ -142,7 +146,7 @@ dependencies = [
142[[package]] 146[[package]]
143name = "chalk-macros" 147name = "chalk-macros"
144version = "0.1.1" 148version = "0.1.1"
145source = "git+https://github.com/rust-lang/chalk.git#df09cc603c0cff9ed95e5554055d483fdd756fbc" 149source = "git+https://github.com/rust-lang/chalk.git#13303bb0067c6ed0572322080ae367ee38f9e7c9"
146dependencies = [ 150dependencies = [
147 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 151 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
148] 152]
@@ -150,7 +154,7 @@ dependencies = [
150[[package]] 154[[package]]
151name = "chalk-rust-ir" 155name = "chalk-rust-ir"
152version = "0.1.0" 156version = "0.1.0"
153source = "git+https://github.com/rust-lang/chalk.git#df09cc603c0cff9ed95e5554055d483fdd756fbc" 157source = "git+https://github.com/rust-lang/chalk.git#13303bb0067c6ed0572322080ae367ee38f9e7c9"
154dependencies = [ 158dependencies = [
155 "chalk-engine 0.9.0 (git+https://github.com/rust-lang/chalk.git)", 159 "chalk-engine 0.9.0 (git+https://github.com/rust-lang/chalk.git)",
156 "chalk-ir 0.1.0 (git+https://github.com/rust-lang/chalk.git)", 160 "chalk-ir 0.1.0 (git+https://github.com/rust-lang/chalk.git)",
@@ -160,14 +164,13 @@ dependencies = [
160[[package]] 164[[package]]
161name = "chalk-solve" 165name = "chalk-solve"
162version = "0.1.0" 166version = "0.1.0"
163source = "git+https://github.com/rust-lang/chalk.git#df09cc603c0cff9ed95e5554055d483fdd756fbc" 167source = "git+https://github.com/rust-lang/chalk.git#13303bb0067c6ed0572322080ae367ee38f9e7c9"
164dependencies = [ 168dependencies = [
165 "chalk-engine 0.9.0 (git+https://github.com/rust-lang/chalk.git)", 169 "chalk-engine 0.9.0 (git+https://github.com/rust-lang/chalk.git)",
166 "chalk-ir 0.1.0 (git+https://github.com/rust-lang/chalk.git)", 170 "chalk-ir 0.1.0 (git+https://github.com/rust-lang/chalk.git)",
167 "chalk-macros 0.1.1 (git+https://github.com/rust-lang/chalk.git)", 171 "chalk-macros 0.1.1 (git+https://github.com/rust-lang/chalk.git)",
168 "chalk-rust-ir 0.1.0 (git+https://github.com/rust-lang/chalk.git)", 172 "chalk-rust-ir 0.1.0 (git+https://github.com/rust-lang/chalk.git)",
169 "derive-new 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", 173 "ena 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
170 "ena 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)",
171 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 174 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
172 "petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)", 175 "petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)",
173 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 176 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -178,7 +181,7 @@ name = "chrono"
178version = "0.4.9" 181version = "0.4.9"
179source = "registry+https://github.com/rust-lang/crates.io-index" 182source = "registry+https://github.com/rust-lang/crates.io-index"
180dependencies = [ 183dependencies = [
181 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 184 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
182 "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)", 185 "num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
183 "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 186 "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
184 "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", 187 "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -191,7 +194,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
191dependencies = [ 194dependencies = [
192 "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)", 195 "atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)",
193 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 196 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
194 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 197 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
195 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 198 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
196] 199]
197 200
@@ -200,7 +203,7 @@ name = "cloudabi"
200version = "0.0.3" 203version = "0.0.3"
201source = "registry+https://github.com/rust-lang/crates.io-index" 204source = "registry+https://github.com/rust-lang/crates.io-index"
202dependencies = [ 205dependencies = [
203 "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 206 "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
204] 207]
205 208
206[[package]] 209[[package]]
@@ -211,7 +214,22 @@ dependencies = [
211 "clicolors-control 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 214 "clicolors-control 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
212 "encode_unicode 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", 215 "encode_unicode 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
213 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 216 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
214 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 217 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
218 "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
219 "termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
220 "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
221 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
222]
223
224[[package]]
225name = "console"
226version = "0.9.0"
227source = "registry+https://github.com/rust-lang/crates.io-index"
228dependencies = [
229 "clicolors-control 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
230 "encode_unicode 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
231 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
232 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
215 "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 233 "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
216 "termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 234 "termios 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
217 "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 235 "unicode-width 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -253,7 +271,7 @@ name = "crossbeam-epoch"
253version = "0.7.2" 271version = "0.7.2"
254source = "registry+https://github.com/rust-lang/crates.io-index" 272source = "registry+https://github.com/rust-lang/crates.io-index"
255dependencies = [ 273dependencies = [
256 "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 274 "arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)",
257 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 275 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
258 "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", 276 "crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)",
259 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 277 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -283,7 +301,7 @@ name = "derive-new"
283version = "0.5.8" 301version = "0.5.8"
284source = "registry+https://github.com/rust-lang/crates.io-index" 302source = "registry+https://github.com/rust-lang/crates.io-index"
285dependencies = [ 303dependencies = [
286 "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 304 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
287 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 305 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
288 "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 306 "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
289] 307]
@@ -310,7 +328,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
310 328
311[[package]] 329[[package]]
312name = "ena" 330name = "ena"
313version = "0.13.0" 331version = "0.13.1"
314source = "registry+https://github.com/rust-lang/crates.io-index" 332source = "registry+https://github.com/rust-lang/crates.io-index"
315dependencies = [ 333dependencies = [
316 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 334 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -327,7 +345,7 @@ version = "0.2.7"
327source = "registry+https://github.com/rust-lang/crates.io-index" 345source = "registry+https://github.com/rust-lang/crates.io-index"
328dependencies = [ 346dependencies = [
329 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 347 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
330 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 348 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
331 "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 349 "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
332 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 350 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
333] 351]
@@ -369,7 +387,7 @@ name = "fsevent"
369version = "0.4.0" 387version = "0.4.0"
370source = "registry+https://github.com/rust-lang/crates.io-index" 388source = "registry+https://github.com/rust-lang/crates.io-index"
371dependencies = [ 389dependencies = [
372 "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 390 "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
373 "fsevent-sys 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 391 "fsevent-sys 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
374] 392]
375 393
@@ -378,7 +396,7 @@ name = "fsevent-sys"
378version = "2.0.1" 396version = "2.0.1"
379source = "registry+https://github.com/rust-lang/crates.io-index" 397source = "registry+https://github.com/rust-lang/crates.io-index"
380dependencies = [ 398dependencies = [
381 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 399 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
382] 400]
383 401
384[[package]] 402[[package]]
@@ -399,7 +417,7 @@ name = "fuchsia-zircon"
399version = "0.3.3" 417version = "0.3.3"
400source = "registry+https://github.com/rust-lang/crates.io-index" 418source = "registry+https://github.com/rust-lang/crates.io-index"
401dependencies = [ 419dependencies = [
402 "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 420 "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
403 "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 421 "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
404] 422]
405 423
@@ -414,7 +432,7 @@ version = "0.1.12"
414source = "registry+https://github.com/rust-lang/crates.io-index" 432source = "registry+https://github.com/rust-lang/crates.io-index"
415dependencies = [ 433dependencies = [
416 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 434 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
417 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 435 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
418 "wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", 436 "wasi 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)",
419] 437]
420 438
@@ -455,18 +473,20 @@ dependencies = [
455 473
456[[package]] 474[[package]]
457name = "indexmap" 475name = "indexmap"
458version = "1.2.0" 476version = "1.3.0"
459source = "registry+https://github.com/rust-lang/crates.io-index" 477source = "registry+https://github.com/rust-lang/crates.io-index"
478dependencies = [
479 "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
480]
460 481
461[[package]] 482[[package]]
462name = "indicatif" 483name = "indicatif"
463version = "0.11.0" 484version = "0.12.0"
464source = "registry+https://github.com/rust-lang/crates.io-index" 485source = "registry+https://github.com/rust-lang/crates.io-index"
465dependencies = [ 486dependencies = [
466 "console 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 487 "console 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
467 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 488 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
468 "number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 489 "number_prefix 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
469 "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
470 "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 490 "regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
471] 491]
472 492
@@ -475,9 +495,9 @@ name = "inotify"
475version = "0.6.1" 495version = "0.6.1"
476source = "registry+https://github.com/rust-lang/crates.io-index" 496source = "registry+https://github.com/rust-lang/crates.io-index"
477dependencies = [ 497dependencies = [
478 "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 498 "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
479 "inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 499 "inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
480 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 500 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
481] 501]
482 502
483[[package]] 503[[package]]
@@ -485,7 +505,7 @@ name = "inotify-sys"
485version = "0.1.3" 505version = "0.1.3"
486source = "registry+https://github.com/rust-lang/crates.io-index" 506source = "registry+https://github.com/rust-lang/crates.io-index"
487dependencies = [ 507dependencies = [
488 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 508 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
489] 509]
490 510
491[[package]] 511[[package]]
@@ -497,18 +517,17 @@ dependencies = [
497 "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 517 "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
498 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 518 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
499 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", 519 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)",
500 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 520 "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)",
501 "serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)", 521 "serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)",
502 "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)", 522 "uuid 0.7.4 (registry+https://github.com/rust-lang/crates.io-index)",
503] 523]
504 524
505[[package]] 525[[package]]
506name = "iovec" 526name = "iovec"
507version = "0.1.2" 527version = "0.1.4"
508source = "registry+https://github.com/rust-lang/crates.io-index" 528source = "registry+https://github.com/rust-lang/crates.io-index"
509dependencies = [ 529dependencies = [
510 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 530 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
511 "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
512] 531]
513 532
514[[package]] 533[[package]]
@@ -530,7 +549,7 @@ version = "0.3.3"
530source = "registry+https://github.com/rust-lang/crates.io-index" 549source = "registry+https://github.com/rust-lang/crates.io-index"
531dependencies = [ 550dependencies = [
532 "jemalloc-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 551 "jemalloc-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
533 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 552 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
534 "paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 553 "paste 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
535] 554]
536 555
@@ -539,9 +558,9 @@ name = "jemalloc-sys"
539version = "0.3.2" 558version = "0.3.2"
540source = "registry+https://github.com/rust-lang/crates.io-index" 559source = "registry+https://github.com/rust-lang/crates.io-index"
541dependencies = [ 560dependencies = [
542 "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", 561 "cc 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
543 "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 562 "fs_extra 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
544 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 563 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
545] 564]
546 565
547[[package]] 566[[package]]
@@ -550,7 +569,7 @@ version = "0.3.2"
550source = "registry+https://github.com/rust-lang/crates.io-index" 569source = "registry+https://github.com/rust-lang/crates.io-index"
551dependencies = [ 570dependencies = [
552 "jemalloc-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 571 "jemalloc-sys 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
553 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 572 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
554] 573]
555 574
556[[package]] 575[[package]]
@@ -589,7 +608,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
589 608
590[[package]] 609[[package]]
591name = "libc" 610name = "libc"
592version = "0.2.62" 611version = "0.2.65"
593source = "registry+https://github.com/rust-lang/crates.io-index" 612source = "registry+https://github.com/rust-lang/crates.io-index"
594 613
595[[package]] 614[[package]]
@@ -621,7 +640,7 @@ dependencies = [
621 "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 640 "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
622 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 641 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
623 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", 642 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)",
624 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 643 "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)",
625] 644]
626 645
627[[package]] 646[[package]]
@@ -629,9 +648,9 @@ name = "lsp-types"
629version = "0.61.0" 648version = "0.61.0"
630source = "registry+https://github.com/rust-lang/crates.io-index" 649source = "registry+https://github.com/rust-lang/crates.io-index"
631dependencies = [ 650dependencies = [
632 "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 651 "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
633 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", 652 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)",
634 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 653 "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)",
635 "serde_repr 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", 654 "serde_repr 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
636 "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 655 "url 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
637] 656]
@@ -661,9 +680,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
661dependencies = [ 680dependencies = [
662 "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 681 "fuchsia-zircon 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
663 "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 682 "fuchsia-zircon-sys 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
664 "iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", 683 "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)",
665 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 684 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
666 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 685 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
667 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 686 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
668 "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 687 "miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
669 "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", 688 "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -699,27 +718,27 @@ version = "0.2.33"
699source = "registry+https://github.com/rust-lang/crates.io-index" 718source = "registry+https://github.com/rust-lang/crates.io-index"
700dependencies = [ 719dependencies = [
701 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 720 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
702 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 721 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
703 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 722 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
704] 723]
705 724
706[[package]] 725[[package]]
707name = "nodrop" 726name = "nodrop"
708version = "0.1.13" 727version = "0.1.14"
709source = "registry+https://github.com/rust-lang/crates.io-index" 728source = "registry+https://github.com/rust-lang/crates.io-index"
710 729
711[[package]] 730[[package]]
712name = "notify" 731name = "notify"
713version = "4.0.13" 732version = "4.0.14"
714source = "registry+https://github.com/rust-lang/crates.io-index" 733source = "registry+https://github.com/rust-lang/crates.io-index"
715dependencies = [ 734dependencies = [
716 "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 735 "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
717 "filetime 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", 736 "filetime 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)",
718 "fsevent 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 737 "fsevent 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
719 "fsevent-sys 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 738 "fsevent-sys 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
720 "inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", 739 "inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)",
721 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 740 "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
722 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 741 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
723 "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)", 742 "mio 0.6.19 (registry+https://github.com/rust-lang/crates.io-index)",
724 "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 743 "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
725 "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", 744 "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -731,7 +750,7 @@ name = "num-integer"
731version = "0.1.41" 750version = "0.1.41"
732source = "registry+https://github.com/rust-lang/crates.io-index" 751source = "registry+https://github.com/rust-lang/crates.io-index"
733dependencies = [ 752dependencies = [
734 "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 753 "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
735 "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 754 "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
736] 755]
737 756
@@ -740,7 +759,7 @@ name = "num-traits"
740version = "0.2.8" 759version = "0.2.8"
741source = "registry+https://github.com/rust-lang/crates.io-index" 760source = "registry+https://github.com/rust-lang/crates.io-index"
742dependencies = [ 761dependencies = [
743 "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 762 "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
744] 763]
745 764
746[[package]] 765[[package]]
@@ -748,16 +767,13 @@ name = "num_cpus"
748version = "1.10.1" 767version = "1.10.1"
749source = "registry+https://github.com/rust-lang/crates.io-index" 768source = "registry+https://github.com/rust-lang/crates.io-index"
750dependencies = [ 769dependencies = [
751 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 770 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
752] 771]
753 772
754[[package]] 773[[package]]
755name = "number_prefix" 774name = "number_prefix"
756version = "0.2.8" 775version = "0.3.0"
757source = "registry+https://github.com/rust-lang/crates.io-index" 776source = "registry+https://github.com/rust-lang/crates.io-index"
758dependencies = [
759 "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
760]
761 777
762[[package]] 778[[package]]
763name = "once_cell" 779name = "once_cell"
@@ -786,7 +802,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
786dependencies = [ 802dependencies = [
787 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 803 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
788 "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 804 "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
789 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 805 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
790 "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 806 "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
791 "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", 807 "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
792 "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 808 "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -799,7 +815,7 @@ version = "0.1.6"
799source = "registry+https://github.com/rust-lang/crates.io-index" 815source = "registry+https://github.com/rust-lang/crates.io-index"
800dependencies = [ 816dependencies = [
801 "paste-impl 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 817 "paste-impl 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)",
802 "proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", 818 "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)",
803] 819]
804 820
805[[package]] 821[[package]]
@@ -807,8 +823,8 @@ name = "paste-impl"
807version = "0.1.6" 823version = "0.1.6"
808source = "registry+https://github.com/rust-lang/crates.io-index" 824source = "registry+https://github.com/rust-lang/crates.io-index"
809dependencies = [ 825dependencies = [
810 "proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)", 826 "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)",
811 "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 827 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
812 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 828 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
813 "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 829 "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
814] 830]
@@ -834,22 +850,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
834 850
835[[package]] 851[[package]]
836name = "ppv-lite86" 852name = "ppv-lite86"
837version = "0.2.5" 853version = "0.2.6"
838source = "registry+https://github.com/rust-lang/crates.io-index" 854source = "registry+https://github.com/rust-lang/crates.io-index"
839 855
840[[package]] 856[[package]]
841name = "proc-macro-hack" 857name = "proc-macro-hack"
842version = "0.5.9" 858version = "0.5.11"
843source = "registry+https://github.com/rust-lang/crates.io-index" 859source = "registry+https://github.com/rust-lang/crates.io-index"
844dependencies = [ 860dependencies = [
845 "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 861 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
846 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 862 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
847 "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 863 "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
848] 864]
849 865
850[[package]] 866[[package]]
851name = "proc-macro2" 867name = "proc-macro2"
852version = "1.0.5" 868version = "1.0.6"
853source = "registry+https://github.com/rust-lang/crates.io-index" 869source = "registry+https://github.com/rust-lang/crates.io-index"
854dependencies = [ 870dependencies = [
855 "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 871 "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -861,7 +877,7 @@ version = "0.9.4"
861source = "registry+https://github.com/rust-lang/crates.io-index" 877source = "registry+https://github.com/rust-lang/crates.io-index"
862dependencies = [ 878dependencies = [
863 "bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 879 "bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
864 "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 880 "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
865 "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 881 "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
866 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 882 "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
867 "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", 883 "num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -873,6 +889,14 @@ dependencies = [
873] 889]
874 890
875[[package]] 891[[package]]
892name = "psm"
893version = "0.1.5"
894source = "registry+https://github.com/rust-lang/crates.io-index"
895dependencies = [
896 "cc 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
897]
898
899[[package]]
876name = "quick-error" 900name = "quick-error"
877version = "1.2.2" 901version = "1.2.2"
878source = "registry+https://github.com/rust-lang/crates.io-index" 902source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -882,7 +906,7 @@ name = "quote"
882version = "1.0.2" 906version = "1.0.2"
883source = "registry+https://github.com/rust-lang/crates.io-index" 907source = "registry+https://github.com/rust-lang/crates.io-index"
884dependencies = [ 908dependencies = [
885 "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 909 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
886] 910]
887 911
888[[package]] 912[[package]]
@@ -893,17 +917,15 @@ version = "0.1.0"
893name = "ra_assists" 917name = "ra_assists"
894version = "0.1.0" 918version = "0.1.0"
895dependencies = [ 919dependencies = [
896 "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)",
897 "format-buf 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 920 "format-buf 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
898 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 921 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
899 "join_to_string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 922 "join_to_string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
900 "once_cell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
901 "ra_db 0.1.0", 923 "ra_db 0.1.0",
902 "ra_fmt 0.1.0", 924 "ra_fmt 0.1.0",
903 "ra_hir 0.1.0", 925 "ra_hir 0.1.0",
904 "ra_syntax 0.1.0", 926 "ra_syntax 0.1.0",
905 "ra_text_edit 0.1.0", 927 "ra_text_edit 0.1.0",
906 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 928 "rustc_lexer 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
907 "test_utils 0.1.0", 929 "test_utils 0.1.0",
908] 930]
909 931
@@ -917,7 +939,7 @@ dependencies = [
917 "ra_hir 0.1.0", 939 "ra_hir 0.1.0",
918 "ra_ide_api 0.1.0", 940 "ra_ide_api 0.1.0",
919 "ra_project_model 0.1.0", 941 "ra_project_model 0.1.0",
920 "ra_vfs 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 942 "ra_vfs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
921 "ra_vfs_glob 0.1.0", 943 "ra_vfs_glob 0.1.0",
922 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 944 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
923] 945]
@@ -937,7 +959,7 @@ name = "ra_cli"
937version = "0.1.0" 959version = "0.1.0"
938dependencies = [ 960dependencies = [
939 "flexi_logger 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)", 961 "flexi_logger 0.14.4 (registry+https://github.com/rust-lang/crates.io-index)",
940 "indicatif 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 962 "indicatif 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)",
941 "pico-args 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", 963 "pico-args 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
942 "ra_batch 0.1.0", 964 "ra_batch 0.1.0",
943 "ra_db 0.1.0", 965 "ra_db 0.1.0",
@@ -954,9 +976,9 @@ dependencies = [
954 "ra_cfg 0.1.0", 976 "ra_cfg 0.1.0",
955 "ra_prof 0.1.0", 977 "ra_prof 0.1.0",
956 "ra_syntax 0.1.0", 978 "ra_syntax 0.1.0",
957 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 979 "relative-path 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
958 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 980 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
959 "salsa 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", 981 "salsa 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)",
960] 982]
961 983
962[[package]] 984[[package]]
@@ -971,11 +993,11 @@ dependencies = [
971name = "ra_hir" 993name = "ra_hir"
972version = "0.1.0" 994version = "0.1.0"
973dependencies = [ 995dependencies = [
974 "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 996 "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
975 "chalk-ir 0.1.0 (git+https://github.com/rust-lang/chalk.git)", 997 "chalk-ir 0.1.0 (git+https://github.com/rust-lang/chalk.git)",
976 "chalk-rust-ir 0.1.0 (git+https://github.com/rust-lang/chalk.git)", 998 "chalk-rust-ir 0.1.0 (git+https://github.com/rust-lang/chalk.git)",
977 "chalk-solve 0.1.0 (git+https://github.com/rust-lang/chalk.git)", 999 "chalk-solve 0.1.0 (git+https://github.com/rust-lang/chalk.git)",
978 "ena 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)", 1000 "ena 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)",
979 "insta 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", 1001 "insta 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
980 "lalrpop-intern 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)", 1002 "lalrpop-intern 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)",
981 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1003 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -988,7 +1010,7 @@ dependencies = [
988 "ra_prof 0.1.0", 1010 "ra_prof 0.1.0",
989 "ra_syntax 0.1.0", 1011 "ra_syntax 0.1.0",
990 "ra_tt 0.1.0", 1012 "ra_tt 0.1.0",
991 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1013 "relative-path 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
992 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1014 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
993 "test_utils 0.1.0", 1015 "test_utils 0.1.0",
994] 1016]
@@ -1003,6 +1025,7 @@ dependencies = [
1003 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1025 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
1004 "join_to_string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", 1026 "join_to_string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)",
1005 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1027 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
1028 "once_cell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
1006 "proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)", 1029 "proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)",
1007 "ra_assists 0.1.0", 1030 "ra_assists 0.1.0",
1008 "ra_cfg 0.1.0", 1031 "ra_cfg 0.1.0",
@@ -1014,7 +1037,7 @@ dependencies = [
1014 "ra_text_edit 0.1.0", 1037 "ra_text_edit 0.1.0",
1015 "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1038 "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
1016 "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1039 "rayon 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
1017 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1040 "relative-path 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
1018 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1041 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
1019 "superslice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1042 "superslice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
1020 "test_utils 0.1.0", 1043 "test_utils 0.1.0",
@@ -1032,19 +1055,17 @@ dependencies = [
1032 "lsp-server 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1055 "lsp-server 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
1033 "lsp-types 0.61.0 (registry+https://github.com/rust-lang/crates.io-index)", 1056 "lsp-types 0.61.0 (registry+https://github.com/rust-lang/crates.io-index)",
1034 "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 1057 "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
1035 "ra_cfg 0.1.0",
1036 "ra_db 0.1.0",
1037 "ra_ide_api 0.1.0", 1058 "ra_ide_api 0.1.0",
1038 "ra_prof 0.1.0", 1059 "ra_prof 0.1.0",
1039 "ra_project_model 0.1.0", 1060 "ra_project_model 0.1.0",
1040 "ra_syntax 0.1.0", 1061 "ra_syntax 0.1.0",
1041 "ra_text_edit 0.1.0", 1062 "ra_text_edit 0.1.0",
1042 "ra_vfs 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1063 "ra_vfs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
1043 "ra_vfs_glob 0.1.0", 1064 "ra_vfs_glob 0.1.0",
1044 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1065 "relative-path 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
1045 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1066 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
1046 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", 1067 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)",
1047 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 1068 "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)",
1048 "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1069 "tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1049 "test_utils 0.1.0", 1070 "test_utils 0.1.0",
1050 "threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)", 1071 "threadpool 1.7.1 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1054,7 +1075,6 @@ dependencies = [
1054name = "ra_mbe" 1075name = "ra_mbe"
1055version = "0.1.0" 1076version = "0.1.0"
1056dependencies = [ 1077dependencies = [
1057 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
1058 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1078 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
1059 "ra_parser 0.1.0", 1079 "ra_parser 0.1.0",
1060 "ra_syntax 0.1.0", 1080 "ra_syntax 0.1.0",
@@ -1075,7 +1095,7 @@ dependencies = [
1075name = "ra_prof" 1095name = "ra_prof"
1076version = "0.1.0" 1096version = "0.1.0"
1077dependencies = [ 1097dependencies = [
1078 "backtrace 0.3.38 (registry+https://github.com/rust-lang/crates.io-index)", 1098 "backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)",
1079 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1099 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
1080 "jemalloc-ctl 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", 1100 "jemalloc-ctl 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
1081 "jemallocator 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)", 1101 "jemallocator 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1086,21 +1106,21 @@ dependencies = [
1086name = "ra_project_model" 1106name = "ra_project_model"
1087version = "0.1.0" 1107version = "0.1.0"
1088dependencies = [ 1108dependencies = [
1089 "cargo_metadata 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)", 1109 "cargo_metadata 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
1090 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1110 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
1091 "ra_arena 0.1.0", 1111 "ra_arena 0.1.0",
1092 "ra_cfg 0.1.0", 1112 "ra_cfg 0.1.0",
1093 "ra_db 0.1.0", 1113 "ra_db 0.1.0",
1094 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1114 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
1095 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", 1115 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)",
1096 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 1116 "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)",
1097] 1117]
1098 1118
1099[[package]] 1119[[package]]
1100name = "ra_syntax" 1120name = "ra_syntax"
1101version = "0.1.0" 1121version = "0.1.0"
1102dependencies = [ 1122dependencies = [
1103 "arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", 1123 "arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
1104 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", 1124 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
1105 "once_cell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1125 "once_cell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
1106 "ra_parser 0.1.0", 1126 "ra_parser 0.1.0",
@@ -1108,7 +1128,7 @@ dependencies = [
1108 "rowan 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)", 1128 "rowan 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)",
1109 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1129 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
1110 "rustc_lexer 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1130 "rustc_lexer 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1111 "smol_str 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 1131 "smol_str 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
1112 "test_utils 0.1.0", 1132 "test_utils 0.1.0",
1113 "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", 1133 "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
1114] 1134]
@@ -1123,36 +1143,23 @@ dependencies = [
1123] 1143]
1124 1144
1125[[package]] 1145[[package]]
1126name = "ra_tools"
1127version = "0.1.0"
1128dependencies = [
1129 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
1130 "pico-args 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
1131 "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
1132 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
1133 "ron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
1134 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)",
1135 "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
1136]
1137
1138[[package]]
1139name = "ra_tt" 1146name = "ra_tt"
1140version = "0.1.0" 1147version = "0.1.0"
1141dependencies = [ 1148dependencies = [
1142 "smol_str 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 1149 "smol_str 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
1143] 1150]
1144 1151
1145[[package]] 1152[[package]]
1146name = "ra_vfs" 1153name = "ra_vfs"
1147version = "0.4.0" 1154version = "0.5.0"
1148source = "registry+https://github.com/rust-lang/crates.io-index" 1155source = "registry+https://github.com/rust-lang/crates.io-index"
1149dependencies = [ 1156dependencies = [
1150 "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)", 1157 "crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)",
1151 "jod-thread 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1158 "jod-thread 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
1152 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1159 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
1153 "notify 4.0.13 (registry+https://github.com/rust-lang/crates.io-index)", 1160 "notify 4.0.14 (registry+https://github.com/rust-lang/crates.io-index)",
1154 "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 1161 "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
1155 "relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1162 "relative-path 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
1156 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1163 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
1157 "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)", 1164 "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
1158] 1165]
@@ -1162,7 +1169,7 @@ name = "ra_vfs_glob"
1162version = "0.1.0" 1169version = "0.1.0"
1163dependencies = [ 1170dependencies = [
1164 "globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1171 "globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
1165 "ra_vfs 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1172 "ra_vfs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
1166] 1173]
1167 1174
1168[[package]] 1175[[package]]
@@ -1170,8 +1177,8 @@ name = "rand"
1170version = "0.6.5" 1177version = "0.6.5"
1171source = "registry+https://github.com/rust-lang/crates.io-index" 1178source = "registry+https://github.com/rust-lang/crates.io-index"
1172dependencies = [ 1179dependencies = [
1173 "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1180 "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
1174 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1181 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
1175 "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1182 "rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1176 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1183 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
1177 "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", 1184 "rand_hc 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1189,7 +1196,7 @@ version = "0.7.2"
1189source = "registry+https://github.com/rust-lang/crates.io-index" 1196source = "registry+https://github.com/rust-lang/crates.io-index"
1190dependencies = [ 1197dependencies = [
1191 "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)", 1198 "getrandom 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
1192 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1199 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
1193 "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", 1200 "rand_chacha 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
1194 "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 1201 "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
1195 "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1202 "rand_hc 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1201,7 +1208,7 @@ name = "rand_chacha"
1201version = "0.1.1" 1208version = "0.1.1"
1202source = "registry+https://github.com/rust-lang/crates.io-index" 1209source = "registry+https://github.com/rust-lang/crates.io-index"
1203dependencies = [ 1210dependencies = [
1204 "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1211 "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
1205 "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1212 "rand_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
1206] 1213]
1207 1214
@@ -1210,7 +1217,7 @@ name = "rand_chacha"
1210version = "0.2.1" 1217version = "0.2.1"
1211source = "registry+https://github.com/rust-lang/crates.io-index" 1218source = "registry+https://github.com/rust-lang/crates.io-index"
1212dependencies = [ 1219dependencies = [
1213 "c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", 1220 "c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)",
1214 "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 1221 "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
1215] 1222]
1216 1223
@@ -1264,7 +1271,7 @@ name = "rand_jitter"
1264version = "0.1.4" 1271version = "0.1.4"
1265source = "registry+https://github.com/rust-lang/crates.io-index" 1272source = "registry+https://github.com/rust-lang/crates.io-index"
1266dependencies = [ 1273dependencies = [
1267 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1274 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
1268 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1275 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
1269 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1276 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
1270] 1277]
@@ -1276,7 +1283,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1276dependencies = [ 1283dependencies = [
1277 "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", 1284 "cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)",
1278 "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", 1285 "fuchsia-cprng 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
1279 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1286 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
1280 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1287 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
1281 "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", 1288 "rdrand 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)",
1282 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1289 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1287,7 +1294,7 @@ name = "rand_pcg"
1287version = "0.1.2" 1294version = "0.1.2"
1288source = "registry+https://github.com/rust-lang/crates.io-index" 1295source = "registry+https://github.com/rust-lang/crates.io-index"
1289dependencies = [ 1296dependencies = [
1290 "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1297 "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
1291 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", 1298 "rand_core 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
1292] 1299]
1293 1300
@@ -1296,7 +1303,7 @@ name = "rand_pcg"
1296version = "0.2.0" 1303version = "0.2.0"
1297source = "registry+https://github.com/rust-lang/crates.io-index" 1304source = "registry+https://github.com/rust-lang/crates.io-index"
1298dependencies = [ 1305dependencies = [
1299 "autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", 1306 "autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
1300 "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", 1307 "rand_core 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
1301] 1308]
1302 1309
@@ -1361,7 +1368,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1361 1368
1362[[package]] 1369[[package]]
1363name = "relative-path" 1370name = "relative-path"
1364version = "0.4.0" 1371version = "1.0.0"
1365source = "registry+https://github.com/rust-lang/crates.io-index" 1372source = "registry+https://github.com/rust-lang/crates.io-index"
1366 1373
1367[[package]] 1374[[package]]
@@ -1378,7 +1385,7 @@ version = "0.5.1"
1378source = "registry+https://github.com/rust-lang/crates.io-index" 1385source = "registry+https://github.com/rust-lang/crates.io-index"
1379dependencies = [ 1386dependencies = [
1380 "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", 1387 "base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)",
1381 "bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1388 "bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
1382 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", 1389 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)",
1383] 1390]
1384 1391
@@ -1388,7 +1395,7 @@ version = "0.6.2"
1388source = "registry+https://github.com/rust-lang/crates.io-index" 1395source = "registry+https://github.com/rust-lang/crates.io-index"
1389dependencies = [ 1396dependencies = [
1390 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1397 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
1391 "smol_str 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", 1398 "smol_str 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)",
1392 "text_unit 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1399 "text_unit 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
1393] 1400]
1394 1401
@@ -1423,32 +1430,32 @@ dependencies = [
1423 1430
1424[[package]] 1431[[package]]
1425name = "ryu" 1432name = "ryu"
1426version = "1.0.0" 1433version = "1.0.2"
1427source = "registry+https://github.com/rust-lang/crates.io-index" 1434source = "registry+https://github.com/rust-lang/crates.io-index"
1428 1435
1429[[package]] 1436[[package]]
1430name = "salsa" 1437name = "salsa"
1431version = "0.13.1" 1438version = "0.13.2"
1432source = "registry+https://github.com/rust-lang/crates.io-index" 1439source = "registry+https://github.com/rust-lang/crates.io-index"
1433dependencies = [ 1440dependencies = [
1434 "crossbeam 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1441 "crossbeam 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
1435 "derive-new 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)", 1442 "derive-new 0.5.8 (registry+https://github.com/rust-lang/crates.io-index)",
1436 "indexmap 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1443 "indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
1437 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", 1444 "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
1438 "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", 1445 "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
1439 "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1446 "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
1440 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", 1447 "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)",
1441 "salsa-macros 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", 1448 "salsa-macros 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)",
1442 "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)", 1449 "smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)",
1443] 1450]
1444 1451
1445[[package]] 1452[[package]]
1446name = "salsa-macros" 1453name = "salsa-macros"
1447version = "0.13.1" 1454version = "0.13.2"
1448source = "registry+https://github.com/rust-lang/crates.io-index" 1455source = "registry+https://github.com/rust-lang/crates.io-index"
1449dependencies = [ 1456dependencies = [
1450 "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", 1457 "heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
1451 "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1458 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
1452 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1459 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
1453 "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1460 "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
1454] 1461]
@@ -1493,18 +1500,18 @@ name = "serde_derive"
1493version = "1.0.101" 1500version = "1.0.101"
1494source = "registry+https://github.com/rust-lang/crates.io-index" 1501source = "registry+https://github.com/rust-lang/crates.io-index"
1495dependencies = [ 1502dependencies = [
1496 "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1503 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
1497 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1504 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
1498 "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1505 "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
1499] 1506]
1500 1507
1501[[package]] 1508[[package]]
1502name = "serde_json" 1509name = "serde_json"
1503version = "1.0.40" 1510version = "1.0.41"
1504source = "registry+https://github.com/rust-lang/crates.io-index" 1511source = "registry+https://github.com/rust-lang/crates.io-index"
1505dependencies = [ 1512dependencies = [
1506 "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1513 "itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
1507 "ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1514 "ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
1508 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", 1515 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)",
1509] 1516]
1510 1517
@@ -1513,14 +1520,14 @@ name = "serde_repr"
1513version = "0.1.5" 1520version = "0.1.5"
1514source = "registry+https://github.com/rust-lang/crates.io-index" 1521source = "registry+https://github.com/rust-lang/crates.io-index"
1515dependencies = [ 1522dependencies = [
1516 "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1523 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
1517 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1524 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
1518 "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1525 "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)",
1519] 1526]
1520 1527
1521[[package]] 1528[[package]]
1522name = "serde_yaml" 1529name = "serde_yaml"
1523version = "0.8.9" 1530version = "0.8.11"
1524source = "registry+https://github.com/rust-lang/crates.io-index" 1531source = "registry+https://github.com/rust-lang/crates.io-index"
1525dependencies = [ 1532dependencies = [
1526 "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", 1533 "dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1541,7 +1548,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1541 1548
1542[[package]] 1549[[package]]
1543name = "smol_str" 1550name = "smol_str"
1544version = "0.1.13" 1551version = "0.1.15"
1545source = "registry+https://github.com/rust-lang/crates.io-index" 1552source = "registry+https://github.com/rust-lang/crates.io-index"
1546dependencies = [ 1553dependencies = [
1547 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)", 1554 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1549,12 +1556,13 @@ dependencies = [
1549 1556
1550[[package]] 1557[[package]]
1551name = "stacker" 1558name = "stacker"
1552version = "0.1.5" 1559version = "0.1.6"
1553source = "registry+https://github.com/rust-lang/crates.io-index" 1560source = "registry+https://github.com/rust-lang/crates.io-index"
1554dependencies = [ 1561dependencies = [
1555 "cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)", 1562 "cc 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)",
1556 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1563 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
1557 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1564 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
1565 "psm 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)",
1558 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1566 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
1559] 1567]
1560 1568
@@ -1568,7 +1576,7 @@ name = "syn"
1568version = "1.0.5" 1576version = "1.0.5"
1569source = "registry+https://github.com/rust-lang/crates.io-index" 1577source = "registry+https://github.com/rust-lang/crates.io-index"
1570dependencies = [ 1578dependencies = [
1571 "proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", 1579 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
1572 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", 1580 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
1573 "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", 1581 "unicode-xid 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
1574] 1582]
@@ -1579,7 +1587,7 @@ version = "3.1.0"
1579source = "registry+https://github.com/rust-lang/crates.io-index" 1587source = "registry+https://github.com/rust-lang/crates.io-index"
1580dependencies = [ 1588dependencies = [
1581 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", 1589 "cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)",
1582 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1590 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
1583 "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)", 1591 "rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)",
1584 "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 1592 "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
1585 "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", 1593 "remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1591,7 +1599,7 @@ name = "termios"
1591version = "0.3.1" 1599version = "0.3.1"
1592source = "registry+https://github.com/rust-lang/crates.io-index" 1600source = "registry+https://github.com/rust-lang/crates.io-index"
1593dependencies = [ 1601dependencies = [
1594 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1602 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
1595] 1603]
1596 1604
1597[[package]] 1605[[package]]
@@ -1599,7 +1607,7 @@ name = "test_utils"
1599version = "0.1.0" 1607version = "0.1.0"
1600dependencies = [ 1608dependencies = [
1601 "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", 1609 "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)",
1602 "serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)", 1610 "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)",
1603 "text_unit 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", 1611 "text_unit 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)",
1604] 1612]
1605 1613
@@ -1629,7 +1637,7 @@ name = "time"
1629version = "0.1.42" 1637version = "0.1.42"
1630source = "registry+https://github.com/rust-lang/crates.io-index" 1638source = "registry+https://github.com/rust-lang/crates.io-index"
1631dependencies = [ 1639dependencies = [
1632 "libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)", 1640 "libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)",
1633 "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)", 1641 "redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)",
1634 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", 1642 "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)",
1635] 1643]
@@ -1714,13 +1722,6 @@ version = "0.7.0"
1714source = "registry+https://github.com/rust-lang/crates.io-index" 1722source = "registry+https://github.com/rust-lang/crates.io-index"
1715 1723
1716[[package]] 1724[[package]]
1717name = "website-gen"
1718version = "0.0.0"
1719dependencies = [
1720 "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
1721]
1722
1723[[package]]
1724name = "winapi" 1725name = "winapi"
1725version = "0.2.8" 1726version = "0.2.8"
1726source = "registry+https://github.com/rust-lang/crates.io-index" 1727source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1767,6 +1768,19 @@ dependencies = [
1767] 1768]
1768 1769
1769[[package]] 1770[[package]]
1771name = "xtask"
1772version = "0.1.0"
1773dependencies = [
1774 "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)",
1775 "pico-args 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
1776 "proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
1777 "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
1778 "ron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)",
1779 "serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)",
1780 "walkdir 2.2.9 (registry+https://github.com/rust-lang/crates.io-index)",
1781]
1782
1783[[package]]
1770name = "yaml-rust" 1784name = "yaml-rust"
1771version = "0.4.3" 1785version = "0.4.3"
1772source = "registry+https://github.com/rust-lang/crates.io-index" 1786source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1781,20 +1795,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1781 1795
1782[metadata] 1796[metadata]
1783"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d" 1797"checksum aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)" = "58fb5e95d83b38284460a5fda7d6470aa0b8844d283a0b614b8535e880800d2d"
1784"checksum arrayvec 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)" = "b8d73f9beda665eaa98ab9e4f7442bd4e7de6652587de55b2525e52e29c1b0ba" 1798"checksum arrayvec 0.4.12 (registry+https://github.com/rust-lang/crates.io-index)" = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9"
1799"checksum arrayvec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cff77d8686867eceff3105329d4698d96c2391c176d5d03adc90c7389162b5b8"
1785"checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90" 1800"checksum atty 0.2.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1803c647a3ec87095e7ae7acfca019e98de5ec9a7d01343f611cf3152ed71a90"
1786"checksum autocfg 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "b671c8fb71b457dd4ae18c4ba1e59aa81793daacc361d82fcd410cef0d491875" 1801"checksum autocfg 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
1787"checksum backtrace 0.3.38 (registry+https://github.com/rust-lang/crates.io-index)" = "690a62be8920ccf773ee00ef0968649b0e724cda8bd5b12286302b4ae955fdf5" 1802"checksum backtrace 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)" = "924c76597f0d9ca25d762c25a4d369d51267536465dc5064bdf0eb073ed477ea"
1788"checksum backtrace-sys 0.1.31 (registry+https://github.com/rust-lang/crates.io-index)" = "82a830b4ef2d1124a711c71d263c5abdc710ef8e907bd508c88be475cebc422b" 1803"checksum backtrace-sys 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "5d6575f128516de27e3ce99689419835fce9643a9b215a14d2b5b685be018491"
1789"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e" 1804"checksum base64 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0b25d992356d2eb0ed82172f5248873db5560c4721f564b13cb5193bda5e668e"
1790"checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80" 1805"checksum bit-set 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e84c238982c4b1e1ee668d136c510c67a13465279c0cb367ea6baf6310620a80"
1791"checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb" 1806"checksum bit-vec 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f59bbe95d4e52a6398ec21238d31577f2b28a9d86807f06ca59d191d8440d0bb"
1792"checksum bitflags 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8a606a02debe2813760609f57a64a2ffd27d9fdf5b2f133eaca0b248dd92cdd2" 1807"checksum bitflags 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
1793"checksum bstr 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8d6c2c5b58ab920a4f5aeaaca34b4488074e8cc7596af94e6f8c6ff247c60245" 1808"checksum bstr 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8d6c2c5b58ab920a4f5aeaaca34b4488074e8cc7596af94e6f8c6ff247c60245"
1794"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5" 1809"checksum byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c3dd8985a7111efc5c80b44e23ecdd8c007de8ade3b96595387e812b957cf5"
1795"checksum c2-chacha 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7d64d04786e0f528460fc884753cf8dddcc466be308f6026f8e355c41a0e4101" 1810"checksum c2-chacha 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb"
1796"checksum cargo_metadata 0.8.2 (registry+https://github.com/rust-lang/crates.io-index)" = "700b3731fd7d357223d0000f4dbf1808401b694609035c3c411fbc0cd375c426" 1811"checksum cargo_metadata 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8d2d1617e838936c0d2323a65cc151e03ae19a7678dd24f72bccf27119b90a5d"
1797"checksum cc 1.0.45 (registry+https://github.com/rust-lang/crates.io-index)" = "4fc9a35e1f4290eb9e5fc54ba6cf40671ed2a2514c3eeb2b2a908dda2ea5a1be" 1812"checksum cc 1.0.46 (registry+https://github.com/rust-lang/crates.io-index)" = "0213d356d3c4ea2c18c40b037c3be23cd639825c18f25ee670ac7813beeef99c"
1798"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" 1813"checksum cfg-if 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
1799"checksum chalk-engine 0.9.0 (git+https://github.com/rust-lang/chalk.git)" = "<none>" 1814"checksum chalk-engine 0.9.0 (git+https://github.com/rust-lang/chalk.git)" = "<none>"
1800"checksum chalk-ir 0.1.0 (git+https://github.com/rust-lang/chalk.git)" = "<none>" 1815"checksum chalk-ir 0.1.0 (git+https://github.com/rust-lang/chalk.git)" = "<none>"
@@ -1805,6 +1820,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1805"checksum clicolors-control 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90082ee5dcdd64dc4e9e0d37fbf3ee325419e39c0092191e0393df65518f741e" 1820"checksum clicolors-control 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "90082ee5dcdd64dc4e9e0d37fbf3ee325419e39c0092191e0393df65518f741e"
1806"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 1821"checksum cloudabi 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f"
1807"checksum console 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b147390a412132d75d10dd3b7b175a69cf5fd95032f7503c7091b8831ba10242" 1822"checksum console 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b147390a412132d75d10dd3b7b175a69cf5fd95032f7503c7091b8831ba10242"
1823"checksum console 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "62828f51cfa18f8c31d3d55a43c6ce6af3f87f754cba9fbba7ff38089b9f5612"
1808"checksum crossbeam 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2d818a4990769aac0c7ff1360e233ef3a41adcb009ebb2036bf6915eb0f6b23c" 1824"checksum crossbeam 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2d818a4990769aac0c7ff1360e233ef3a41adcb009ebb2036bf6915eb0f6b23c"
1809"checksum crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa" 1825"checksum crossbeam-channel 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "c8ec7fcd21571dc78f96cc96243cab8d8f035247c3efd16c687be154c3fa9efa"
1810"checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71" 1826"checksum crossbeam-deque 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b18cd2e169ad86297e6bc0ad9aa679aee9daa4f19e8163860faf7c164e4f5a71"
@@ -1816,7 +1832,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1816"checksum drop_bomb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "69b26e475fd29098530e709294e94e661974c851aed42512793f120fed4e199f" 1832"checksum drop_bomb 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "69b26e475fd29098530e709294e94e661974c851aed42512793f120fed4e199f"
1817"checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e" 1833"checksum dtoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ea57b42383d091c85abcc2706240b94ab2a8fa1fc81c10ff23c4de06e2a90b5e"
1818"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3" 1834"checksum either 1.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "bb1f6b1ce1c140482ea30ddd3335fc0024ac7ee112895426e0a629a6c20adfe3"
1819"checksum ena 0.13.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3dc01d68e08ca384955a3aeba9217102ca1aa85b6e168639bf27739f1d749d87" 1835"checksum ena 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8944dc8fa28ce4a38f778bd46bf7d923fe73eed5a439398507246c8e017e6f36"
1820"checksum encode_unicode 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" 1836"checksum encode_unicode 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f"
1821"checksum filetime 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6bd7380b54ced79dda72ecc35cc4fbbd1da6bba54afaa37e96fd1c2a308cd469" 1837"checksum filetime 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)" = "6bd7380b54ced79dda72ecc35cc4fbbd1da6bba54afaa37e96fd1c2a308cd469"
1822"checksum fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33" 1838"checksum fixedbitset 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "86d4de0081402f5e88cdac65c8dcdcc73118c1a7a465e2a05f0da05843a8ea33"
@@ -1835,12 +1851,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1835"checksum globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "925aa2cac82d8834e2b2a4415b6f6879757fb5c0928fc445ae76461a12eed8f2" 1851"checksum globset 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "925aa2cac82d8834e2b2a4415b6f6879757fb5c0928fc445ae76461a12eed8f2"
1836"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205" 1852"checksum heck 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20564e78d53d2bb135c343b3f47714a56af2061f1c928fdb541dc7b9fdd94205"
1837"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9" 1853"checksum idna 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "02e2673c30ee86b5b96a9cb52ad15718aa1f966f5ab9ad54a8b95d5ca33120a9"
1838"checksum indexmap 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a61202fbe46c4a951e9404a720a0180bcf3212c750d735cb5c4ba4dc551299f3" 1854"checksum indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "712d7b3ea5827fcb9d4fda14bf4da5f136f0db2ae9c8f4bd4e2d1c6fde4e6db2"
1839"checksum indicatif 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2c60da1c9abea75996b70a931bba6c750730399005b61ccd853cee50ef3d0d0c" 1855"checksum indicatif 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a8d596a9576eaa1446996092642d72bfef35cf47243129b7ab883baf5faec31e"
1840"checksum inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40b54539f3910d6f84fbf9a643efd6e3aa6e4f001426c0329576128255994718" 1856"checksum inotify 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "40b54539f3910d6f84fbf9a643efd6e3aa6e4f001426c0329576128255994718"
1841"checksum inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e74a1aa87c59aeff6ef2cc2fa62d41bc43f54952f55652656b18a02fd5e356c0" 1857"checksum inotify-sys 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "e74a1aa87c59aeff6ef2cc2fa62d41bc43f54952f55652656b18a02fd5e356c0"
1842"checksum insta 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "23f83ab4ee86f38b292f0420c27fd412690a4baa9ea0ad4e3fa624bf34379b76" 1858"checksum insta 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "23f83ab4ee86f38b292f0420c27fd412690a4baa9ea0ad4e3fa624bf34379b76"
1843"checksum iovec 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dbe6e417e7d0975db6512b90796e8ce223145ac4e33c377e4a42882a0e88bb08" 1859"checksum iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e"
1844"checksum itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5b8467d9c1cebe26feb08c640139247fac215782d35371ade9a2136ed6085358" 1860"checksum itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5b8467d9c1cebe26feb08c640139247fac215782d35371ade9a2136ed6085358"
1845"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f" 1861"checksum itoa 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "501266b7edd0174f8530248f87f99c88fbe60ca4ef3dd486835b8d8d53136f7f"
1846"checksum jemalloc-ctl 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c502a5ff9dd2924f1ed32ba96e3b65735d837b4bfd978d3161b1702e66aca4b7" 1862"checksum jemalloc-ctl 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c502a5ff9dd2924f1ed32ba96e3b65735d837b4bfd978d3161b1702e66aca4b7"
@@ -1852,7 +1868,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1852"checksum lalrpop-intern 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cc4fd87be4a815fd373e02773983940f0d75fb26fde8c098e9e45f7af03154c0" 1868"checksum lalrpop-intern 0.15.1 (registry+https://github.com/rust-lang/crates.io-index)" = "cc4fd87be4a815fd373e02773983940f0d75fb26fde8c098e9e45f7af03154c0"
1853"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1869"checksum lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
1854"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f" 1870"checksum lazycell 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "b294d6fa9ee409a054354afc4352b0b9ef7ca222c69b8812cbea9e7d2bf3783f"
1855"checksum libc 0.2.62 (registry+https://github.com/rust-lang/crates.io-index)" = "34fcd2c08d2f832f376f4173a231990fa5aef4e99fb569867318a227ef4c06ba" 1871"checksum libc 0.2.65 (registry+https://github.com/rust-lang/crates.io-index)" = "1a31a0627fdf1f6a39ec0dd577e101440b7db22672c0901fe00a9a6fbb5c24e8"
1856"checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" 1872"checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83"
1857"checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc" 1873"checksum lock_api 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f8912e782533a93a167888781b836336a6ca5da6175c05944c86cf28c31104dc"
1858"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7" 1874"checksum log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)" = "14b6052be84e6b71ab17edffc2eeabf5c2c3ae1fdb464aae35ac50c67a44e1f7"
@@ -1865,12 +1881,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1865"checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40" 1881"checksum mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "46e73a04c2fa6250b8d802134d56d554a9ec2922bf977777c805ea5def61ce40"
1866"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919" 1882"checksum miow 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f2f3b1cf331de6896aabf6e9d55dca90356cc9960cca7eaaf408a355ae919"
1867"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88" 1883"checksum net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)" = "42550d9fb7b6684a6d404d9fa7250c2eb2646df731d1c06afc06dcee9e1bcf88"
1868"checksum nodrop 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "2f9667ddcc6cc8a43afc9b7917599d7216aa09c463919ea32c59ed6cac8bc945" 1884"checksum nodrop 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb"
1869"checksum notify 4.0.13 (registry+https://github.com/rust-lang/crates.io-index)" = "1191efa2b8fe041decb55c238a125b7a1aeb6fad7a525133a02be5ec949ff3cb" 1885"checksum notify 4.0.14 (registry+https://github.com/rust-lang/crates.io-index)" = "199628fc33b21bc767baa057490b00b382ecbae030803a7b36292422d15b778b"
1870"checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09" 1886"checksum num-integer 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)" = "b85e541ef8255f6cf42bbfe4ef361305c6c135d10919ecc26126c4e5ae94bc09"
1871"checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32" 1887"checksum num-traits 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "6ba9a427cfca2be13aa6f6403b0b7e7368fe982bfa16fccc450ce74c46cd9b32"
1872"checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273" 1888"checksum num_cpus 1.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "bcef43580c035376c0705c42792c294b66974abbfd2789b511784023f71f3273"
1873"checksum number_prefix 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "dbf9993e59c894e3c08aa1c2712914e9e6bf1fcbfc6bef283e2183df345a4fee" 1889"checksum number_prefix 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "17b02fc0ff9a9e4b35b3342880f48e896ebf69f2967921fe8646bf5b7125956a"
1874"checksum once_cell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "891f486f630e5c5a4916c7e16c4b24a53e78c860b646e9f8e005e4f16847bfed" 1890"checksum once_cell 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "891f486f630e5c5a4916c7e16c4b24a53e78c860b646e9f8e005e4f16847bfed"
1875"checksum ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063" 1891"checksum ordermap 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a86ed3f5f244b372d6b1a00b72ef7f8876d0bc6a78a4c9985c53614041512063"
1876"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" 1892"checksum parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252"
@@ -1880,13 +1896,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1880"checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" 1896"checksum percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e"
1881"checksum petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f" 1897"checksum petgraph 0.4.13 (registry+https://github.com/rust-lang/crates.io-index)" = "9c3659d1ee90221741f65dd128d9998311b0e40c5d3c23a62445938214abce4f"
1882"checksum pico-args 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "22e32b0f3771287ebb436130477eabf0f11f934ed036099ad548bc885e708667" 1898"checksum pico-args 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "22e32b0f3771287ebb436130477eabf0f11f934ed036099ad548bc885e708667"
1883"checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" 1899"checksum ppv-lite86 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "74490b50b9fbe561ac330df47c08f3f33073d2d00c150f719147d7c54522fa1b"
1884"checksum proc-macro-hack 0.5.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e688f31d92ffd7c1ddc57a1b4e6d773c0f2a14ee437a4b0a4f5a69c80eb221c8" 1900"checksum proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5"
1885"checksum proc-macro2 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "90cf5f418035b98e655e9cdb225047638296b862b42411c4e45bb88d700f7fc0" 1901"checksum proc-macro2 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9c9e470a8dc4aeae2dee2f335e8f533e2d4b347e1434e5671afc49b054592f27"
1886"checksum proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cf147e022eacf0c8a054ab864914a7602618adba841d800a9a9868a5237a529f" 1902"checksum proptest 0.9.4 (registry+https://github.com/rust-lang/crates.io-index)" = "cf147e022eacf0c8a054ab864914a7602618adba841d800a9a9868a5237a529f"
1903"checksum psm 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "54639efee26275dfadc49644039c31c73673edde0ef2815acf25a8db526ee193"
1887"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0" 1904"checksum quick-error 1.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "9274b940887ce9addde99c4eee6b5c44cc494b182b97e73dc8ffdcb3397fd3f0"
1888"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe" 1905"checksum quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "053a8c8bcc71fcce321828dc897a98ab9760bef03a4fc36693c231e5b3216cfe"
1889"checksum ra_vfs 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fdf6a0926414eb0c00866eb9274894182302f879cd06b5459c1d8ee7f1234aed" 1906"checksum ra_vfs 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fc8f508bc7a9871b81b6ee75e15d0bbc9f81a96698364a090a8d10b0f8b970b7"
1890"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca" 1907"checksum rand 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6d71dacdc3c88c1fde3885a3be3fbab9f35724e6ce99467f7d9c5026132184ca"
1891"checksum rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3ae1b169243eaf61759b8475a998f0a385e42042370f3a7dbaf35246eacc8412" 1908"checksum rand 0.7.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3ae1b169243eaf61759b8475a998f0a385e42042370f3a7dbaf35246eacc8412"
1892"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef" 1909"checksum rand_chacha 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "556d3a1ca6600bfcbab7c7c91ccb085ac7fbbcd70e008a98742e7847f4f7bcef"
@@ -1908,7 +1925,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1908"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84" 1925"checksum redox_syscall 0.1.56 (registry+https://github.com/rust-lang/crates.io-index)" = "2439c63f3f6139d1b57529d16bc3b8bb855230c8efcc5d3a896c8bea7c3b1e84"
1909"checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd" 1926"checksum regex 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dc220bd33bdce8f093101afe22a037b8eb0e5af33592e6a9caafff0d4cb81cbd"
1910"checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716" 1927"checksum regex-syntax 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)" = "11a7e20d1cce64ef2fed88b66d347f88bd9babb82845b2b858f3edbf59a4f716"
1911"checksum relative-path 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0e7790c7f1cc73d831d28dc5a7deb316a006e7848e6a7f467cdb10a0a9e0fb1c" 1928"checksum relative-path 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "bedde000f40f2921ce439ea165c9c53fd629bfa115140c72e22aceacb4a21954"
1912"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e" 1929"checksum remove_dir_all 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "4a83fa3702a688b9359eccba92d153ac33fd2e8462f9e0e3fdf155239ea7792e"
1913"checksum ron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2ece421e0c4129b90e4a35b6f625e472e96c552136f5093a2f4fa2bbb75a62d5" 1930"checksum ron 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2ece421e0c4129b90e4a35b6f625e472e96c552136f5093a2f4fa2bbb75a62d5"
1914"checksum rowan 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dc2b79612dedc9004083a61448eb669d336d56690aab29fbd7249e8c8ab41d8c" 1931"checksum rowan 0.6.2 (registry+https://github.com/rust-lang/crates.io-index)" = "dc2b79612dedc9004083a61448eb669d336d56690aab29fbd7249e8c8ab41d8c"
@@ -1916,22 +1933,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
1916"checksum rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7540fc8b0c49f096ee9c961cda096467dce8084bec6bdca2fc83895fd9b28cb8" 1933"checksum rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7540fc8b0c49f096ee9c961cda096467dce8084bec6bdca2fc83895fd9b28cb8"
1917"checksum rustc_lexer 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c86aae0c77166108c01305ee1a36a1e77289d7dc6ca0a3cd91ff4992de2d16a5" 1934"checksum rustc_lexer 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c86aae0c77166108c01305ee1a36a1e77289d7dc6ca0a3cd91ff4992de2d16a5"
1918"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 1935"checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
1919"checksum ryu 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "c92464b447c0ee8c4fb3824ecc8383b81717b9f1e74ba2e72540aef7b9f82997" 1936"checksum ryu 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8"
1920"checksum salsa 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "df34c3a66ef408c3219c11dee2c928d52e679390d3ee6e0b87e96cc758d85377" 1937"checksum salsa 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ec0865bdd9d8e614686a0cbb76979c735810131d287eb1683e91e4e64a58c387"
1921"checksum salsa-macros 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "6c15f36e5c85b3f40b84283321f97ef2ceafa6f9996cffad06793a9e096ab695" 1938"checksum salsa-macros 0.13.2 (registry+https://github.com/rust-lang/crates.io-index)" = "cac182212d3a1db75ddc42399ff1461b258a694b8318ee7e0baf6c976e39efee"
1922"checksum same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "585e8ddcedc187886a30fa705c47985c3fa88d06624095856b36ca0b82ff4421" 1939"checksum same-file 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "585e8ddcedc187886a30fa705c47985c3fa88d06624095856b36ca0b82ff4421"
1923"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d" 1940"checksum scopeguard 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b42e15e59b18a828bbf5c58ea01debb36b9b096346de35d941dcb89009f24a0d"
1924"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 1941"checksum semver 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
1925"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 1942"checksum semver-parser 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
1926"checksum serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)" = "9796c9b7ba2ffe7a9ce53c2287dfc48080f4b2b362fcc245a259b3a7201119dd" 1943"checksum serde 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)" = "9796c9b7ba2ffe7a9ce53c2287dfc48080f4b2b362fcc245a259b3a7201119dd"
1927"checksum serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)" = "4b133a43a1ecd55d4086bd5b4dc6c1751c68b1bfbeba7a5040442022c7e7c02e" 1944"checksum serde_derive 1.0.101 (registry+https://github.com/rust-lang/crates.io-index)" = "4b133a43a1ecd55d4086bd5b4dc6c1751c68b1bfbeba7a5040442022c7e7c02e"
1928"checksum serde_json 1.0.40 (registry+https://github.com/rust-lang/crates.io-index)" = "051c49229f282f7c6f3813f8286cc1e3323e8051823fce42c7ea80fe13521704" 1945"checksum serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)" = "2f72eb2a68a7dc3f9a691bfda9305a1c017a6215e5a4545c258500d2099a37c2"
1929"checksum serde_repr 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "cd02c7587ec314570041b2754829f84d873ced14a96d1fd1823531e11db40573" 1946"checksum serde_repr 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "cd02c7587ec314570041b2754829f84d873ced14a96d1fd1823531e11db40573"
1930"checksum serde_yaml 0.8.9 (registry+https://github.com/rust-lang/crates.io-index)" = "38b08a9a90e5260fe01c6480ec7c811606df6d3a660415808c3c3fa8ed95b582" 1947"checksum serde_yaml 0.8.11 (registry+https://github.com/rust-lang/crates.io-index)" = "691b17f19fc1ec9d94ec0b5864859290dff279dbd7b03f017afda54eb36c3c35"
1931"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" 1948"checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8"
1932"checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7" 1949"checksum smallvec 0.6.10 (registry+https://github.com/rust-lang/crates.io-index)" = "ab606a9c5e214920bb66c458cd7be8ef094f813f20fe77a54cc7dbfff220d4b7"
1933"checksum smol_str 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "378286eaa0fa9e6bbc351c9bfcc2320391c347e014f10cb177c26be18142e596" 1950"checksum smol_str 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)" = "34836c9a295c62c2ce3514471117c5cb269891e8421b2aafdd910050576c4d8b"
1934"checksum stacker 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fb79482f57cf598af52094ec4cc3b3c42499d3ce5bd426f2ac41515b7e57404b" 1951"checksum stacker 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d96fc4f13a0ac088e9a3cd9af1cc8c5cc1ab5deb2145cef661267dfc9c542f8a"
1935"checksum superslice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f" 1952"checksum superslice 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab16ced94dbd8a46c82fd81e3ed9a8727dac2977ea869d217bcc4ea1f122e81f"
1936"checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf" 1953"checksum syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "66850e97125af79138385e9b88339cbcd037e3f28ceab8c5ad98e64f0f1f80bf"
1937"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9" 1954"checksum tempfile 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "7a6e24d9338a0a5be79593e2fa15a648add6138caa803e2d5bc782c371732ca9"
diff --git a/Cargo.toml b/Cargo.toml
index 317c63795..97c02b40f 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,5 +1,8 @@
1[workspace] 1[workspace]
2members = [ "crates/*", "website/website-gen" ] 2members = [ "crates/*", "xtask/" ]
3
4[profile.dev]
5debug = 1 # only line info
3 6
4[profile.release] 7[profile.release]
5incremental = true 8incremental = true
diff --git a/README.md b/README.md
index e249c6486..f5ee4263d 100644
--- a/README.md
+++ b/README.md
@@ -33,10 +33,10 @@ To quickly install rust-analyzer with VS Code extension with standard setup
33$ git clone https://github.com/rust-analyzer/rust-analyzer && cd rust-analyzer 33$ git clone https://github.com/rust-analyzer/rust-analyzer && cd rust-analyzer
34 34
35# install both the language server and VS Code extension 35# install both the language server and VS Code extension
36$ cargo install-ra 36$ cargo xtask install
37 37
38# alternatively, install only the server. Binary name is `ra_lsp_server`. 38# alternatively, install only the server. Binary name is `ra_lsp_server`.
39$ cargo install-ra --server 39$ cargo xtask install --server
40``` 40```
41 41
42For non-standard setup of VS Code and other editors, see [./docs/user](./docs/user). 42For non-standard setup of VS Code and other editors, see [./docs/user](./docs/user).
@@ -59,7 +59,7 @@ https://rust-lang.zulipchat.com/#narrow/stream/185405-t-compiler.2Frls-2.2E0
59## Quick Links 59## Quick Links
60 60
61* Work List: https://paper.dropbox.com/doc/RLS-2.0-work-list--AZ3BgHKKCtqszbsi3gi6sjchAQ-42vbnxzuKq2lKwW0mkn8Y 61* Work List: https://paper.dropbox.com/doc/RLS-2.0-work-list--AZ3BgHKKCtqszbsi3gi6sjchAQ-42vbnxzuKq2lKwW0mkn8Y
62* API docs: https://rust-analyzer.github.io/rust-analyzer/api-docs/ra_ide_api/ 62* API docs: https://rust-analyzer.github.io/rust-analyzer/ra_ide_api/
63* CI: https://travis-ci.org/rust-analyzer/rust-analyzer 63* CI: https://travis-ci.org/rust-analyzer/rust-analyzer
64 64
65## License 65## License
diff --git a/crates/ra_assists/Cargo.toml b/crates/ra_assists/Cargo.toml
index 02966bbda..beebccbd9 100644
--- a/crates/ra_assists/Cargo.toml
+++ b/crates/ra_assists/Cargo.toml
@@ -6,11 +6,9 @@ authors = ["rust-analyzer developers"]
6 6
7[dependencies] 7[dependencies]
8format-buf = "1.0.0" 8format-buf = "1.0.0"
9once_cell = "1.0.1"
10join_to_string = "0.1.3" 9join_to_string = "0.1.3"
11itertools = "0.8.0" 10itertools = "0.8.0"
12arrayvec = "0.4.10" 11rustc_lexer = "0.1.0"
13rustc-hash = "1.0.1"
14 12
15ra_syntax = { path = "../ra_syntax" } 13ra_syntax = { path = "../ra_syntax" }
16ra_text_edit = { path = "../ra_text_edit" } 14ra_text_edit = { path = "../ra_text_edit" }
diff --git a/crates/ra_assists/src/assist_ctx.rs b/crates/ra_assists/src/assist_ctx.rs
index 189cad7d0..e270c5d60 100644
--- a/crates/ra_assists/src/assist_ctx.rs
+++ b/crates/ra_assists/src/assist_ctx.rs
@@ -138,6 +138,7 @@ impl AssistBuilder {
138 138
139 /// Replaces specified `node` of text with a given string, reindenting the 139 /// Replaces specified `node` of text with a given string, reindenting the
140 /// string to maintain `node`'s existing indent. 140 /// string to maintain `node`'s existing indent.
141 // FIXME: remove in favor of ra_syntax::edit::IndentLevel::increase_indent
141 pub(crate) fn replace_node_and_indent( 142 pub(crate) fn replace_node_and_indent(
142 &mut self, 143 &mut self,
143 node: &SyntaxNode, 144 node: &SyntaxNode,
diff --git a/crates/ra_assists/src/assists/early_return.rs b/crates/ra_assists/src/assists/early_return.rs
new file mode 100644
index 000000000..8c975714c
--- /dev/null
+++ b/crates/ra_assists/src/assists/early_return.rs
@@ -0,0 +1,276 @@
1//! FIXME: write short doc here
2
3use crate::{
4 assist_ctx::{Assist, AssistCtx},
5 AssistId,
6};
7use hir::db::HirDatabase;
8use ra_syntax::{
9 algo::replace_children,
10 ast::edit::IndentLevel,
11 ast::make,
12 ast::Block,
13 ast::ContinueExpr,
14 ast::IfExpr,
15 ast::ReturnExpr,
16 AstNode,
17 SyntaxKind::{FN_DEF, LOOP_EXPR, L_CURLY, R_CURLY, WHILE_EXPR, WHITESPACE},
18};
19use std::ops::RangeInclusive;
20
21pub(crate) fn convert_to_guarded_return(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist> {
22 let if_expr: IfExpr = ctx.node_at_offset()?;
23 let expr = if_expr.condition()?.expr()?;
24 let then_block = if_expr.then_branch()?.block()?;
25 if if_expr.else_branch().is_some() {
26 return None;
27 }
28
29 let parent_block = if_expr.syntax().parent()?.ancestors().find_map(Block::cast)?;
30
31 if parent_block.expr()? != if_expr.clone().into() {
32 return None;
33 }
34
35 // check for early return and continue
36 let first_in_then_block = then_block.syntax().first_child()?.clone();
37 if ReturnExpr::can_cast(first_in_then_block.kind())
38 || ContinueExpr::can_cast(first_in_then_block.kind())
39 || first_in_then_block
40 .children()
41 .any(|x| ReturnExpr::can_cast(x.kind()) || ContinueExpr::can_cast(x.kind()))
42 {
43 return None;
44 }
45
46 let parent_container = parent_block.syntax().parent()?.parent()?;
47
48 let early_expression = match parent_container.kind() {
49 WHILE_EXPR | LOOP_EXPR => Some("continue;"),
50 FN_DEF => Some("return;"),
51 _ => None,
52 }?;
53
54 if then_block.syntax().first_child_or_token().map(|t| t.kind() == L_CURLY).is_none() {
55 return None;
56 }
57
58 then_block.syntax().last_child_or_token().filter(|t| t.kind() == R_CURLY)?;
59 let cursor_position = ctx.frange.range.start();
60
61 ctx.add_action(AssistId("convert_to_guarded_return"), "convert to guarded return", |edit| {
62 let if_indent_level = IndentLevel::from_node(&if_expr.syntax());
63 let new_if_expr =
64 if_indent_level.increase_indent(make::if_expression(&expr, early_expression));
65 let then_block_items = IndentLevel::from(1).decrease_indent(then_block.clone());
66 let end_of_then = then_block_items.syntax().last_child_or_token().unwrap();
67 let end_of_then =
68 if end_of_then.prev_sibling_or_token().map(|n| n.kind()) == Some(WHITESPACE) {
69 end_of_then.prev_sibling_or_token().unwrap()
70 } else {
71 end_of_then
72 };
73 let mut new_if_and_then_statements = new_if_expr.syntax().children_with_tokens().chain(
74 then_block_items
75 .syntax()
76 .children_with_tokens()
77 .skip(1)
78 .take_while(|i| *i != end_of_then),
79 );
80 let new_block = replace_children(
81 &parent_block.syntax(),
82 RangeInclusive::new(
83 if_expr.clone().syntax().clone().into(),
84 if_expr.syntax().clone().into(),
85 ),
86 &mut new_if_and_then_statements,
87 );
88 edit.target(if_expr.syntax().text_range());
89 edit.replace_ast(parent_block, Block::cast(new_block).unwrap());
90 edit.set_cursor(cursor_position);
91 });
92 ctx.build()
93}
94
95#[cfg(test)]
96mod tests {
97 use super::*;
98 use crate::helpers::{check_assist, check_assist_not_applicable};
99
100 #[test]
101 fn convert_inside_fn() {
102 check_assist(
103 convert_to_guarded_return,
104 r#"
105 fn main() {
106 bar();
107 if<|> true {
108 foo();
109
110 //comment
111 bar();
112 }
113 }
114 "#,
115 r#"
116 fn main() {
117 bar();
118 if<|> !true {
119 return;
120 }
121 foo();
122
123 //comment
124 bar();
125 }
126 "#,
127 );
128 }
129
130 #[test]
131 fn convert_inside_while() {
132 check_assist(
133 convert_to_guarded_return,
134 r#"
135 fn main() {
136 while true {
137 if<|> true {
138 foo();
139 bar();
140 }
141 }
142 }
143 "#,
144 r#"
145 fn main() {
146 while true {
147 if<|> !true {
148 continue;
149 }
150 foo();
151 bar();
152 }
153 }
154 "#,
155 );
156 }
157
158 #[test]
159 fn convert_inside_loop() {
160 check_assist(
161 convert_to_guarded_return,
162 r#"
163 fn main() {
164 loop {
165 if<|> true {
166 foo();
167 bar();
168 }
169 }
170 }
171 "#,
172 r#"
173 fn main() {
174 loop {
175 if<|> !true {
176 continue;
177 }
178 foo();
179 bar();
180 }
181 }
182 "#,
183 );
184 }
185
186 #[test]
187 fn ignore_already_converted_if() {
188 check_assist_not_applicable(
189 convert_to_guarded_return,
190 r#"
191 fn main() {
192 if<|> true {
193 return;
194 }
195 }
196 "#,
197 );
198 }
199
200 #[test]
201 fn ignore_already_converted_loop() {
202 check_assist_not_applicable(
203 convert_to_guarded_return,
204 r#"
205 fn main() {
206 loop {
207 if<|> true {
208 continue;
209 }
210 }
211 }
212 "#,
213 );
214 }
215
216 #[test]
217 fn ignore_return() {
218 check_assist_not_applicable(
219 convert_to_guarded_return,
220 r#"
221 fn main() {
222 if<|> true {
223 return
224 }
225 }
226 "#,
227 );
228 }
229
230 #[test]
231 fn ignore_else_branch() {
232 check_assist_not_applicable(
233 convert_to_guarded_return,
234 r#"
235 fn main() {
236 if<|> true {
237 foo();
238 } else {
239 bar()
240 }
241 }
242 "#,
243 );
244 }
245
246 #[test]
247 fn ignore_statements_aftert_if() {
248 check_assist_not_applicable(
249 convert_to_guarded_return,
250 r#"
251 fn main() {
252 if<|> true {
253 foo();
254 }
255 bar();
256 }
257 "#,
258 );
259 }
260
261 #[test]
262 fn ignore_statements_inside_if() {
263 check_assist_not_applicable(
264 convert_to_guarded_return,
265 r#"
266 fn main() {
267 if false {
268 if<|> true {
269 foo();
270 }
271 }
272 }
273 "#,
274 );
275 }
276}
diff --git a/crates/ra_assists/src/assists/fill_match_arms.rs b/crates/ra_assists/src/assists/fill_match_arms.rs
index 7335cce09..e3f30b5de 100644
--- a/crates/ra_assists/src/assists/fill_match_arms.rs
+++ b/crates/ra_assists/src/assists/fill_match_arms.rs
@@ -3,7 +3,7 @@
3use std::iter; 3use std::iter;
4 4
5use hir::{db::HirDatabase, Adt, HasSource}; 5use hir::{db::HirDatabase, Adt, HasSource};
6use ra_syntax::ast::{self, make, AstNode, NameOwner}; 6use ra_syntax::ast::{self, edit::IndentLevel, make, AstNode, NameOwner};
7 7
8use crate::{Assist, AssistCtx, AssistId}; 8use crate::{Assist, AssistCtx, AssistId};
9 9
@@ -30,15 +30,19 @@ pub(crate) fn fill_match_arms(mut ctx: AssistCtx<impl HirDatabase>) -> Option<As
30 let variant_list = enum_def.variant_list()?; 30 let variant_list = enum_def.variant_list()?;
31 31
32 ctx.add_action(AssistId("fill_match_arms"), "fill match arms", |edit| { 32 ctx.add_action(AssistId("fill_match_arms"), "fill match arms", |edit| {
33 let variants = variant_list.variants(); 33 let indent_level = IndentLevel::from_node(match_arm_list.syntax());
34 let arms = variants 34
35 .filter_map(build_pat) 35 let new_arm_list = {
36 .map(|pat| make::match_arm(iter::once(pat), make::expr_unit())); 36 let variants = variant_list.variants();
37 let new_arm_list = make::match_arm_list(arms); 37 let arms = variants
38 .filter_map(build_pat)
39 .map(|pat| make::match_arm(iter::once(pat), make::expr_unit()));
40 indent_level.increase_indent(make::match_arm_list(arms))
41 };
38 42
39 edit.target(match_expr.syntax().text_range()); 43 edit.target(match_expr.syntax().text_range());
40 edit.set_cursor(expr.syntax().text_range().start()); 44 edit.set_cursor(expr.syntax().text_range().start());
41 edit.replace_node_and_indent(match_arm_list.syntax(), new_arm_list.syntax().text()); 45 edit.replace_ast(match_arm_list, new_arm_list);
42 }); 46 });
43 47
44 ctx.build() 48 ctx.build()
diff --git a/crates/ra_assists/src/assists/move_bounds.rs b/crates/ra_assists/src/assists/move_bounds.rs
index f791d22b0..d2444b6b9 100644
--- a/crates/ra_assists/src/assists/move_bounds.rs
+++ b/crates/ra_assists/src/assists/move_bounds.rs
@@ -18,7 +18,7 @@ pub(crate) fn move_bounds_to_where_clause(mut ctx: AssistCtx<impl HirDatabase>)
18 } 18 }
19 19
20 let parent = type_param_list.syntax().parent()?; 20 let parent = type_param_list.syntax().parent()?;
21 if parent.children_with_tokens().find(|it| it.kind() == WHERE_CLAUSE).is_some() { 21 if parent.children_with_tokens().any(|it| it.kind() == WHERE_CLAUSE) {
22 return None; 22 return None;
23 } 23 }
24 24
diff --git a/crates/ra_assists/src/assists/raw_string.rs b/crates/ra_assists/src/assists/raw_string.rs
index 388ee7e97..2d2e31e51 100644
--- a/crates/ra_assists/src/assists/raw_string.rs
+++ b/crates/ra_assists/src/assists/raw_string.rs
@@ -2,6 +2,7 @@
2 2
3use hir::db::HirDatabase; 3use hir::db::HirDatabase;
4use ra_syntax::{ast::AstNode, ast::Literal, TextRange, TextUnit}; 4use ra_syntax::{ast::AstNode, ast::Literal, TextRange, TextUnit};
5use rustc_lexer;
5 6
6use crate::{Assist, AssistCtx, AssistId}; 7use crate::{Assist, AssistCtx, AssistId};
7 8
@@ -10,13 +11,51 @@ pub(crate) fn make_raw_string(mut ctx: AssistCtx<impl HirDatabase>) -> Option<As
10 if literal.token().kind() != ra_syntax::SyntaxKind::STRING { 11 if literal.token().kind() != ra_syntax::SyntaxKind::STRING {
11 return None; 12 return None;
12 } 13 }
14 let token = literal.token();
15 let text = token.text().as_str();
16 let usual_string_range = find_usual_string_range(text)?;
17 let start_of_inside = usual_string_range.start().to_usize() + 1;
18 let end_of_inside = usual_string_range.end().to_usize();
19 let inside_str = &text[start_of_inside..end_of_inside];
20 let mut unescaped = String::with_capacity(inside_str.len());
21 let mut error = Ok(());
22 rustc_lexer::unescape::unescape_str(
23 inside_str,
24 &mut |_, unescaped_char| match unescaped_char {
25 Ok(c) => unescaped.push(c),
26 Err(_) => error = Err(()),
27 },
28 );
29 if error.is_err() {
30 return None;
31 }
13 ctx.add_action(AssistId("make_raw_string"), "make raw string", |edit| { 32 ctx.add_action(AssistId("make_raw_string"), "make raw string", |edit| {
14 edit.target(literal.syntax().text_range()); 33 edit.target(literal.syntax().text_range());
15 edit.insert(literal.syntax().text_range().start(), "r"); 34 let max_hash_streak = count_hashes(&unescaped);
35 let mut hashes = String::with_capacity(max_hash_streak + 1);
36 for _ in 0..hashes.capacity() {
37 hashes.push('#');
38 }
39 edit.replace(
40 literal.syntax().text_range(),
41 format!("r{}\"{}\"{}", hashes, unescaped, hashes),
42 );
16 }); 43 });
17 ctx.build() 44 ctx.build()
18} 45}
19 46
47fn count_hashes(s: &str) -> usize {
48 let mut max_hash_streak = 0usize;
49 for idx in s.match_indices("\"#").map(|(i, _)| i) {
50 let (_, sub) = s.split_at(idx + 1);
51 let nb_hash = sub.chars().take_while(|c| *c == '#').count();
52 if nb_hash > max_hash_streak {
53 max_hash_streak = nb_hash;
54 }
55 }
56 max_hash_streak
57}
58
20fn find_usual_string_range(s: &str) -> Option<TextRange> { 59fn find_usual_string_range(s: &str) -> Option<TextRange> {
21 Some(TextRange::from_to( 60 Some(TextRange::from_to(
22 TextUnit::from(s.find('"')? as u32), 61 TextUnit::from(s.find('"')? as u32),
@@ -94,10 +133,10 @@ mod test {
94 make_raw_string, 133 make_raw_string,
95 r#" 134 r#"
96 fn f() { 135 fn f() {
97 let s = <|>"random string"; 136 let s = <|>"random\nstring";
98 } 137 }
99 "#, 138 "#,
100 r#""random string""#, 139 r#""random\nstring""#,
101 ); 140 );
102 } 141 }
103 142
@@ -107,44 +146,69 @@ mod test {
107 make_raw_string, 146 make_raw_string,
108 r#" 147 r#"
109 fn f() { 148 fn f() {
110 let s = <|>"random string"; 149 let s = <|>"random\nstring";
111 } 150 }
112 "#, 151 "#,
113 r#" 152 r##"
114 fn f() { 153 fn f() {
115 let s = <|>r"random string"; 154 let s = <|>r#"random
155string"#;
116 } 156 }
117 "#, 157 "##,
118 ) 158 )
119 } 159 }
120 160
121 #[test] 161 #[test]
122 fn make_raw_string_with_escaped_works() { 162 fn make_raw_string_hashes_inside_works() {
123 check_assist( 163 check_assist(
124 make_raw_string, 164 make_raw_string,
125 r#" 165 r###"
126 fn f() { 166 fn f() {
127 let s = <|>"random\nstring"; 167 let s = <|>"#random##\nstring";
128 } 168 }
129 "#, 169 "###,
130 r#" 170 r####"
131 fn f() { 171 fn f() {
132 let s = <|>r"random\nstring"; 172 let s = <|>r#"#random##
173string"#;
133 } 174 }
134 "#, 175 "####,
135 ) 176 )
136 } 177 }
137 178
138 #[test] 179 #[test]
139 fn make_raw_string_not_works() { 180 fn make_raw_string_closing_hashes_inside_works() {
140 check_assist_not_applicable( 181 check_assist(
182 make_raw_string,
183 r###"
184 fn f() {
185 let s = <|>"#random\"##\nstring";
186 }
187 "###,
188 r####"
189 fn f() {
190 let s = <|>r###"#random"##
191string"###;
192 }
193 "####,
194 )
195 }
196
197 #[test]
198 fn make_raw_string_nothing_to_unescape_works() {
199 check_assist(
141 make_raw_string, 200 make_raw_string,
142 r#" 201 r#"
143 fn f() { 202 fn f() {
144 let s = <|>r"random string"; 203 let s = <|>"random string";
145 } 204 }
146 "#, 205 "#,
147 ); 206 r##"
207 fn f() {
208 let s = <|>r#"random string"#;
209 }
210 "##,
211 )
148 } 212 }
149 213
150 #[test] 214 #[test]
@@ -369,4 +433,14 @@ mod test {
369 "#, 433 "#,
370 ); 434 );
371 } 435 }
436
437 #[test]
438 fn count_hashes_test() {
439 assert_eq!(0, count_hashes("abc"));
440 assert_eq!(0, count_hashes("###"));
441 assert_eq!(1, count_hashes("\"#abc"));
442 assert_eq!(0, count_hashes("#abc"));
443 assert_eq!(2, count_hashes("#ab\"##c"));
444 assert_eq!(4, count_hashes("#ab\"##\"####c"));
445 }
372} 446}
diff --git a/crates/ra_assists/src/lib.rs b/crates/ra_assists/src/lib.rs
index d2376c475..ab77b46a9 100644
--- a/crates/ra_assists/src/lib.rs
+++ b/crates/ra_assists/src/lib.rs
@@ -108,6 +108,7 @@ mod assists {
108 mod add_missing_impl_members; 108 mod add_missing_impl_members;
109 mod move_guard; 109 mod move_guard;
110 mod move_bounds; 110 mod move_bounds;
111 mod early_return;
111 112
112 pub(crate) fn all<DB: HirDatabase>() -> &'static [fn(AssistCtx<DB>) -> Option<Assist>] { 113 pub(crate) fn all<DB: HirDatabase>() -> &'static [fn(AssistCtx<DB>) -> Option<Assist>] {
113 &[ 114 &[
@@ -135,6 +136,7 @@ mod assists {
135 raw_string::make_raw_string, 136 raw_string::make_raw_string,
136 raw_string::make_usual_string, 137 raw_string::make_usual_string,
137 raw_string::remove_hash, 138 raw_string::remove_hash,
139 early_return::convert_to_guarded_return,
138 ] 140 ]
139 } 141 }
140} 142}
diff --git a/crates/ra_batch/Cargo.toml b/crates/ra_batch/Cargo.toml
index 62850746f..c85da7a2c 100644
--- a/crates/ra_batch/Cargo.toml
+++ b/crates/ra_batch/Cargo.toml
@@ -9,7 +9,7 @@ log = "0.4.5"
9rustc-hash = "1.0" 9rustc-hash = "1.0"
10crossbeam-channel = "0.3.5" 10crossbeam-channel = "0.3.5"
11 11
12ra_vfs = "0.4.0" 12ra_vfs = "0.5.0"
13ra_vfs_glob = { path = "../ra_vfs_glob" } 13ra_vfs_glob = { path = "../ra_vfs_glob" }
14ra_db = { path = "../ra_db" } 14ra_db = { path = "../ra_db" }
15ra_ide_api = { path = "../ra_ide_api" } 15ra_ide_api = { path = "../ra_ide_api" }
diff --git a/crates/ra_batch/src/lib.rs b/crates/ra_batch/src/lib.rs
index a5fc2a23e..df49eb13d 100644
--- a/crates/ra_batch/src/lib.rs
+++ b/crates/ra_batch/src/lib.rs
@@ -43,8 +43,12 @@ pub fn load_cargo(root: &Path) -> Result<(AnalysisHost, FxHashMap<SourceRootId,
43 ); 43 );
44 44
45 // FIXME: cfg options? 45 // FIXME: cfg options?
46 let default_cfg_options = 46 let default_cfg_options = {
47 get_rustc_cfg_options().atom("test".into()).atom("debug_assertion".into()); 47 let mut opts = get_rustc_cfg_options();
48 opts.insert_atom("test".into());
49 opts.insert_atom("debug_assertion".into());
50 opts
51 };
48 52
49 let (crate_graph, _crate_names) = 53 let (crate_graph, _crate_names) =
50 ws.to_crate_graph(&default_cfg_options, &mut |path: &Path| { 54 ws.to_crate_graph(&default_cfg_options, &mut |path: &Path| {
@@ -137,14 +141,8 @@ mod tests {
137 #[test] 141 #[test]
138 fn test_loading_rust_analyzer() { 142 fn test_loading_rust_analyzer() {
139 let path = Path::new(env!("CARGO_MANIFEST_DIR")).parent().unwrap().parent().unwrap(); 143 let path = Path::new(env!("CARGO_MANIFEST_DIR")).parent().unwrap().parent().unwrap();
140 let (host, roots) = load_cargo(path).unwrap(); 144 let (host, _roots) = load_cargo(path).unwrap();
141 let mut n_crates = 0; 145 let n_crates = Crate::all(host.raw_database()).len();
142 for (root, _) in roots {
143 for _krate in Crate::source_root_crates(host.raw_database(), root) {
144 n_crates += 1;
145 }
146 }
147
148 // RA has quite a few crates, but the exact count doesn't matter 146 // RA has quite a few crates, but the exact count doesn't matter
149 assert!(n_crates > 20); 147 assert!(n_crates > 20);
150 } 148 }
diff --git a/crates/ra_cfg/src/lib.rs b/crates/ra_cfg/src/lib.rs
index e1c92fbba..1bee3eb99 100644
--- a/crates/ra_cfg/src/lib.rs
+++ b/crates/ra_cfg/src/lib.rs
@@ -36,26 +36,20 @@ impl CfgOptions {
36 self.check(&parse_cfg(attr)) 36 self.check(&parse_cfg(attr))
37 } 37 }
38 38
39 pub fn atom(mut self, name: SmolStr) -> CfgOptions { 39 pub fn insert_atom(&mut self, key: SmolStr) {
40 self.atoms.insert(name); 40 self.atoms.insert(key);
41 self
42 } 41 }
43 42
44 pub fn key_value(mut self, key: SmolStr, value: SmolStr) -> CfgOptions { 43 pub fn remove_atom(&mut self, name: &str) {
45 self.key_values.insert((key, value)); 44 self.atoms.remove(name);
46 self
47 } 45 }
48 46
49 /// Shortcut to set features 47 pub fn insert_key_value(&mut self, key: SmolStr, value: SmolStr) {
50 pub fn features(mut self, iter: impl IntoIterator<Item = SmolStr>) -> CfgOptions { 48 self.key_values.insert((key, value));
51 for feat in iter {
52 self = self.key_value("feature".into(), feat);
53 }
54 self
55 } 49 }
56 50
57 pub fn remove_atom(mut self, name: &SmolStr) -> CfgOptions { 51 /// Shortcut to set features
58 self.atoms.remove(name); 52 pub fn insert_features(&mut self, iter: impl IntoIterator<Item = SmolStr>) {
59 self 53 iter.into_iter().for_each(|feat| self.insert_key_value("feature".into(), feat));
60 } 54 }
61} 55}
diff --git a/crates/ra_cli/Cargo.toml b/crates/ra_cli/Cargo.toml
index 67e727a88..fcd102e8b 100644
--- a/crates/ra_cli/Cargo.toml
+++ b/crates/ra_cli/Cargo.toml
@@ -8,7 +8,7 @@ publish = false
8[dependencies] 8[dependencies]
9pico-args = "0.3.0" 9pico-args = "0.3.0"
10flexi_logger = "0.14.0" 10flexi_logger = "0.14.0"
11indicatif = "0.11.0" 11indicatif = "0.12.0"
12 12
13ra_syntax = { path = "../ra_syntax" } 13ra_syntax = { path = "../ra_syntax" }
14ra_ide_api = { path = "../ra_ide_api" } 14ra_ide_api = { path = "../ra_ide_api" }
diff --git a/crates/ra_cli/src/analysis_bench.rs b/crates/ra_cli/src/analysis_bench.rs
index 727f1e62b..8bbe5d9e8 100644
--- a/crates/ra_cli/src/analysis_bench.rs
+++ b/crates/ra_cli/src/analysis_bench.rs
@@ -8,7 +8,7 @@ use std::{
8 8
9use ra_db::{ 9use ra_db::{
10 salsa::{Database, Durability}, 10 salsa::{Database, Durability},
11 FileId, SourceDatabase, 11 FileId, SourceDatabaseExt,
12}; 12};
13use ra_ide_api::{Analysis, AnalysisChange, AnalysisHost, FilePosition, LineCol}; 13use ra_ide_api::{Analysis, AnalysisChange, AnalysisHost, FilePosition, LineCol};
14 14
diff --git a/crates/ra_cli/src/analysis_stats.rs b/crates/ra_cli/src/analysis_stats.rs
index a8a110bd9..cda5cafb8 100644
--- a/crates/ra_cli/src/analysis_stats.rs
+++ b/crates/ra_cli/src/analysis_stats.rs
@@ -2,7 +2,7 @@
2 2
3use std::{collections::HashSet, fmt::Write, path::Path, time::Instant}; 3use std::{collections::HashSet, fmt::Write, path::Path, time::Instant};
4 4
5use ra_db::SourceDatabase; 5use ra_db::SourceDatabaseExt;
6use ra_hir::{AssocItem, Crate, HasBodySource, HasSource, HirDisplay, ModuleDef, Ty, TypeWalk}; 6use ra_hir::{AssocItem, Crate, HasBodySource, HasSource, HirDisplay, ModuleDef, Ty, TypeWalk};
7use ra_syntax::AstNode; 7use ra_syntax::AstNode;
8 8
@@ -22,16 +22,29 @@ pub fn run(
22 let mut num_crates = 0; 22 let mut num_crates = 0;
23 let mut visited_modules = HashSet::new(); 23 let mut visited_modules = HashSet::new();
24 let mut visit_queue = Vec::new(); 24 let mut visit_queue = Vec::new();
25 for (source_root_id, project_root) in roots { 25
26 if project_root.is_member() { 26 let members = roots
27 for krate in Crate::source_root_crates(db, source_root_id) { 27 .into_iter()
28 num_crates += 1; 28 .filter_map(
29 let module = 29 |(source_root_id, project_root)| {
30 krate.root_module(db).expect("crate in source root without root module"); 30 if project_root.is_member() {
31 visit_queue.push(module); 31 Some(source_root_id)
32 } 32 } else {
33 None
34 }
35 },
36 )
37 .collect::<HashSet<_>>();
38
39 for krate in Crate::all(db) {
40 let module = krate.root_module(db).expect("crate without root module");
41 let file_id = module.definition_source(db).file_id;
42 if members.contains(&db.file_source_root(file_id.original_file(db))) {
43 num_crates += 1;
44 visit_queue.push(module);
33 } 45 }
34 } 46 }
47
35 println!("Crates in this dir: {}", num_crates); 48 println!("Crates in this dir: {}", num_crates);
36 let mut num_decls = 0; 49 let mut num_decls = 0;
37 let mut funcs = Vec::new(); 50 let mut funcs = Vec::new();
@@ -130,7 +143,7 @@ pub fn run(
130 ); 143 );
131 bar.println(format!( 144 bar.println(format!(
132 "{} {}:{}-{}:{}: Expected {}, got {}", 145 "{} {}:{}-{}:{}: Expected {}, got {}",
133 path.display(), 146 path,
134 start.line + 1, 147 start.line + 1,
135 start.col_utf16, 148 start.col_utf16,
136 end.line + 1, 149 end.line + 1,
diff --git a/crates/ra_db/Cargo.toml b/crates/ra_db/Cargo.toml
index c141f1a88..3394ae8ce 100644
--- a/crates/ra_db/Cargo.toml
+++ b/crates/ra_db/Cargo.toml
@@ -6,7 +6,7 @@ authors = ["rust-analyzer developers"]
6 6
7[dependencies] 7[dependencies]
8salsa = "0.13.0" 8salsa = "0.13.0"
9relative-path = "0.4.0" 9relative-path = "1.0.0"
10rustc-hash = "1.0" 10rustc-hash = "1.0"
11 11
12ra_syntax = { path = "../ra_syntax" } 12ra_syntax = { path = "../ra_syntax" }
diff --git a/crates/ra_db/src/input.rs b/crates/ra_db/src/input.rs
index 23148096c..eafa95921 100644
--- a/crates/ra_db/src/input.rs
+++ b/crates/ra_db/src/input.rs
@@ -48,9 +48,6 @@ impl SourceRoot {
48 pub fn new_library() -> SourceRoot { 48 pub fn new_library() -> SourceRoot {
49 SourceRoot { is_library: true, ..SourceRoot::new() } 49 SourceRoot { is_library: true, ..SourceRoot::new() }
50 } 50 }
51 pub fn file_by_relative_path(&self, path: &RelativePath) -> Option<FileId> {
52 self.files.get(path).copied()
53 }
54 pub fn insert_file(&mut self, path: RelativePathBuf, file_id: FileId) { 51 pub fn insert_file(&mut self, path: RelativePathBuf, file_id: FileId) {
55 self.files.insert(path, file_id); 52 self.files.insert(path, file_id);
56 } 53 }
@@ -60,6 +57,9 @@ impl SourceRoot {
60 pub fn walk(&self) -> impl Iterator<Item = FileId> + '_ { 57 pub fn walk(&self) -> impl Iterator<Item = FileId> + '_ {
61 self.files.values().copied() 58 self.files.values().copied()
62 } 59 }
60 pub fn file_by_relative_path(&self, path: &RelativePath) -> Option<FileId> {
61 self.files.get(path).copied()
62 }
63} 63}
64 64
65/// `CrateGraph` is a bit of information which turns a set of text files into a 65/// `CrateGraph` is a bit of information which turns a set of text files into a
diff --git a/crates/ra_db/src/lib.rs b/crates/ra_db/src/lib.rs
index 603daed37..fc5d6d396 100644
--- a/crates/ra_db/src/lib.rs
+++ b/crates/ra_db/src/lib.rs
@@ -6,7 +6,7 @@ use std::{panic, sync::Arc};
6 6
7use ra_prof::profile; 7use ra_prof::profile;
8use ra_syntax::{ast, Parse, SourceFile, TextRange, TextUnit}; 8use ra_syntax::{ast, Parse, SourceFile, TextRange, TextUnit};
9use relative_path::RelativePathBuf; 9use relative_path::{RelativePath, RelativePathBuf};
10 10
11pub use crate::{ 11pub use crate::{
12 cancellation::Canceled, 12 cancellation::Canceled,
@@ -64,16 +64,39 @@ pub struct FileRange {
64 64
65pub const DEFAULT_LRU_CAP: usize = 128; 65pub const DEFAULT_LRU_CAP: usize = 128;
66 66
67pub trait FileLoader {
68 /// Text of the file.
69 fn file_text(&self, file_id: FileId) -> Arc<String>;
70 fn resolve_relative_path(&self, anchor: FileId, relative_path: &RelativePath)
71 -> Option<FileId>;
72 fn relevant_crates(&self, file_id: FileId) -> Arc<Vec<CrateId>>;
73}
74
67/// Database which stores all significant input facts: source code and project 75/// Database which stores all significant input facts: source code and project
68/// model. Everything else in rust-analyzer is derived from these queries. 76/// model. Everything else in rust-analyzer is derived from these queries.
69#[salsa::query_group(SourceDatabaseStorage)] 77#[salsa::query_group(SourceDatabaseStorage)]
70pub trait SourceDatabase: CheckCanceled + std::fmt::Debug { 78pub trait SourceDatabase: CheckCanceled + FileLoader + std::fmt::Debug {
71 /// Text of the file.
72 #[salsa::input]
73 fn file_text(&self, file_id: FileId) -> Arc<String>;
74 // Parses the file into the syntax tree. 79 // Parses the file into the syntax tree.
75 #[salsa::invoke(parse_query)] 80 #[salsa::invoke(parse_query)]
76 fn parse(&self, file_id: FileId) -> Parse<ast::SourceFile>; 81 fn parse(&self, file_id: FileId) -> Parse<ast::SourceFile>;
82
83 /// The crate graph.
84 #[salsa::input]
85 fn crate_graph(&self) -> Arc<CrateGraph>;
86}
87
88fn parse_query(db: &impl SourceDatabase, file_id: FileId) -> Parse<ast::SourceFile> {
89 let _p = profile("parse_query");
90 let text = db.file_text(file_id);
91 SourceFile::parse(&*text)
92}
93
94/// We don't want to give HIR knowledge of source roots, hence we extract these
95/// methods into a separate DB.
96#[salsa::query_group(SourceDatabaseExtStorage)]
97pub trait SourceDatabaseExt: SourceDatabase {
98 #[salsa::input]
99 fn file_text(&self, file_id: FileId) -> Arc<String>;
77 /// Path to a file, relative to the root of its source root. 100 /// Path to a file, relative to the root of its source root.
78 #[salsa::input] 101 #[salsa::input]
79 fn file_relative_path(&self, file_id: FileId) -> RelativePathBuf; 102 fn file_relative_path(&self, file_id: FileId) -> RelativePathBuf;
@@ -83,21 +106,48 @@ pub trait SourceDatabase: CheckCanceled + std::fmt::Debug {
83 /// Contents of the source root. 106 /// Contents of the source root.
84 #[salsa::input] 107 #[salsa::input]
85 fn source_root(&self, id: SourceRootId) -> Arc<SourceRoot>; 108 fn source_root(&self, id: SourceRootId) -> Arc<SourceRoot>;
109
86 fn source_root_crates(&self, id: SourceRootId) -> Arc<Vec<CrateId>>; 110 fn source_root_crates(&self, id: SourceRootId) -> Arc<Vec<CrateId>>;
87 /// The crate graph.
88 #[salsa::input]
89 fn crate_graph(&self) -> Arc<CrateGraph>;
90} 111}
91 112
92fn source_root_crates(db: &impl SourceDatabase, id: SourceRootId) -> Arc<Vec<CrateId>> { 113fn source_root_crates(
114 db: &(impl SourceDatabaseExt + SourceDatabase),
115 id: SourceRootId,
116) -> Arc<Vec<CrateId>> {
93 let root = db.source_root(id); 117 let root = db.source_root(id);
94 let graph = db.crate_graph(); 118 let graph = db.crate_graph();
95 let res = root.walk().filter_map(|it| graph.crate_id_for_crate_root(it)).collect::<Vec<_>>(); 119 let res = root.walk().filter_map(|it| graph.crate_id_for_crate_root(it)).collect::<Vec<_>>();
96 Arc::new(res) 120 Arc::new(res)
97} 121}
98 122
99fn parse_query(db: &impl SourceDatabase, file_id: FileId) -> Parse<ast::SourceFile> { 123/// Silly workaround for cyclic deps between the traits
100 let _p = profile("parse_query"); 124pub struct FileLoaderDelegate<T>(pub T);
101 let text = db.file_text(file_id); 125
102 SourceFile::parse(&*text) 126impl<T: SourceDatabaseExt> FileLoader for FileLoaderDelegate<&'_ T> {
127 fn file_text(&self, file_id: FileId) -> Arc<String> {
128 SourceDatabaseExt::file_text(self.0, file_id)
129 }
130 fn resolve_relative_path(
131 &self,
132 anchor: FileId,
133 relative_path: &RelativePath,
134 ) -> Option<FileId> {
135 let path = {
136 let mut path = self.0.file_relative_path(anchor);
137 // Workaround for relative path API: turn `lib.rs` into ``.
138 if !path.pop() {
139 path = RelativePathBuf::default();
140 }
141 path.push(relative_path);
142 path.normalize()
143 };
144 let source_root = self.0.file_source_root(anchor);
145 let source_root = self.0.source_root(source_root);
146 source_root.file_by_relative_path(&path)
147 }
148
149 fn relevant_crates(&self, file_id: FileId) -> Arc<Vec<CrateId>> {
150 let source_root = self.0.file_source_root(file_id);
151 self.0.source_root_crates(source_root)
152 }
103} 153}
diff --git a/crates/ra_hir/Cargo.toml b/crates/ra_hir/Cargo.toml
index cc117f84d..edf1fa49b 100644
--- a/crates/ra_hir/Cargo.toml
+++ b/crates/ra_hir/Cargo.toml
@@ -5,9 +5,9 @@ version = "0.1.0"
5authors = ["rust-analyzer developers"] 5authors = ["rust-analyzer developers"]
6 6
7[dependencies] 7[dependencies]
8arrayvec = "0.4.10" 8arrayvec = "0.5.1"
9log = "0.4.5" 9log = "0.4.5"
10relative-path = "0.4.0" 10relative-path = "1.0.0"
11rustc-hash = "1.0" 11rustc-hash = "1.0"
12parking_lot = "0.9.0" 12parking_lot = "0.9.0"
13ena = "0.13" 13ena = "0.13"
diff --git a/crates/ra_hir/src/adt.rs b/crates/ra_hir/src/adt.rs
index 99d286215..3e9cd3c63 100644
--- a/crates/ra_hir/src/adt.rs
+++ b/crates/ra_hir/src/adt.rs
@@ -9,7 +9,7 @@ use ra_syntax::ast::{self, NameOwner, StructKind, TypeAscriptionOwner};
9use crate::{ 9use crate::{
10 db::{AstDatabase, DefDatabase, HirDatabase}, 10 db::{AstDatabase, DefDatabase, HirDatabase},
11 type_ref::TypeRef, 11 type_ref::TypeRef,
12 AsName, Enum, EnumVariant, FieldSource, HasSource, Name, Source, Struct, StructField, 12 AsName, Enum, EnumVariant, FieldSource, HasSource, Module, Name, Source, Struct, StructField,
13}; 13};
14 14
15impl Struct { 15impl Struct {
@@ -170,12 +170,20 @@ impl VariantDef {
170 } 170 }
171 } 171 }
172 172
173 pub(crate) fn field(self, db: &impl HirDatabase, name: &Name) -> Option<StructField> { 173 pub fn field(self, db: &impl HirDatabase, name: &Name) -> Option<StructField> {
174 match self { 174 match self {
175 VariantDef::Struct(it) => it.field(db, name), 175 VariantDef::Struct(it) => it.field(db, name),
176 VariantDef::EnumVariant(it) => it.field(db, name), 176 VariantDef::EnumVariant(it) => it.field(db, name),
177 } 177 }
178 } 178 }
179
180 pub fn module(self, db: &impl HirDatabase) -> Module {
181 match self {
182 VariantDef::Struct(it) => it.module(db),
183 VariantDef::EnumVariant(it) => it.module(db),
184 }
185 }
186
179 pub(crate) fn variant_data(self, db: &impl DefDatabase) -> Arc<VariantData> { 187 pub(crate) fn variant_data(self, db: &impl DefDatabase) -> Arc<VariantData> {
180 match self { 188 match self {
181 VariantDef::Struct(it) => it.variant_data(db), 189 VariantDef::Struct(it) => it.variant_data(db),
diff --git a/crates/ra_hir/src/attr.rs b/crates/ra_hir/src/attr.rs
index f67e80bfd..bd159a566 100644
--- a/crates/ra_hir/src/attr.rs
+++ b/crates/ra_hir/src/attr.rs
@@ -63,14 +63,24 @@ impl Attr {
63 self.path.as_ident().map_or(false, |s| s.to_string() == name) 63 self.path.as_ident().map_or(false, |s| s.to_string() == name)
64 } 64 }
65 65
66 // FIXME: handle cfg_attr :-)
66 pub(crate) fn as_cfg(&self) -> Option<&Subtree> { 67 pub(crate) fn as_cfg(&self) -> Option<&Subtree> {
67 if self.is_simple_atom("cfg") { 68 if !self.is_simple_atom("cfg") {
68 match &self.input { 69 return None;
69 Some(AttrInput::TokenTree(subtree)) => Some(subtree), 70 }
70 _ => None, 71 match &self.input {
71 } 72 Some(AttrInput::TokenTree(subtree)) => Some(subtree),
72 } else { 73 _ => None,
73 None 74 }
75 }
76
77 pub(crate) fn as_path(&self) -> Option<&SmolStr> {
78 if !self.is_simple_atom("path") {
79 return None;
80 }
81 match &self.input {
82 Some(AttrInput::Literal(it)) => Some(it),
83 _ => None,
74 } 84 }
75 } 85 }
76 86
diff --git a/crates/ra_hir/src/code_model.rs b/crates/ra_hir/src/code_model.rs
index e3a7e8e3c..8eb3c577d 100644
--- a/crates/ra_hir/src/code_model.rs
+++ b/crates/ra_hir/src/code_model.rs
@@ -5,7 +5,7 @@ pub(crate) mod docs;
5 5
6use std::sync::Arc; 6use std::sync::Arc;
7 7
8use ra_db::{CrateId, Edition, FileId, SourceRootId}; 8use ra_db::{CrateId, Edition, FileId};
9use ra_syntax::ast::{self, NameOwner, TypeAscriptionOwner}; 9use ra_syntax::ast::{self, NameOwner, TypeAscriptionOwner};
10 10
11use crate::{ 11use crate::{
@@ -24,7 +24,7 @@ use crate::{
24 U8, USIZE, 24 U8, USIZE,
25 }, 25 },
26 nameres::{CrateModuleId, ImportId, ModuleScope, Namespace}, 26 nameres::{CrateModuleId, ImportId, ModuleScope, Namespace},
27 resolve::{Resolver, TypeNs}, 27 resolve::{Resolver, Scope, TypeNs},
28 traits::TraitData, 28 traits::TraitData,
29 ty::{ 29 ty::{
30 primitive::{FloatBitness, FloatTy, IntBitness, IntTy, Signedness}, 30 primitive::{FloatBitness, FloatTy, IntBitness, IntTy, Signedness},
@@ -76,10 +76,8 @@ impl Crate {
76 crate_graph.edition(self.crate_id) 76 crate_graph.edition(self.crate_id)
77 } 77 }
78 78
79 // FIXME: should this be in source_binder? 79 pub fn all(db: &impl DefDatabase) -> Vec<Crate> {
80 pub fn source_root_crates(db: &impl DefDatabase, source_root: SourceRootId) -> Vec<Crate> { 80 db.crate_graph().iter().map(|crate_id| Crate { crate_id }).collect()
81 let crate_ids = db.source_root_crates(source_root);
82 crate_ids.iter().map(|&crate_id| Crate { crate_id }).collect()
83 } 81 }
84} 82}
85 83
@@ -465,7 +463,7 @@ impl Enum {
465 // ...and add generic params, if present 463 // ...and add generic params, if present
466 let p = self.generic_params(db); 464 let p = self.generic_params(db);
467 let r = if !p.params.is_empty() { r.push_generic_params_scope(p) } else { r }; 465 let r = if !p.params.is_empty() { r.push_generic_params_scope(p) } else { r };
468 r 466 r.push_scope(Scope::AdtScope(self.into()))
469 } 467 }
470} 468}
471 469
@@ -569,6 +567,14 @@ impl DefWithBody {
569 DefWithBody::Static(s) => s.krate(db), 567 DefWithBody::Static(s) => s.krate(db),
570 } 568 }
571 } 569 }
570
571 pub fn module(self, db: &impl HirDatabase) -> Module {
572 match self {
573 DefWithBody::Const(c) => c.module(db),
574 DefWithBody::Function(f) => f.module(db),
575 DefWithBody::Static(s) => s.module(db),
576 }
577 }
572} 578}
573 579
574pub trait HasBody: Copy { 580pub trait HasBody: Copy {
@@ -789,6 +795,20 @@ impl Const {
789 ImplBlock::containing(module_impls, self.into()) 795 ImplBlock::containing(module_impls, self.into())
790 } 796 }
791 797
798 pub fn parent_trait(self, db: &impl DefDatabase) -> Option<Trait> {
799 db.trait_items_index(self.module(db)).get_parent_trait(self.into())
800 }
801
802 pub fn container(self, db: &impl DefDatabase) -> Option<Container> {
803 if let Some(impl_block) = self.impl_block(db) {
804 Some(impl_block.into())
805 } else if let Some(trait_) = self.parent_trait(db) {
806 Some(trait_.into())
807 } else {
808 None
809 }
810 }
811
792 // FIXME: move to a more general type for 'body-having' items 812 // FIXME: move to a more general type for 'body-having' items
793 /// Builds a resolver for code inside this item. 813 /// Builds a resolver for code inside this item.
794 pub(crate) fn resolver(self, db: &impl HirDatabase) -> Resolver { 814 pub(crate) fn resolver(self, db: &impl HirDatabase) -> Resolver {
@@ -1075,3 +1095,13 @@ impl From<AssocItem> for crate::generics::GenericDef {
1075 } 1095 }
1076 } 1096 }
1077} 1097}
1098
1099impl AssocItem {
1100 pub fn module(self, db: &impl DefDatabase) -> Module {
1101 match self {
1102 AssocItem::Function(f) => f.module(db),
1103 AssocItem::Const(c) => c.module(db),
1104 AssocItem::TypeAlias(t) => t.module(db),
1105 }
1106 }
1107}
diff --git a/crates/ra_hir/src/code_model/docs.rs b/crates/ra_hir/src/code_model/docs.rs
index 9675e397f..8533b4f5e 100644
--- a/crates/ra_hir/src/code_model/docs.rs
+++ b/crates/ra_hir/src/code_model/docs.rs
@@ -6,21 +6,19 @@ use ra_syntax::ast;
6 6
7use crate::{ 7use crate::{
8 db::{AstDatabase, DefDatabase, HirDatabase}, 8 db::{AstDatabase, DefDatabase, HirDatabase},
9 Const, Enum, EnumVariant, FieldSource, Function, HasSource, MacroDef, Module, Static, Struct, 9 Adt, Const, Enum, EnumVariant, FieldSource, Function, HasSource, MacroDef, Module, Static,
10 StructField, Trait, TypeAlias, Union, 10 Struct, StructField, Trait, TypeAlias, Union,
11}; 11};
12 12
13#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)] 13#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
14pub enum DocDef { 14pub enum DocDef {
15 Module(Module), 15 Module(Module),
16 StructField(StructField), 16 StructField(StructField),
17 Struct(Struct), 17 Adt(Adt),
18 Enum(Enum),
19 EnumVariant(EnumVariant), 18 EnumVariant(EnumVariant),
20 Static(Static), 19 Static(Static),
21 Const(Const), 20 Const(Const),
22 Function(Function), 21 Function(Function),
23 Union(Union),
24 Trait(Trait), 22 Trait(Trait),
25 TypeAlias(TypeAlias), 23 TypeAlias(TypeAlias),
26 MacroDef(MacroDef), 24 MacroDef(MacroDef),
@@ -29,13 +27,11 @@ pub enum DocDef {
29impl_froms!( 27impl_froms!(
30 DocDef: Module, 28 DocDef: Module,
31 StructField, 29 StructField,
32 Struct, 30 Adt(Struct, Enum, Union),
33 Enum,
34 EnumVariant, 31 EnumVariant,
35 Static, 32 Static,
36 Const, 33 Const,
37 Function, 34 Function,
38 Union,
39 Trait, 35 Trait,
40 TypeAlias, 36 TypeAlias,
41 MacroDef 37 MacroDef
@@ -79,13 +75,15 @@ pub(crate) fn documentation_query(
79 FieldSource::Named(named) => docs_from_ast(&named), 75 FieldSource::Named(named) => docs_from_ast(&named),
80 FieldSource::Pos(..) => None, 76 FieldSource::Pos(..) => None,
81 }, 77 },
82 DocDef::Struct(it) => docs_from_ast(&it.source(db).ast), 78 DocDef::Adt(it) => match it {
83 DocDef::Enum(it) => docs_from_ast(&it.source(db).ast), 79 Adt::Struct(it) => docs_from_ast(&it.source(db).ast),
80 Adt::Enum(it) => docs_from_ast(&it.source(db).ast),
81 Adt::Union(it) => docs_from_ast(&it.source(db).ast),
82 },
84 DocDef::EnumVariant(it) => docs_from_ast(&it.source(db).ast), 83 DocDef::EnumVariant(it) => docs_from_ast(&it.source(db).ast),
85 DocDef::Static(it) => docs_from_ast(&it.source(db).ast), 84 DocDef::Static(it) => docs_from_ast(&it.source(db).ast),
86 DocDef::Const(it) => docs_from_ast(&it.source(db).ast), 85 DocDef::Const(it) => docs_from_ast(&it.source(db).ast),
87 DocDef::Function(it) => docs_from_ast(&it.source(db).ast), 86 DocDef::Function(it) => docs_from_ast(&it.source(db).ast),
88 DocDef::Union(it) => docs_from_ast(&it.source(db).ast),
89 DocDef::Trait(it) => docs_from_ast(&it.source(db).ast), 87 DocDef::Trait(it) => docs_from_ast(&it.source(db).ast),
90 DocDef::TypeAlias(it) => docs_from_ast(&it.source(db).ast), 88 DocDef::TypeAlias(it) => docs_from_ast(&it.source(db).ast),
91 DocDef::MacroDef(it) => docs_from_ast(&it.source(db).ast), 89 DocDef::MacroDef(it) => docs_from_ast(&it.source(db).ast),
diff --git a/crates/ra_hir/src/db.rs b/crates/ra_hir/src/db.rs
index 73d7d6fb6..489a3b19c 100644
--- a/crates/ra_hir/src/db.rs
+++ b/crates/ra_hir/src/db.rs
@@ -111,37 +111,37 @@ pub trait DefDatabase: InternDatabase + HirDebugDatabase {
111 #[salsa::invoke(CrateDefMap::crate_def_map_query)] 111 #[salsa::invoke(CrateDefMap::crate_def_map_query)]
112 fn crate_def_map(&self, krate: Crate) -> Arc<CrateDefMap>; 112 fn crate_def_map(&self, krate: Crate) -> Arc<CrateDefMap>;
113 113
114 #[salsa::invoke(crate::impl_block::impls_in_module_with_source_map_query)] 114 #[salsa::invoke(ModuleImplBlocks::impls_in_module_with_source_map_query)]
115 fn impls_in_module_with_source_map( 115 fn impls_in_module_with_source_map(
116 &self, 116 &self,
117 module: Module, 117 module: Module,
118 ) -> (Arc<ModuleImplBlocks>, Arc<ImplSourceMap>); 118 ) -> (Arc<ModuleImplBlocks>, Arc<ImplSourceMap>);
119 119
120 #[salsa::invoke(crate::impl_block::impls_in_module)] 120 #[salsa::invoke(ModuleImplBlocks::impls_in_module_query)]
121 fn impls_in_module(&self, module: Module) -> Arc<ModuleImplBlocks>; 121 fn impls_in_module(&self, module: Module) -> Arc<ModuleImplBlocks>;
122 122
123 #[salsa::invoke(crate::generics::GenericParams::generic_params_query)] 123 #[salsa::invoke(crate::generics::GenericParams::generic_params_query)]
124 fn generic_params(&self, def: GenericDef) -> Arc<GenericParams>; 124 fn generic_params(&self, def: GenericDef) -> Arc<GenericParams>;
125 125
126 #[salsa::invoke(crate::FnData::fn_data_query)] 126 #[salsa::invoke(FnData::fn_data_query)]
127 fn fn_data(&self, func: Function) -> Arc<FnData>; 127 fn fn_data(&self, func: Function) -> Arc<FnData>;
128 128
129 #[salsa::invoke(crate::type_alias::type_alias_data_query)] 129 #[salsa::invoke(TypeAliasData::type_alias_data_query)]
130 fn type_alias_data(&self, typ: TypeAlias) -> Arc<TypeAliasData>; 130 fn type_alias_data(&self, typ: TypeAlias) -> Arc<TypeAliasData>;
131 131
132 #[salsa::invoke(crate::ConstData::const_data_query)] 132 #[salsa::invoke(ConstData::const_data_query)]
133 fn const_data(&self, konst: Const) -> Arc<ConstData>; 133 fn const_data(&self, konst: Const) -> Arc<ConstData>;
134 134
135 #[salsa::invoke(crate::ConstData::static_data_query)] 135 #[salsa::invoke(ConstData::static_data_query)]
136 fn static_data(&self, konst: Static) -> Arc<ConstData>; 136 fn static_data(&self, konst: Static) -> Arc<ConstData>;
137 137
138 #[salsa::invoke(crate::lang_item::LangItems::module_lang_items_query)] 138 #[salsa::invoke(LangItems::module_lang_items_query)]
139 fn module_lang_items(&self, module: Module) -> Option<Arc<LangItems>>; 139 fn module_lang_items(&self, module: Module) -> Option<Arc<LangItems>>;
140 140
141 #[salsa::invoke(crate::lang_item::LangItems::crate_lang_items_query)] 141 #[salsa::invoke(LangItems::crate_lang_items_query)]
142 fn crate_lang_items(&self, krate: Crate) -> Arc<LangItems>; 142 fn crate_lang_items(&self, krate: Crate) -> Arc<LangItems>;
143 143
144 #[salsa::invoke(crate::lang_item::LangItems::lang_item_query)] 144 #[salsa::invoke(LangItems::lang_item_query)]
145 fn lang_item(&self, start_crate: Crate, item: SmolStr) -> Option<LangItemTarget>; 145 fn lang_item(&self, start_crate: Crate, item: SmolStr) -> Option<LangItemTarget>;
146 146
147 #[salsa::invoke(crate::code_model::docs::documentation_query)] 147 #[salsa::invoke(crate::code_model::docs::documentation_query)]
diff --git a/crates/ra_hir/src/debug.rs b/crates/ra_hir/src/debug.rs
index 87f3180c3..48b69000b 100644
--- a/crates/ra_hir/src/debug.rs
+++ b/crates/ra_hir/src/debug.rs
@@ -22,7 +22,7 @@ use std::fmt;
22 22
23use ra_db::{CrateId, FileId}; 23use ra_db::{CrateId, FileId};
24 24
25use crate::{db::HirDatabase, Crate, Module, Name}; 25use crate::{db::HirDatabase, Crate, HirFileId, Module, Name};
26 26
27impl Crate { 27impl Crate {
28 pub fn debug(self, db: &impl HirDebugDatabase) -> impl fmt::Debug + '_ { 28 pub fn debug(self, db: &impl HirDebugDatabase) -> impl fmt::Debug + '_ {
@@ -36,6 +36,12 @@ impl Module {
36 } 36 }
37} 37}
38 38
39impl HirFileId {
40 pub fn debug(self, db: &impl HirDebugDatabase) -> impl fmt::Debug + '_ {
41 debug_fn(move |fmt| db.debug_hir_file_id(self, fmt))
42 }
43}
44
39pub trait HirDebugHelper: HirDatabase { 45pub trait HirDebugHelper: HirDatabase {
40 fn crate_name(&self, _krate: CrateId) -> Option<String> { 46 fn crate_name(&self, _krate: CrateId) -> Option<String> {
41 None 47 None
@@ -48,6 +54,7 @@ pub trait HirDebugHelper: HirDatabase {
48pub trait HirDebugDatabase { 54pub trait HirDebugDatabase {
49 fn debug_crate(&self, krate: Crate, fmt: &mut fmt::Formatter<'_>) -> fmt::Result; 55 fn debug_crate(&self, krate: Crate, fmt: &mut fmt::Formatter<'_>) -> fmt::Result;
50 fn debug_module(&self, module: Module, fmt: &mut fmt::Formatter<'_>) -> fmt::Result; 56 fn debug_module(&self, module: Module, fmt: &mut fmt::Formatter<'_>) -> fmt::Result;
57 fn debug_hir_file_id(&self, file_id: HirFileId, fmt: &mut fmt::Formatter<'_>) -> fmt::Result;
51} 58}
52 59
53impl<DB: HirDebugHelper> HirDebugDatabase for DB { 60impl<DB: HirDebugHelper> HirDebugDatabase for DB {
@@ -62,12 +69,19 @@ impl<DB: HirDebugHelper> HirDebugDatabase for DB {
62 69
63 fn debug_module(&self, module: Module, fmt: &mut fmt::Formatter<'_>) -> fmt::Result { 70 fn debug_module(&self, module: Module, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
64 let file_id = module.definition_source(self).file_id.original_file(self); 71 let file_id = module.definition_source(self).file_id.original_file(self);
65 let path = self.file_path(file_id); 72 let path = self.file_path(file_id).unwrap_or_else(|| "N/A".to_string());
66 fmt.debug_struct("Module") 73 fmt.debug_struct("Module")
67 .field("name", &module.name(self).unwrap_or_else(Name::missing)) 74 .field("name", &module.name(self).unwrap_or_else(Name::missing))
68 .field("path", &path.unwrap_or_else(|| "N/A".to_string())) 75 .field("path", &path)
69 .finish() 76 .finish()
70 } 77 }
78
79 fn debug_hir_file_id(&self, file_id: HirFileId, fmt: &mut fmt::Formatter<'_>) -> fmt::Result {
80 let original = file_id.original_file(self);
81 let path = self.file_path(original).unwrap_or_else(|| "N/A".to_string());
82 let is_macro = file_id != original.into();
83 fmt.debug_struct("HirFileId").field("path", &path).field("macro", &is_macro).finish()
84 }
71} 85}
72 86
73fn debug_fn(f: impl Fn(&mut fmt::Formatter<'_>) -> fmt::Result) -> impl fmt::Debug { 87fn debug_fn(f: impl Fn(&mut fmt::Formatter<'_>) -> fmt::Result) -> impl fmt::Debug {
diff --git a/crates/ra_hir/src/from_source.rs b/crates/ra_hir/src/from_source.rs
index a012f33f7..f80d8eb5f 100644
--- a/crates/ra_hir/src/from_source.rs
+++ b/crates/ra_hir/src/from_source.rs
@@ -189,14 +189,14 @@ impl Module {
189 ModuleSource::SourceFile(_) => None, 189 ModuleSource::SourceFile(_) => None,
190 }; 190 };
191 191
192 let source_root_id = db.file_source_root(src.file_id.original_file(db)); 192 db.relevant_crates(src.file_id.original_file(db))
193 db.source_root_crates(source_root_id).iter().map(|&crate_id| Crate { crate_id }).find_map( 193 .iter()
194 |krate| { 194 .map(|&crate_id| Crate { crate_id })
195 .find_map(|krate| {
195 let def_map = db.crate_def_map(krate); 196 let def_map = db.crate_def_map(krate);
196 let module_id = def_map.find_module_by_source(src.file_id, decl_id)?; 197 let module_id = def_map.find_module_by_source(src.file_id, decl_id)?;
197 Some(Module { krate, module_id }) 198 Some(Module { krate, module_id })
198 }, 199 })
199 )
200 } 200 }
201} 201}
202 202
diff --git a/crates/ra_hir/src/ids.rs b/crates/ra_hir/src/ids.rs
index a3b65cc79..499dcafea 100644
--- a/crates/ra_hir/src/ids.rs
+++ b/crates/ra_hir/src/ids.rs
@@ -50,16 +50,6 @@ impl HirFileId {
50 } 50 }
51 } 51 }
52 52
53 /// XXX: this is a temporary function, which should go away when we implement the
54 /// nameresolution+macro expansion combo. Prefer using `original_file` if
55 /// possible.
56 pub fn as_original_file(self) -> FileId {
57 match self.0 {
58 HirFileIdRepr::File(file_id) => file_id,
59 HirFileIdRepr::Macro(_r) => panic!("macro generated file: {:?}", self),
60 }
61 }
62
63 /// Get the crate which the macro lives in, if it is a macro file. 53 /// Get the crate which the macro lives in, if it is a macro file.
64 pub(crate) fn macro_crate(self, db: &impl AstDatabase) -> Option<Crate> { 54 pub(crate) fn macro_crate(self, db: &impl AstDatabase) -> Option<Crate> {
65 match self.0 { 55 match self.0 {
@@ -95,11 +85,7 @@ impl HirFileId {
95 // Note: 85 // Note:
96 // The final goal we would like to make all parse_macro success, 86 // The final goal we would like to make all parse_macro success,
97 // such that the following log will not call anyway. 87 // such that the following log will not call anyway.
98 log::warn!( 88 log::warn!("fail on macro_parse: (reason: {})", err,);
99 "fail on macro_parse: (reason: {}) {}",
100 err,
101 macro_call_id.debug_dump(db)
102 );
103 }) 89 })
104 .ok()?; 90 .ok()?;
105 match macro_file.macro_file_kind { 91 match macro_file.macro_file_kind {
@@ -377,35 +363,6 @@ impl AstItemDef<ast::TypeAliasDef> for TypeAliasId {
377 } 363 }
378} 364}
379 365
380impl MacroCallId {
381 pub fn debug_dump(self, db: &impl AstDatabase) -> String {
382 let loc = self.loc(db);
383 let node = loc.ast_id.to_node(db);
384 let syntax_str = {
385 let mut res = String::new();
386 node.syntax().text().for_each_chunk(|chunk| {
387 if !res.is_empty() {
388 res.push(' ')
389 }
390 res.push_str(chunk)
391 });
392 res
393 };
394
395 // dump the file name
396 let file_id: HirFileId = self.loc(db).ast_id.file_id();
397 let original = file_id.original_file(db);
398 let macro_rules = db.macro_def(loc.def);
399
400 format!(
401 "macro call [file: {:?}] : {}\nhas rules: {}",
402 db.file_relative_path(original),
403 syntax_str,
404 macro_rules.is_some()
405 )
406 }
407}
408
409/// This exists just for Chalk, because Chalk just has a single `StructId` where 366/// This exists just for Chalk, because Chalk just has a single `StructId` where
410/// we have different kinds of ADTs, primitive types and special type 367/// we have different kinds of ADTs, primitive types and special type
411/// constructors like tuples and function pointers. 368/// constructors like tuples and function pointers.
diff --git a/crates/ra_hir/src/impl_block.rs b/crates/ra_hir/src/impl_block.rs
index 55dfc393b..33ef87563 100644
--- a/crates/ra_hir/src/impl_block.rs
+++ b/crates/ra_hir/src/impl_block.rs
@@ -176,6 +176,25 @@ pub struct ModuleImplBlocks {
176} 176}
177 177
178impl ModuleImplBlocks { 178impl ModuleImplBlocks {
179 pub(crate) fn impls_in_module_with_source_map_query(
180 db: &(impl DefDatabase + AstDatabase),
181 module: Module,
182 ) -> (Arc<ModuleImplBlocks>, Arc<ImplSourceMap>) {
183 let mut source_map = ImplSourceMap::default();
184 let crate_graph = db.crate_graph();
185 let cfg_options = crate_graph.cfg_options(module.krate.crate_id());
186
187 let result = ModuleImplBlocks::collect(db, cfg_options, module, &mut source_map);
188 (Arc::new(result), Arc::new(source_map))
189 }
190
191 pub(crate) fn impls_in_module_query(
192 db: &impl DefDatabase,
193 module: Module,
194 ) -> Arc<ModuleImplBlocks> {
195 db.impls_in_module_with_source_map(module).0
196 }
197
179 fn collect( 198 fn collect(
180 db: &(impl DefDatabase + AstDatabase), 199 db: &(impl DefDatabase + AstDatabase),
181 cfg_options: &CfgOptions, 200 cfg_options: &CfgOptions,
@@ -264,19 +283,3 @@ impl ModuleImplBlocks {
264 } 283 }
265 } 284 }
266} 285}
267
268pub(crate) fn impls_in_module_with_source_map_query(
269 db: &(impl DefDatabase + AstDatabase),
270 module: Module,
271) -> (Arc<ModuleImplBlocks>, Arc<ImplSourceMap>) {
272 let mut source_map = ImplSourceMap::default();
273 let crate_graph = db.crate_graph();
274 let cfg_options = crate_graph.cfg_options(module.krate.crate_id());
275
276 let result = ModuleImplBlocks::collect(db, cfg_options, module, &mut source_map);
277 (Arc::new(result), Arc::new(source_map))
278}
279
280pub(crate) fn impls_in_module(db: &impl DefDatabase, module: Module) -> Arc<ModuleImplBlocks> {
281 db.impls_in_module_with_source_map(module).0
282}
diff --git a/crates/ra_hir/src/lib.rs b/crates/ra_hir/src/lib.rs
index 4340e9d34..ca261e8f5 100644
--- a/crates/ra_hir/src/lib.rs
+++ b/crates/ra_hir/src/lib.rs
@@ -51,6 +51,7 @@ mod lang_item;
51mod generics; 51mod generics;
52mod resolve; 52mod resolve;
53pub mod diagnostics; 53pub mod diagnostics;
54mod util;
54 55
55mod code_model; 56mod code_model;
56 57
@@ -71,7 +72,7 @@ pub use self::{
71 either::Either, 72 either::Either,
72 expr::ExprScopes, 73 expr::ExprScopes,
73 from_source::FromSource, 74 from_source::FromSource,
74 generics::{GenericParam, GenericParams, HasGenericParams}, 75 generics::{GenericDef, GenericParam, GenericParams, HasGenericParams},
75 ids::{HirFileId, MacroCallId, MacroCallLoc, MacroDefId, MacroFile}, 76 ids::{HirFileId, MacroCallId, MacroCallLoc, MacroDefId, MacroFile},
76 impl_block::ImplBlock, 77 impl_block::ImplBlock,
77 name::Name, 78 name::Name,
diff --git a/crates/ra_hir/src/mock.rs b/crates/ra_hir/src/mock.rs
index f750986b8..0b278deb3 100644
--- a/crates/ra_hir/src/mock.rs
+++ b/crates/ra_hir/src/mock.rs
@@ -5,10 +5,10 @@ use std::{panic, sync::Arc};
5use parking_lot::Mutex; 5use parking_lot::Mutex;
6use ra_cfg::CfgOptions; 6use ra_cfg::CfgOptions;
7use ra_db::{ 7use ra_db::{
8 salsa, CrateGraph, CrateId, Edition, FileId, FilePosition, SourceDatabase, SourceRoot, 8 salsa, CrateGraph, CrateId, Edition, FileId, FileLoader, FileLoaderDelegate, FilePosition,
9 SourceRootId, 9 SourceDatabase, SourceDatabaseExt, SourceRoot, SourceRootId,
10}; 10};
11use relative_path::RelativePathBuf; 11use relative_path::{RelativePath, RelativePathBuf};
12use rustc_hash::FxHashMap; 12use rustc_hash::FxHashMap;
13use test_utils::{extract_offset, parse_fixture, CURSOR_MARKER}; 13use test_utils::{extract_offset, parse_fixture, CURSOR_MARKER};
14 14
@@ -17,6 +17,7 @@ use crate::{db, debug::HirDebugHelper, diagnostics::DiagnosticSink};
17pub const WORKSPACE: SourceRootId = SourceRootId(0); 17pub const WORKSPACE: SourceRootId = SourceRootId(0);
18 18
19#[salsa::database( 19#[salsa::database(
20 ra_db::SourceDatabaseExtStorage,
20 ra_db::SourceDatabaseStorage, 21 ra_db::SourceDatabaseStorage,
21 db::InternDatabaseStorage, 22 db::InternDatabaseStorage,
22 db::AstDatabaseStorage, 23 db::AstDatabaseStorage,
@@ -34,6 +35,22 @@ pub struct MockDatabase {
34 35
35impl panic::RefUnwindSafe for MockDatabase {} 36impl panic::RefUnwindSafe for MockDatabase {}
36 37
38impl FileLoader for MockDatabase {
39 fn file_text(&self, file_id: FileId) -> Arc<String> {
40 FileLoaderDelegate(self).file_text(file_id)
41 }
42 fn resolve_relative_path(
43 &self,
44 anchor: FileId,
45 relative_path: &RelativePath,
46 ) -> Option<FileId> {
47 FileLoaderDelegate(self).resolve_relative_path(anchor, relative_path)
48 }
49 fn relevant_crates(&self, file_id: FileId) -> Arc<Vec<CrateId>> {
50 FileLoaderDelegate(self).relevant_crates(file_id)
51 }
52}
53
37impl HirDebugHelper for MockDatabase { 54impl HirDebugHelper for MockDatabase {
38 fn crate_name(&self, krate: CrateId) -> Option<String> { 55 fn crate_name(&self, krate: CrateId) -> Option<String> {
39 self.crate_names.get(&krate).cloned() 56 self.crate_names.get(&krate).cloned()
@@ -278,7 +295,10 @@ macro_rules! crate_graph {