[package]
name = "rust-analyzer"
version = "0.0.0"
authors = ["rust-analyzer Team"]
homepage = "https://github.com/rust-analyzer/rust-analyzer"
description = "A language server for the Rust programming language"
documentation = "https://rust-analyzer.github.io/manual.html"
license = "MIT OR Apache-2.0"
autobins = false
edition = "2021"
rust-version = "1.65"

[lib]
doctest = false

[[bin]]
name = "rust-analyzer"
path = "src/bin/main.rs"

[dependencies]
anyhow = "1.0.62"
crossbeam-channel = "0.5.5"
dissimilar = "1.0.4"
itertools = "0.10.5"
scip = "0.1.1"
lsp-types = { version = "=0.93.2", features = ["proposed"] }
parking_lot = "0.12.1"
xflags = "0.3.0"
oorandom = "11.1.3"
rustc-hash = "1.1.0"
serde = { version = "1.0.137", features = ["derive"] }
serde_json = { version = "1.0.81", features = ["preserve_order"] }
threadpool = "1.8.1"
rayon = "1.5.3"
num_cpus = "1.13.1"
mimalloc = { version = "0.1.30", default-features = false, optional = true }
lsp-server = { version = "0.7.0", path = "../../lib/lsp-server" }
tracing = "0.1.35"
tracing-subscriber = { version = "0.3.16", default-features = false, features = [
    "env-filter",
    "registry",
    "fmt",
    "tracing-log",
] }
tracing-log = "0.1.3"
tracing-tree = "0.2.1"
always-assert = "0.1.2"

stdx = { path = "../stdx", version = "0.0.0" }
flycheck = { path = "../flycheck", version = "0.0.0" }
ide = { path = "../ide", version = "0.0.0" }
ide-db = { path = "../ide-db", version = "0.0.0" }
profile = { path = "../profile", version = "0.0.0" }
project-model = { path = "../project-model", version = "0.0.0" }
syntax = { path = "../syntax", version = "0.0.0" }
vfs = { path = "../vfs", version = "0.0.0" }
vfs-notify = { path = "../vfs-notify", version = "0.0.0" }
cfg = { path = "../cfg", version = "0.0.0" }
toolchain = { path = "../toolchain", version = "0.0.0" }
tt = { path = "../tt", version = "0.0.0" }
proc-macro-api = { path = "../proc-macro-api", version = "0.0.0" }

# This should only be used in CLI
ide-ssr = { path = "../ide-ssr", version = "0.0.0" }
hir = { path = "../hir", version = "0.0.0" }
hir-def = { path = "../hir-def", version = "0.0.0" }
hir-ty = { path = "../hir-ty", version = "0.0.0" }
proc-macro-srv = { path = "../proc-macro-srv", version = "0.0.0" }

[target.'cfg(windows)'.dependencies]
winapi = "0.3.9"

[target.'cfg(not(target_env = "msvc"))'.dependencies]
jemallocator = { version = "0.5.0", package = "tikv-jemallocator", optional = true }

[dev-dependencies]
expect-test = "1.4.0"
jod-thread = "0.1.2"
xshell = "0.2.2"

test-utils = { path = "../test-utils" }
sourcegen = { path = "../sourcegen" }
mbe = { path = "../mbe" }

[features]
jemalloc = ["jemallocator", "profile/jemalloc"]
force-always-assert = ["always-assert/force"]
in-rust-tree = [
    "proc-macro-srv/sysroot-abi",
    "ide/in-rust-tree",
    "syntax/in-rust-tree",
]
