diff --git a/Cargo.lock b/Cargo.lock index ef51f34cbf2..48a2e9a0d89 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,18 +2,28 @@ name = "rls" version = "0.1.0" dependencies = [ + "cargo 0.16.0", "derive-new 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "hyper 0.9.13 (registry+https://github.com/rust-lang/crates.io-index)", + "hyper 0.9.14 (registry+https://github.com/rust-lang/crates.io-index)", "languageserver-types 0.5.0 (git+https://github.com/gluon-lang/languageserver-types)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "racer 2.0.0 (git+https://github.com/phildawes/racer)", "rls-analysis 0.1.0 (git+https://github.com/nrc/rls-analysis)", "rls-vfs 0.1.0 (git+https://github.com/nrc/rls-vfs)", "rustfmt 0.6.3 (git+https://github.com/rust-lang-nursery/rustfmt)", - "serde 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 0.8.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "advapi32-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -34,9 +44,49 @@ name = "bitflags" version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "cargo" +version = "0.16.0" +dependencies = [ + "advapi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "crates-io 0.4.0", + "crossbeam 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", + "curl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "docopt 0.6.86 (registry+https://github.com/rust-lang/crates.io-index)", + "env_logger 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "filetime 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "flate2 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)", + "fs2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "git2 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "git2-curl 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "libgit2-sys 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "miow 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", + "num_cpus 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "psapi-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "semver 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "tar 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)", + "tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", + "term 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", + "toml 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "cfg-if" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "clap" -version = "2.19.1" +version = "2.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -49,13 +99,60 @@ dependencies = [ "vec_map 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "cmake" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gcc 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "cookie" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crates-io" +version = "0.4.0" +dependencies = [ + "curl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "crossbeam" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "curl" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "curl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-probe 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "curl-sys" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gcc 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "libz-sys 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -72,6 +169,17 @@ name = "diff" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "docopt" +version = "0.6.86" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "strsim 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "dtoa" version = "0.2.2" @@ -94,11 +202,81 @@ dependencies = [ "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "filetime" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "flate2" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "miniz-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "fs2" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "gcc" +version = "0.3.40" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "gdi32-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "getopts" version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "git2" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "libgit2-sys 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-probe 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "git2-curl" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "curl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "git2 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "glob" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "hpack" version = "0.2.0" @@ -114,7 +292,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "hyper" -version = "0.9.13" +version = "0.9.14" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "cookie 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -123,13 +301,13 @@ dependencies = [ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "mime 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "num_cpus 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", "solicit 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.35 (registry+https://github.com/rust-lang/crates.io-index)", "traitobject 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "typeable 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "unicase 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -172,17 +350,59 @@ version = "0.5.0" source = "git+https://github.com/gluon-lang/languageserver-types#7c747c9a5d9ec9879b111e7ca583da650d0d86c1" dependencies = [ "enum_primitive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 0.8.4 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "lazy_static" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "libc" version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "libgit2-sys" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cmake 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "curl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", + "gcc 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "libssh2-sys 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "libz-sys 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libssh2-sys" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cmake 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "libz-sys 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "libz-sys" +version = "1.0.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gcc 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "log" version = "0.3.6" @@ -209,11 +429,43 @@ dependencies = [ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "miniz-sys" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gcc 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "miow" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "net2 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "multimap" version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "net2" +version = "0.2.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "num" version = "0.1.36" @@ -254,6 +506,47 @@ dependencies = [ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "openssl" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "openssl-sys 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "openssl-probe" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "openssl-sys" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", + "pkg-config 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", + "user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "pkg-config" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "psapi-sys" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "quote" version = "0.2.3" @@ -267,9 +560,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "racer" version = "2.0.0" -source = "git+https://github.com/phildawes/racer#fbfa038372878a08451c5c466d0fc943758b3c0e" +source = "git+https://github.com/phildawes/racer#9074593bc23b6ec8a0cdf5afae1fbf9152196d22" dependencies = [ - "clap 2.19.1 (registry+https://github.com/rust-lang/crates.io-index)", + "clap 2.19.2 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "syntex_errors 0.52.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -278,6 +571,14 @@ dependencies = [ "typed-arena 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "rand" +version = "0.3.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "regex" version = "0.1.80" @@ -298,20 +599,20 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "rls-analysis" version = "0.1.0" -source = "git+https://github.com/nrc/rls-analysis#d2a5957aaac401fb2ec0ec6d39c7f15097dfa5f8" +source = "git+https://github.com/nrc/rls-analysis#688b16b169731688d371b7500e7a47f67647bec9" dependencies = [ "derive-new 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_json 0.8.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "rls-vfs" version = "0.1.0" -source = "git+https://github.com/nrc/rls-vfs#3eb09adde6c443149c9a926bb5d073645d1e0bfe" +source = "git+https://github.com/nrc/rls-vfs#7dd3b7f5eb85bedbb419306df2368be17d3d8e1c" dependencies = [ "racer 2.0.0 (git+https://github.com/phildawes/racer)", "rls-analysis 0.1.0 (git+https://github.com/nrc/rls-analysis)", @@ -319,7 +620,7 @@ dependencies = [ [[package]] name = "rustc-serialize" -version = "0.3.21" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -333,7 +634,7 @@ dependencies = [ [[package]] name = "rustfmt" version = "0.6.3" -source = "git+https://github.com/rust-lang-nursery/rustfmt#56469a87453e9c8e1b65787d763626442d5a6345" +source = "git+https://github.com/rust-lang-nursery/rustfmt#22ddc36b179fadd2a2e67990b46240f9551a7d9e" dependencies = [ "diff 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", "env_logger 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", @@ -344,7 +645,7 @@ dependencies = [ "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", "multimap 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", "strings 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "syntex_errors 0.50.0 (registry+https://github.com/rust-lang/crates.io-index)", "syntex_syntax 0.50.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -360,24 +661,41 @@ name = "semver" version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "semver" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "semver-parser 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "semver-parser" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "serde" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "serde_codegen" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "quote 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_codegen_internals 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_codegen_internals 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)", "syn 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_codegen_internals" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "syn 0.10.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -385,21 +703,21 @@ dependencies = [ [[package]] name = "serde_derive" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "serde_codegen 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_codegen 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "serde_json" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "dtoa 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", "itoa 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "num-traits 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -449,7 +767,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", "syntex_pos 0.50.0 (registry+https://github.com/rust-lang/crates.io-index)", "term 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -462,7 +780,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", "syntex_pos 0.52.0 (registry+https://github.com/rust-lang/crates.io-index)", "term 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -473,7 +791,7 @@ name = "syntex_pos" version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rustc-serialize 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -481,7 +799,7 @@ name = "syntex_pos" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rustc-serialize 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -492,7 +810,7 @@ dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", "syntex_errors 0.50.0 (registry+https://github.com/rust-lang/crates.io-index)", "syntex_pos 0.50.0 (registry+https://github.com/rust-lang/crates.io-index)", "term 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -507,13 +825,30 @@ dependencies = [ "bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", "syntex_errors 0.52.0 (registry+https://github.com/rust-lang/crates.io-index)", "syntex_pos 0.52.0 (registry+https://github.com/rust-lang/crates.io-index)", "term 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", "unicode-xid 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "tar" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "filetime 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "tempdir" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "term" version = "0.4.4" @@ -565,7 +900,7 @@ name = "toml" version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rustc-serialize 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -573,7 +908,7 @@ name = "toml" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "rustc-serialize 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -629,12 +964,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "url" -version = "1.2.3" +version = "1.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "idna 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "user32-sys" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -666,54 +1010,93 @@ name = "winapi-build" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "ws2_32-sys" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [metadata] +"checksum advapi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e06588080cb19d0acb6739808aafa5f26bfb2ca015b2b6370028b44cf7cb8a9a" "checksum aho-corasick 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)" = "ca972c2ea5f742bfce5687b9aef75506a764f61d37f8f649047846a9686ddb66" "checksum ansi_term 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "23ac7c30002a5accbf7e8987d0632fa6de155b7c3d39d0067317a391e00a2ef6" "checksum bitflags 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "aad18937a628ec6abcd26d1489012cc0e18c21798210f491af69ded9b881106d" -"checksum clap 2.19.1 (registry+https://github.com/rust-lang/crates.io-index)" = "956cee0b2427dd9e71129a509d1ef17a7f5df9f8253924074d7a5d79bc61851e" +"checksum cfg-if 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de1e760d7b6535af4241fca8bd8adf68e2e7edacc6b29f5d399050c5e48cf88c" +"checksum clap 2.19.2 (registry+https://github.com/rust-lang/crates.io-index)" = "305ad043f009db535a110200541d4567b63e172b1fe030313fbb92565da7ed24" +"checksum cmake 0.1.19 (registry+https://github.com/rust-lang/crates.io-index)" = "8ebde6558caa6cf9bffe5750c66c517e7f9d470d59fcd48b0acbc0a02d62a82a" "checksum cookie 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "0e3d6405328b6edb412158b3b7710e2634e23f3614b9bb1c412df7952489a626" +"checksum crossbeam 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0c5ea215664ca264da8a9d9c3be80d2eaf30923c259d03e870388eb927508f97" +"checksum curl 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fd5a1fdcebdb1a59578c5583e66ffed2d13850eac4f51ff730edf6dd6111eac" +"checksum curl-sys 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "218a149208e1f4e5f7e20f1d0ed1e9431a086a6b4333ff95dba82237be9c283a" "checksum derive-new 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "41be6ca3b99e0c0483fb2389685448f650459c3ecbe4e18d7705d8010ec4ab8e" "checksum diff 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e48977eec6d3b7707462c2dc2e1363ad91b5dd822cf942537ccdc2085dc87587" +"checksum docopt 0.6.86 (registry+https://github.com/rust-lang/crates.io-index)" = "4a7ef30445607f6fc8720f0a0a2c7442284b629cf0d049286860fae23e71c4d9" "checksum dtoa 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "0dd841b58510c9618291ffa448da2e4e0f699d984d436122372f446dae62263d" "checksum enum_primitive 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "f79eff5be92a4d7d5bddf7daa7d650717ea71628634efe6ca7bcda85b2183c23" "checksum env_logger 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "15abd780e45b3ea4f76b4e9a26ff4843258dd8a3eed2775a0e7368c2e7936c2f" +"checksum filetime 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "5363ab8e4139b8568a6237db5248646e5a8a2f89bd5ccb02092182b11fd3e922" +"checksum flate2 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "3eeb481e957304178d2e782f2da1257f1434dfecbae883bafb61ada2a9fea3bb" +"checksum fs2 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "640001e1bd865c7c32806292822445af576a6866175b5225aa2087ca5e3de551" +"checksum gcc 0.3.40 (registry+https://github.com/rust-lang/crates.io-index)" = "872db9e59486ef2b14f8e8c10e9ef02de2bccef6363d7f34835dedb386b3d950" +"checksum gdi32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0912515a8ff24ba900422ecda800b52f4016a56251922d397c576bf92c690518" "checksum getopts 0.2.14 (registry+https://github.com/rust-lang/crates.io-index)" = "d9047cfbd08a437050b363d35ef160452c5fe8ea5187ae0a624708c91581d685" +"checksum git2 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "0534ca86640c6a3a0687cc6bee9ec4032509a0d112d97e8241fa6b7e075f6119" +"checksum git2-curl 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "68676bc784bf0bef83278898929bf64a251e87c0340723d0b93fa096c9c5bf8e" +"checksum glob 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "8be18de09a56b60ed0edf84bc9df007e30040691af7acd1c41874faac5895bfb" "checksum hpack 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3d2da7d3a34cf6406d9d700111b8eafafe9a251de41ae71d8052748259343b58" "checksum httparse 1.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a6e7a63e511f9edffbab707141fbb8707d1a3098615fb2adbd5769cdfcc9b17d" -"checksum hyper 0.9.13 (registry+https://github.com/rust-lang/crates.io-index)" = "86ea0c0ff7e6ef09eff72234800ddb48b6263277936e7ecd6ecd3250345d705f" +"checksum hyper 0.9.14 (registry+https://github.com/rust-lang/crates.io-index)" = "bcb3fc65554155980167fb821d05c7c66177f92464976c0b676a19d9e03387a7" "checksum idna 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1053236e00ce4f668aeca4a769a09b3bf5a682d802abd6f3cb39374f6b162c11" "checksum itertools 0.4.19 (registry+https://github.com/rust-lang/crates.io-index)" = "c4a9b56eb56058f43dc66e58f40a214b2ccbc9f3df51861b63d51dec7b65bc3f" "checksum itoa 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ae3088ea4baeceb0284ee9eea42f591226e6beaecf65373e41b38d95a1b8e7a1" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" "checksum languageserver-types 0.5.0 (git+https://github.com/gluon-lang/languageserver-types)" = "" +"checksum lazy_static 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6abe0ee2e758cd6bc8a2cd56726359007748fbf4128da998b65d0b70f881e19b" "checksum libc 0.2.18 (registry+https://github.com/rust-lang/crates.io-index)" = "a51822fc847e7a8101514d1d44e354ba2ffa7d4c194dcab48870740e327cac70" +"checksum libgit2-sys 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "502e50bcdcfa98df366bdd54935bff856f4cf11f725daa608092c0288205887a" +"checksum libssh2-sys 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "ed089186abb468a78f7170177304751805e33c20e7aef4b8298884ce2080b5de" +"checksum libz-sys 1.0.10 (registry+https://github.com/rust-lang/crates.io-index)" = "905c72a0c260bcd89ddca5afa1c46bebd29b52878a3d58c86865ea42402f88e6" "checksum log 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)" = "ab83497bf8bf4ed2a74259c1c802351fcd67a65baa86394b6ba73c36f4838054" "checksum matches 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "efd7622e3022e1a6eaa602c4cea8912254e5582c9c692e9167714182244801b1" "checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20" "checksum mime 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "b5c93a4bd787ddc6e7833c519b73a50883deb5863d76d9b71eb8216fb7f94e66" +"checksum miniz-sys 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9d1f4d337a01c32e1f2122510fed46393d53ca35a7f429cb0450abaedfa3ed54" +"checksum miow 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)" = "c6b54090eaa23880441a80c4adec5fd6b4af1152a49c5e78f96a82469abc6942" "checksum multimap 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9223f4774d08e06185e44e555b9a7561243d387bac49c78a6205c42d6975fbf2" +"checksum net2 0.2.26 (registry+https://github.com/rust-lang/crates.io-index)" = "5edf9cb6be97212423aed9413dd4729d62b370b5e1c571750e882cebbbc1e3e2" "checksum num 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)" = "bde7c03b09e7c6a301ee81f6ddf66d7a28ec305699e3d3b056d2fc56470e3120" "checksum num-integer 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "fb24d9bfb3f222010df27995441ded1e954f8f69cd35021f6bef02ca9552fb92" "checksum num-iter 0.1.32 (registry+https://github.com/rust-lang/crates.io-index)" = "287a1c9969a847055e1122ec0ea7a5c5d6f72aad97934e131c83d5c08ab4e45c" "checksum num-traits 0.1.36 (registry+https://github.com/rust-lang/crates.io-index)" = "a16a42856a256b39c6d3484f097f6713e14feacd9bfb02290917904fae46c81c" "checksum num_cpus 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "55aabf4e2d6271a2e4e4c0f2ea1f5b07cc589cc1a9e9213013b54a76678ca4f3" +"checksum openssl 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "12be61c7eaa23228316ff02c39807e4c1b1af84ba81420f19fd58dade304b25c" +"checksum openssl-probe 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "756d49c8424483a3df3b5d735112b4da22109ced9a8294f1f5cdf80fb3810919" +"checksum openssl-sys 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "d2845e841700e7b04282ceaa115407ea84e0db918ae689ad9ceb6f06fa6046bd" +"checksum pkg-config 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "8cee804ecc7eaf201a4a207241472cc870e825206f6c031e3ee2a72fa425f2fa" +"checksum psapi-sys 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "abcd5d1a07d360e29727f757a9decb3ce8bc6e0efa8969cfaad669a8317a2478" "checksum quote 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4c5cf478fe1006dbcc72567121d23dbdae5f1632386068c5c86ff4f645628504" "checksum quote 0.3.10 (registry+https://github.com/rust-lang/crates.io-index)" = "6732e32663c9c271bfc7c1823486b471f18c47a2dbf87c066897b7b51afc83be" "checksum racer 2.0.0 (git+https://github.com/phildawes/racer)" = "" +"checksum rand 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "022e0636ec2519ddae48154b028864bdce4eaf7d35226ab8e65c611be97b189d" "checksum regex 0.1.80 (registry+https://github.com/rust-lang/crates.io-index)" = "4fd4ace6a8cf7860714a2c2280d6c1f7e6a413486c13298bbc86fd3da019402f" "checksum regex-syntax 0.3.9 (registry+https://github.com/rust-lang/crates.io-index)" = "f9ec002c35e86791825ed294b50008eea9ddfc8def4420124fbc6b08db834957" "checksum rls-analysis 0.1.0 (git+https://github.com/nrc/rls-analysis)" = "" "checksum rls-vfs 0.1.0 (git+https://github.com/nrc/rls-vfs)" = "" -"checksum rustc-serialize 0.3.21 (registry+https://github.com/rust-lang/crates.io-index)" = "bff9fc1c79f2dec76b253273d07682e94a978bd8f132ded071188122b2af9818" +"checksum rustc-serialize 0.3.22 (registry+https://github.com/rust-lang/crates.io-index)" = "237546c689f20bb44980270c73c3b9edd0891c1be49cc1274406134a66d3957b" "checksum rustc_version 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "c5f5376ea5e30ce23c03eb77cbe4962b988deead10910c372b226388b594c084" "checksum rustfmt 0.6.3 (git+https://github.com/rust-lang-nursery/rustfmt)" = "" "checksum semver 0.1.20 (registry+https://github.com/rust-lang/crates.io-index)" = "d4f410fedcf71af0345d7607d246e7ad15faaadd49d240ee3b24e5dc21a820ac" -"checksum serde 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)" = "58a19c0871c298847e6b68318484685cd51fa5478c0c905095647540031356e5" -"checksum serde_codegen 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)" = "ce29a6ae259579707650ec292199b5fed2c0b8e2a4bdc994452d24d1bcf2242a" -"checksum serde_codegen_internals 0.11.1 (registry+https://github.com/rust-lang/crates.io-index)" = "59933a62554548c690d2673c5164f0c4a46be7c5731edfd94b0ecb1048940732" -"checksum serde_derive 0.8.19 (registry+https://github.com/rust-lang/crates.io-index)" = "a4b541549c4207d3602c9abcc3e31252e91751674264eb85c103bb20197054b4" -"checksum serde_json 0.8.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1cb6b19e74d9f65b9d03343730b643d729a446b29376785cd65efdff4675e2fc" +"checksum semver 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ae2ff60ecdb19c255841c066cbfa5f8c2a4ada1eb3ae47c77ab6667128da71f5" +"checksum semver-parser 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "e88e43a5a74dd2a11707f9c21dfd4a423c66bd871df813227bb0a3e78f3a1ae9" +"checksum serde 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)" = "793aa8d4a777e46a68bbf88998cd957e638427ba5bfb0de22c92ff277b65bd21" +"checksum serde_codegen 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)" = "460354e47fffa7cf0c96fcf9a040fd170e957f43dd8032531083866eb4a51c11" +"checksum serde_codegen_internals 0.11.2 (registry+https://github.com/rust-lang/crates.io-index)" = "55224f713f022184a1c332dc5c8b1ac634d25a355d54836386771947f12585e0" +"checksum serde_derive 0.8.20 (registry+https://github.com/rust-lang/crates.io-index)" = "18030bce88caabea7707ea4150557377f4b08df5ba3909b2c6a9cb34967c9f30" +"checksum serde_json 0.8.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3f7d3c184d35801fb8b32b46a7d58d57dbcc150b0eb2b46a1eb79645e8ecfd5b" "checksum solicit 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "172382bac9424588d7840732b250faeeef88942e37b6e35317dce98cafdd75b2" "checksum strings 0.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "54f86446ab480b4f60782188f4f78886465c5793aee248cbb48b7fdc0d022420" "checksum strsim 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "67f84c44fbb2f91db7fef94554e6b2ac05909c9c0b0bc23bb98d3a1aebfe7f7c" @@ -725,6 +1108,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum syntex_pos 0.52.0 (registry+https://github.com/rust-lang/crates.io-index)" = "955ef4b16af4c468e4680d1497f873ff288f557d338180649e18f915af5e15ac" "checksum syntex_syntax 0.50.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6ef781e4b60f03431f1b5b59843546ce60ae029a787770cf8e0969ac1fd063a5" "checksum syntex_syntax 0.52.0 (registry+https://github.com/rust-lang/crates.io-index)" = "76a302e717e348aa372ff577791c3832395650073b8d8432f8b3cb170b34afde" +"checksum tar 0.4.9 (registry+https://github.com/rust-lang/crates.io-index)" = "0c9048e27119ff1fcf5b0e147ca0936d911b607d87440b042d4ecaa111b523ee" +"checksum tempdir 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "87974a6f5c1dfb344d733055601650059a3363de2a6104819293baff662132d6" "checksum term 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3deff8a2b3b6607d6d7cc32ac25c0b33709453ca9cceac006caac51e963cf94a" "checksum term_size 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f7f5f3f71b0040cecc71af239414c23fd3c73570f5ff54cf50e03cef637f2a0" "checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03" @@ -741,9 +1126,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum unicode-segmentation 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c3bc443ded17b11305ffffe6b37e2076f328a5a8cb6aa877b1b98f77699e98b5" "checksum unicode-width 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "2d6722facc10989f63ee0e20a83cd4e1714a9ae11529403ac7e0afd069abc39e" "checksum unicode-xid 0.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "36dff09cafb4ec7c8cf0023eb0b686cb6ce65499116a12201c9e11840ca01beb" -"checksum url 1.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "48ccf7bd87a81b769cf84ad556e034541fb90e1cd6d4bc375c822ed9500cd9d7" +"checksum url 1.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f024e241a55f5c88401595adc1d4af0c9649e91da82d0e190fe55950231ae575" +"checksum user32-sys 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "4ef4711d107b21b410a3a974b1204d9accc8b10dad75d8324b5d755de1617d47" "checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f" "checksum vec_map 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cac5efe5cb0fa14ec2f84f83c701c562ee63f6dcc680861b21d65c682adfb05f" "checksum walkdir 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c66c0b9792f0a765345452775f3adbd28dde9d33f30d13e5dcc5ae17cf6f3780" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" +"checksum ws2_32-sys 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" diff --git a/Cargo.toml b/Cargo.toml index 27e4d43a62e..1f4846d3d82 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,6 +4,7 @@ version = "0.1.0" authors = ["Jonathan Turner "] [dependencies] +cargo = { path = "../cargo" } log = "0.3" racer = { git = "https://github.com/phildawes/racer" } rls-analysis = { git = "https://github.com/nrc/rls-analysis" } diff --git a/src/actions.rs b/src/actions.rs index bb74311660c..8146ef07920 100644 --- a/src/actions.rs +++ b/src/actions.rs @@ -63,7 +63,7 @@ impl ActionHandler { pub fn build(&self, project_path: &Path, priority: BuildPriority, out: &Output) { out.notify("textDocument/diagnosticsBegin"); - println!("build {:?}", project_path); + debug!("build {:?}", project_path); let result = self.build_queue.request_build(project_path, priority); match result { BuildResult::Success(ref x) | BuildResult::Failure(ref x) => { diff --git a/src/build.rs b/src/build.rs index 650c7f7a961..ef551378c59 100644 --- a/src/build.rs +++ b/src/build.rs @@ -11,6 +11,11 @@ extern crate rustc_driver; extern crate syntax; +use cargo::core::{PackageId, MultiShell}; +use cargo::ops::cargo_check::{with_check_env, Options}; +use cargo::ops::{compile_with_exec, Executor, Context, ContinueBuild}; +use cargo::util::{Config, ProcessBuilder, ProcessError, homedir}; + use vfs::Vfs; use self::rustc_driver::{RustcDefaultCalls, run_compiler, run}; @@ -18,6 +23,7 @@ use self::syntax::codemap::{FileLoader, RealFileLoader}; use std::collections::HashMap; use std::env; +use std::ffi::OsString; use std::io::{self, Write}; use std::mem; use std::path::{Path, PathBuf}; @@ -51,7 +57,8 @@ use std::time::Duration; /// it was squashed. pub struct BuildQueue { build_dir: Mutex>, - cmd_line_args: Mutex>, + cmd_line_args: Arc>>, + cmd_line_envs: Arc>>>, // True if a build is running. // Note I have been conservative with Ordering when accessing this atomic, // we might be able to do better. @@ -61,7 +68,7 @@ pub struct BuildQueue { vfs: Arc, } -#[derive(Debug, Serialize)] +#[derive(Debug, Serialize, Eq, PartialEq)] pub enum BuildResult { // Build was succesful, argument is warnings. Success(Vec), @@ -95,7 +102,8 @@ impl BuildQueue { pub fn new(vfs: Arc) -> BuildQueue { BuildQueue { build_dir: Mutex::new(None), - cmd_line_args: Mutex::new(vec![]), + cmd_line_args: Arc::new(Mutex::new(vec![])), + cmd_line_envs: Arc::new(Mutex::new(HashMap::new())), running: AtomicBool::new(false), pending: Mutex::new(vec![]), vfs: vfs, @@ -103,7 +111,7 @@ impl BuildQueue { } pub fn request_build(&self, build_dir: &Path, priority: BuildPriority) -> BuildResult { - //println!("request_build, {} {:?}", build_dir, priority); + // println!("request_build, {:?} {:?}", build_dir, priority); // If there is a change in the project directory, then we can forget any // pending build and start straight with this new build. { @@ -133,7 +141,7 @@ impl BuildQueue { let (tx, rx) = channel(); self.pending.lock().unwrap().push(tx); // Blocks. - //println!("blocked on build"); + // println!("blocked on build"); let signal = rx.recv().unwrap_or(Signal::Build); if signal == Signal::Skip { return BuildResult::Squashed; @@ -147,7 +155,7 @@ impl BuildQueue { if self.running.load(Ordering::SeqCst) { // Blocks - //println!("blocked until wake up"); + // println!("blocked until wake up"); let signal = rx.recv().unwrap_or(Signal::Build); if signal == Signal::Skip { return BuildResult::Squashed; @@ -168,7 +176,7 @@ impl BuildQueue { if self.running.swap(true, Ordering::SeqCst) { let mut wait = 100; while self.running.load(Ordering::SeqCst) && wait < 50000 { - //println!("loop of death"); + // println!("loop of death"); thread::sleep(Duration::from_millis(wait)); wait *= 2; } @@ -211,199 +219,184 @@ impl BuildQueue { } } - // Runs a `cargo build`. Note that what we actually run is not at all like - // `cargo build`, except in spirit. + // Build the project. fn build(&self) -> BuildResult { - // When we build we are emulating `cargo build`, but trying to do so as - // quickly as possible (FIXME(#24) we should add an option to do a real `cargo - // build` for when the user wants to actually run the program). - // - // We build with `no-trans` to avoid generating code, and `save-analysis` - // to get the data we need to perform IDE stuff. - // - // `cargo build` first builds all dependent crates, then builds the current - // crate. The tricky bit for us is that there may be unsaved edits to - // the current crate. So we want to `cargo build` the dependent crates, - // then run our own version of rustc on the current crate + our edits. + // When we change build directory (presumably because the IDE is + // changing project), we must do a cargo build of the whole project. + // Otherwise we just use rustc directly. // - // In order to do this we use `cargo rustc`, this runs `cargo build` on - // the dependent crates then applies the given arguments to rustc for - // the last crate. We give a bogus argument which forces an error (so as - // not to waste time building the on-disk crate), and run `cargo` in - // verbose mode which gives us the command line cargo used. We can then - // remove the bogus argument and run that command line ourselves. + // The 'full cargo build' is a `cargo check` customised and run + // in-process. Cargo will shell out to call rustc (this means the + // the compiler available at runtime must match the compiler linked to + // the RLS). All but the last crate are built as normal, we intercept + // the call to the last crate and do our own rustc build. We cache the + // command line args and environment so we can avoid running Cargo in + // the future. // - // Finally, we can also save a little time by caching that command line - // and not running Cargo at all. We assume the dependent crates don't - // change, except in the IDE. If the IDE changes the project directory, - // they might be editing a dependent crate and so we blow away the cached - // command line and run Cargo on the next build. + // Our 'short' rustc build runs rustc directly and in-process (we must + // do this so we can load changed code from the VFS, rather than from + // disk). We get the data we need by building with `-Zsave-analysis`. + + let needs_to_run_cargo = { + let cmd_line_args = self.cmd_line_args.lock().unwrap(); + cmd_line_args.is_empty() + }; - let mut cmd_line_args = self.cmd_line_args.lock().unwrap(); let build_dir = &self.build_dir.lock().unwrap(); let build_dir = build_dir.as_ref().unwrap(); - if cmd_line_args.is_empty() { - let mut cmd = Command::new("cargo"); - // Using rustc rather than build means we can set flags which are - // used only on the last crate. - cmd.arg("rustc"); - cmd.arg("-v"); - cmd.arg("--"); - // We add this argument so we know that the rustc call for the last - // crate will fail to build (no point wasting time when we'll do it - // ourselves later). - cmd.arg("--aBogusArgument"); - cmd.env("RUSTFLAGS", "-Zunstable-options -Zsave-analysis --error-format=json \ - -Zcontinue-parse-after-error -Zno-trans"); - cmd.env("CARGO_TARGET_DIR", &Path::new("target").join("rls")); - cmd.current_dir(build_dir); - - let new_cmd_line_args = match cmd.output() { - Ok(output) => { - let out = String::from_utf8(output.stderr).unwrap(); - // println!("output: `{}`", out); - let exit_str = " Running `"; - - match out.rfind(exit_str) { - Some(i) => { - let remaining = &out[i + exit_str.len() ..]; - let end = remaining.find('`').unwrap(); - let remaining = &remaining[..end]; - - let mut result = vec![]; - - const ARG_STRING_DEFAULT_CAPACITY: usize = 64; - - let mut in_quoted_arg = false; - let mut in_escaped_character = false; - let mut current_arg = String::with_capacity(ARG_STRING_DEFAULT_CAPACITY); - - for c in remaining.chars() { - match (in_escaped_character, in_quoted_arg, c) { - // Opening quote of quoted arg - (false, false, '"') => { } - - // End of current arg - (false, true, '"') | (false, false, ' ') => - if !current_arg.is_empty() { - if current_arg != "--aBogusArgument" { - result.push(current_arg); - } - - current_arg = String::with_capacity(ARG_STRING_DEFAULT_CAPACITY); - }, - - // Part of current arg, regular character - (false, _, c) if c != '\\' => - current_arg.push(c), - - // Part of current arg, beginning of escaped character - (false, _, _) => - in_escaped_character = true, - - // Part of current arg, end of escaped character - (true, _, c) => { - // Paths on Windows contain backslashes and cargo doesn't escape them - if cfg!(windows) && c != '"' { - current_arg.push('\\'); - } - current_arg.push(c); - in_escaped_character = false; - } - } - - if c == '"' { - in_quoted_arg = !in_quoted_arg; - } - } - - if !current_arg.is_empty() { - if current_arg != "--aBogusArgument" { - result.push(current_arg); - } - } - - assert!(!in_quoted_arg); - - result.push("--sysroot".into()); - let home = option_env!("RUSTUP_HOME") - .or(option_env!("MULTIRUST_HOME")); - let toolchain = option_env!("RUSTUP_TOOLCHAIN") - .or(option_env!("MULTIRUST_TOOLCHAIN")); - let sys_root = if let (Some(home), Some(toolchain)) = (home, toolchain) { - format!("{}/toolchains/{}", home, toolchain) - } else { - option_env!("SYSROOT") - .map(|s| s.to_owned()) - .or(Command::new("rustc") - .arg("--print") - .arg("sysroot") - .output() - .ok() - .and_then(|out| String::from_utf8(out.stdout).ok()) - .map(|s| s.trim().to_owned())) - .expect("need to specify SYSROOT env var, \ - or use rustup or multirust") - }; - result.push(sys_root.into()); - - result - } - - None => { - // println!("Couldn't parse stderr: `{}`", out); - return BuildResult::Err; - } - } - } - Err(_) => { - // println!("Error waiting for Cargo process: {:?}", e); - return BuildResult::Err; + if needs_to_run_cargo { + if self.cargo(build_dir.clone()) == BuildResult::Err { + return BuildResult::Err; + } + } + + let cmd_line_args = self.cmd_line_args.lock().unwrap(); + assert!(!cmd_line_args.is_empty()); + let cmd_line_envs = self.cmd_line_envs.lock().unwrap(); + self.rustc(&*cmd_line_args, &*cmd_line_envs, build_dir) + } + + // Runs an in-process instance of Cargo. + fn cargo(&self, build_dir: PathBuf) -> BuildResult { + #[derive(Clone)] + struct RlsExecutor { + cmd_line_args: Arc>>, + cmd_line_envs: Arc>>>, + cur_package_id: Option, + } + + impl RlsExecutor { + fn new(cmd_line_args: Arc>>, cmd_line_envs: Arc>>>) -> RlsExecutor { + RlsExecutor { + cmd_line_args: cmd_line_args, + cmd_line_envs: cmd_line_envs, + cur_package_id: None, } - }; + } + } + + impl Executor for RlsExecutor { + fn init(&mut self, cx: &Context) { + self.cur_package_id = Some(cx.ws + .current_opt() + .expect("No current package in Cargo") + .package_id() + .clone()); + } + + fn exec(&self, cmd: ProcessBuilder, id: &PackageId) -> Result { + if id == self.cur_package_id.as_ref().expect("Executor has not been initialised") { + let mut args: Vec<_> = + cmd.get_args().iter().map(|a| a.clone().into_string().unwrap()).collect(); + + args.insert(0, "rustc".to_owned()); + args.push("--sysroot".to_owned()); + let home = option_env!("RUSTUP_HOME").or(option_env!("MULTIRUST_HOME")); + let toolchain = option_env!("RUSTUP_TOOLCHAIN").or(option_env!("MULTIRUST_TOOLCHAIN")); + let sys_root = if let (Some(home), Some(toolchain)) = (home, toolchain) { + format!("{}/toolchains/{}", home, toolchain) + } else { + option_env!("SYSROOT") + .map(|s| s.to_owned()) + .or(Command::new("rustc") + .arg("--print") + .arg("sysroot") + .output() + .ok() + .and_then(|out| String::from_utf8(out.stdout).ok()) + .map(|s| s.trim().to_owned())) + .expect("need to specify SYSROOT env var, \ + or use rustup or multirust") + }; + args.push(sys_root.to_owned()); + + let envs = cmd.get_envs(); + + { + let mut queue_args = self.cmd_line_args.lock().unwrap(); + *queue_args = args.clone(); + } + { + let mut queue_envs = self.cmd_line_envs.lock().unwrap(); + *queue_envs = envs.clone(); + } - *cmd_line_args = new_cmd_line_args; + Ok(ContinueBuild::Stop) + } else { + cmd.exec()?; + Ok(ContinueBuild::Continue) + } + } } - self.rustc(cmd_line_args.clone(), build_dir) + trace!("cargo - `{:?}`", build_dir); + let mut exec = RlsExecutor::new(self.cmd_line_args.clone(), self.cmd_line_envs.clone()); + + let out = Arc::new(Mutex::new(vec![])); + let err = Arc::new(Mutex::new(vec![])); + let out_clone = out.clone(); + let err_clone = err.clone(); + + // Cargo may or may not spawn threads to run the various builds, since + // we may be in separate threads we need to block and wait our thread. + // However, if Cargo doesn't run a separate thread, then we'll just wait + // forever. Therefore, we spawn an extra thread here to be safe. + let handle = thread::spawn(move || { + env::set_var("CARGO_TARGET_DIR", &Path::new("target").join("rls")); + env::set_var("RUSTFLAGS", + "-Zunstable-options -Zsave-analysis --error-format=json \ + -Zcontinue-parse-after-error"); + let shell = MultiShell::from_write(Box::new(BufWriter(out.clone())), + Box::new(BufWriter(err.clone()))); + let config = Config::new(shell, + build_dir.clone(), + homedir(&build_dir).unwrap()); + with_check_env(Options::default(), &config, |ws, opts| { + compile_with_exec(ws, opts, &mut exec)?; + Ok(Some(())) + }) + .expect("could not run cargo"); + }); + + trace!("cargo stdout {}", String::from_utf8(out_clone.lock().unwrap().to_owned()).unwrap()); + trace!("cargo stderr {}", String::from_utf8(err_clone.lock().unwrap().to_owned()).unwrap()); + + if let Err(_) = handle.join() { + BuildResult::Err + } else { + BuildResult::Success(vec![]) + } } // Runs a single instance of rustc. Runs in-process. - fn rustc(&self, args: Vec, build_dir: &Path) -> BuildResult { - println!("args: `{:?}`", args); + fn rustc(&self, args: &[String], envs: &HashMap>, build_dir: &Path) -> BuildResult { + trace!("rustc - args: `{:?}`, envs: {:?}, build dir: {:?}", args, envs, build_dir); let changed = self.vfs.get_cached_files(); - let _pwd = WorkingDir::push(&Path::new(build_dir)); + let _pwd = Environment::push(&Path::new(build_dir), envs); let buf = Arc::new(Mutex::new(vec![])); let err_buf = buf.clone(); - - //println!("building {} ...", build_dir); - let exit_code = ::std::panic::catch_unwind(|| run(move || { - // Use this struct instead of stderr so we catch most errors. - struct BufWriter(Arc>>); - - impl Write for BufWriter { - fn write(&mut self, buf: &[u8]) -> io::Result { - self.0.lock().unwrap().write(buf) - } - fn flush(&mut self) -> io::Result<()> { - self.0.lock().unwrap().flush() - } - } - - run_compiler(&args, - &mut RustcDefaultCalls, - Some(Box::new(ReplacedFileLoader::new(changed))), - Some(Box::new(BufWriter(buf)))) - })); + let args = args.to_owned(); + + let exit_code = ::std::panic::catch_unwind(|| { + run(move || { + // Replace stderr so we catch most errors. + run_compiler(&args, + &mut RustcDefaultCalls, + Some(Box::new(ReplacedFileLoader::new(changed))), + Some(Box::new(BufWriter(buf)))) + }) + }); // FIXME(#25) given that we are running the compiler directly, there is no need // to serialise either the error messages or save-analysis - we should pass // them both in memory, without using save-analysis. - let stderr_json_msg = - convert_message_to_json_strings(Arc::try_unwrap(err_buf).unwrap().into_inner().unwrap()); + let stderr_json_msg = convert_message_to_json_strings(Arc::try_unwrap(err_buf) + .unwrap() + .into_inner() + .unwrap()); match exit_code { Ok(0) => BuildResult::Success(stderr_json_msg), @@ -413,24 +406,53 @@ impl BuildQueue { } } -// An RAII helper to set and reset the current workind directory. -struct WorkingDir { +// A threadsafe buffer for writing. +struct BufWriter(Arc>>); + +impl Write for BufWriter { + fn write(&mut self, buf: &[u8]) -> io::Result { + self.0.lock().unwrap().write(buf) + } + fn flush(&mut self) -> io::Result<()> { + self.0.lock().unwrap().flush() + } +} + +// An RAII helper to set and reset the current working directory and env vars. +struct Environment { old_dir: PathBuf, + old_vars: HashMap>, } -impl WorkingDir { - fn push(p: &Path) -> WorkingDir { - let result = WorkingDir { +impl Environment { + fn push(p: &Path, envs: &HashMap>) -> Environment { + let mut result = Environment { old_dir: env::current_dir().unwrap(), + old_vars: HashMap::new(), }; + env::set_current_dir(p).unwrap(); + for (k, v) in envs { + result.old_vars.insert(k.to_owned(), env::var_os(k)); + match *v { + Some(ref v) => env::set_var(k, v), + None => env::remove_var(k), + } + } result } } -impl Drop for WorkingDir { +impl Drop for Environment { fn drop(&mut self) { env::set_current_dir(&self.old_dir).unwrap(); + + for (k, v) in &self.old_vars { + match *v { + Some(ref v) => env::set_var(k, v), + None => env::remove_var(k), + } + } } } diff --git a/src/main.rs b/src/main.rs index 7ed6d3c8ec6..0fa4a0bce9e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,6 +11,7 @@ #![feature(rustc_private)] #![feature(proc_macro)] +extern crate cargo; #[macro_use] extern crate derive_new; #[macro_use] diff --git a/src/server.rs b/src/server.rs index 2200a67d3dc..8814f73888f 100644 --- a/src/server.rs +++ b/src/server.rs @@ -312,7 +312,7 @@ impl LsService { Method::ReformatRange(params) => { // FIXME reformats the whole file, not just a range. // FIXME take account of options. - trace!("command(reformat): {:?}", params); + trace!("command(reformat range): {:?}", params); this.handler.reformat(id, params.text_document, &*this.output); } } diff --git a/src/test/mod.rs b/src/test/mod.rs index b1b4dfd9176..92d0cc8fd0d 100644 --- a/src/test/mod.rs +++ b/src/test/mod.rs @@ -438,11 +438,6 @@ impl ls_server::MessageReader for MockRawMsgReader { let message = &self.messages[self.cur.load(Ordering::SeqCst)]; self.cur.fetch_add(1, Ordering::SeqCst); - //let params = message.params.iter().map(|&(k, ref v)| format!("\"{}\":{}", k, v)).collect::>().join(","); - // TODO don't hardcode the id, we should use fresh ids and use them to look up responses - //let result = format!("{{\"method\":\"{}\",\"id\":42,\"params\":{{{}}}}}", message.method, params); - // println!("read_message: `{}`", result); - Some(message.clone()) } } diff --git a/test_data/hello/src/main.rs b/test_data/hello/src/main.rs index 47b0e9e6e60..5d37fd4fcaf 100644 --- a/test_data/hello/src/main.rs +++ b/test_data/hello/src/main.rs @@ -8,7 +8,7 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -fn main() { +pub fn main() { let world = "world"; println!("Hello, {}!", world); }