Commit Graph

169 Commits

Author SHA1 Message Date
Maybe Waffle 662dd7c27d Pass required features to cargo when using run action
When using `F1`->`Rust Analyzer: Run` action on an `example`, pass its
`required-features` to `cargo run`. This allows to run examples that
were otherwise impossible to run with RA.
2022-02-06 19:02:25 +03:00
Lukas Wirth dbd5a70ea3 minor: Add some debug traces for cfg fetching 2022-02-01 13:35:34 +01:00
Jonas Schievink c714c139a4 Update tests
We're now omitting the libc crate's build script and const_fn test
2022-01-18 18:27:29 +01:00
Jonas Schievink 22ea5595a8 Don't load auxiliary crates outside the workspace 2022-01-18 18:17:43 +01:00
Lukas Wirth aecf26d09b feat: Add config to replace specific proc-macros with dummy expanders 2022-01-06 13:50:18 +01:00
Jonas Schievink 58ce331baa Fix library target overriding sysroot deps 2021-12-08 17:05:00 +01:00
bors[bot] 393cbd0982 Merge #10841
10841: Emit moniker in lsif r=Veykril a=HKalbasi

fix #10559 

Co-authored-by: hkalbasi <hamidrezakalbasi@protonmail.com>
Co-authored-by: HKalbasi <45197576+HKalbasi@users.noreply.github.com>
2021-11-29 11:13:39 +00:00
hkalbasi 1409781c45 fix tests 2021-11-29 11:25:53 +03:30
hkalbasi df261c10b9 remove duplicate data from CrateOrigin 2021-11-29 11:10:39 +03:30
HKalbasi a654955159 Update crates/project_model/src/workspace.rs
Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
2021-11-25 20:03:43 +03:30
hkalbasi 30ed7fac27 Emit moniker in lsif 2021-11-22 21:29:05 +03:30
Jake Heinz 03eb9f3abb project_model: print full cargo command if it fails to run 2021-11-21 01:18:42 +00:00
bors[bot] c96481e25f Merge #10691
10691: minor: Use array `into_iter` in more places r=lnicola a=lnicola

bors r+

Co-authored-by: Laurențiu Nicola <lnicola@dend.ro>
2021-11-04 05:52:05 +00:00
Laurențiu Nicola 139bf9b4e1 Use array into_iter in more places 2021-11-04 07:51:20 +02:00
Lukas Wirth 52f5af7165 Expose version string of crates fom HIR 2021-11-03 15:40:06 +01:00
Laurențiu Nicola ca44b6892e Use array IntoIter 2021-10-22 09:23:29 +03:00
Lukas Wirth 1294bfce86 Migrate to edition 2021 2021-10-21 20:10:40 +02:00
Alex Macleod a6eeb75120 Use workspace cargo to fetch rust source's metadata
Previously the detected cargo is the global one, as it uses the
directory of the rust source which doesn't pick up the local override

This fixes the case in clippy where the local rust toolchain is a recent
nightly that has a 2021 edition Cargo.toml. The global (stable) cargo
returns an error attempting to parse it

Fixes #10445
2021-10-14 16:20:11 +01:00
bors[bot] c5354877c9 Merge #10503
10503: Only include targets of packages that are workspace members r=Veykril a=bcully

CargoWorkspace's package list includes packages that are path
dependencies, even if those packages aren't actually members of the
cargo workspace. As a result, rust-analyzer's runnable finder, which
returns the target from the first workspace that has a matching package,
may select the wrong working directory, causing runnables to fail, e.g.,
```
error: package `root` cannot be tested because it requires dev-dependencies and is not a member of the workspace
```

To fix this, we filter out packages that aren't members of the workspace
when searching for targets.

Fixes #7764

Co-authored-by: Brendan Cully <brendan@cully.org>
2021-10-14 11:42:53 +00:00
bors[bot] f87debcf87 Merge #10434
10434: Allow `Locate parent module` command in Cargo.toml r=Veykril a=rainy-me

close #10355

Co-authored-by: rainy-me <github@rainy.me>
Co-authored-by: rainy-me <github@yue.coffee>
2021-10-14 10:56:08 +00:00
rainy-me 59c755227d Provide navigations to parent modules 2021-10-14 07:16:42 +09:00
Brendan Cully 841d4f9dad Only include targets of packages that are workspace members
CargoWorkspace's package list includes packages that are path
dependencies, even if those packages aren't actually members of the
cargo workspace. As a result, rust-analyzer's runnable finder, which
returns the target from the first workspace that has a matching package,
may select the wrong working directory, causing runnables to fail, e.g.,
```
error: package `root` cannot be tested because it requires dev-dependencies and is not a member of the workspace
```

To fix this, we filter out packages that aren't members of the workspace
when searching for targets.

Fixes #7764
2021-10-11 18:28:05 -07:00
Jonas Schievink 0cd24c14c5 Only add proc_macro to prelude in proc-macro crates 2021-10-04 18:22:39 +02:00
Laurențiu Nicola a683c08729 Remove support for old-style sysroot 2021-10-04 18:36:56 +03:00
Jonas Schievink 0e6922f8a8 Implicitly depend on test 2021-09-28 21:39:41 +02:00
Jonas Schievink 0b76b29512 support non-extern-prelude dependencies 2021-09-28 21:23:46 +02:00
Lukas Wirth 3987bf5d6f Simplify 2021-09-19 19:00:06 +02:00
Jonas Schievink e241015a75 Rename is_member to is_local 2021-09-07 17:29:58 +02:00
Jonas Schievink 8a4c35a068 Treat path dependencies like workspace members 2021-09-07 17:26:21 +02:00
bors[bot] 1636f61a15 Merge #10005
10005: Extend `CargoConfig.unset_test_crates`  r=matklad a=regexident

This is to allow for efficiently disabling `#[cfg(test)]` on all crates (by passing `unset_test_crates: UnsetTestCrates::All`) without having to first load the crate graph, when using rust-analyzer as a library.

(FYI: The change doesn't seem to be covered by any existing tests.)

Co-authored-by: Vincent Esche <regexident@gmail.com>
2021-08-30 08:42:13 +00:00
Dezhi Wu ba0947dded switch log crate to tracing 2021-08-30 15:11:42 +08:00
Vincent Esche 74880a10ae Extend CargoConfig.unset_test_crates to allow for efficiently disabling #[cfg(test)] on all crates without having to first load the crate graph 2021-08-26 13:10:14 +02:00
Jonas Schievink 276f6c6ba4 Reduce visibility of WorkspaceBuildScripts::run 2021-08-25 18:02:27 +02:00
Jonas Schievink 0ff2c81bb9 Fix reporting of build script errors 2021-08-25 17:56:39 +02:00
Aleksey Kladov 4f8c6193d5 minor: remove dead code 2021-08-24 14:39:31 +03:00
Aleksey Kladov 881d71a489 internal: reduce crate interdependence
I don't think there's anything wrong with project_model depending on
proc_macro_api directly -- fundamentally, both are about gluing our pure
data model to the messy outside world.

However, it's easy enough to avoid the dependency, so why not.

As an additional consideration, `proc_macro_api` now pulls in `base_db`.
project_model should definitely not depend on that!
2021-08-22 13:32:00 +03:00
Aleksey Kladov 5cef007bff internal: improve consistency
load and load_proc_macro do similar things
2021-08-22 13:15:18 +03:00
Aleksey Kladov 4924c24d91 fix: resolve core::arch module
See https://users.rust-lang.org/t/rust-analyzer-unable-to-resolve-target-specific-module/63797/4?u=matklad

The fix is to put all sysroot crates into the same source root
2021-08-20 17:01:27 +03:00
Jonas Schievink 6f579c4862 Always add implicit proc_macro dependency 2021-08-12 21:42:14 +02:00
Toby Fleming d0b98060d4 Rust project project model smoke tests 2021-08-01 15:00:34 -07:00
Toby Fleming cb13e4a2ca Rust project supports proc-macro dependent crates 2021-08-01 14:43:10 -07:00
Aleksey Kladov b0c4b776b5 internal: add simple smoke test for project model
Our project model code is rather complicated -- the logic for lowering
from `cargo metadata` to `CrateGraph` is fiddly and special-case. So
far, we survived without testing this at all, but this increasingly
seems like a poor option.

So this PR introduces a simple tests just to detect the most obvious
failures. The idea here is that, although we rely on external processes
(cargo & rustc), we are actually using their stable interfaces, so we
might just mock out the outputs.

Long term, I would like to try to virtualize IO here, so as to do such
mocking in a more principled way, but lets start simple.

Should we forgo the mocking and just call `cargo metadata` directly
perhaps? Touch question -- I personally feel that fast, in-process tests
are more important in this case than any extra assurance we get from
running the real thing.

Super-long term, we would probably want to extend our heavy tests to
cover more use-cases, but we should figure a way to do that without
slowing the tests down for everyone.

Perhaps we need two-tiered bors system, where we pull from `master` into
`release` branch only when an additional set of tests passes?
2021-07-20 16:23:57 +03:00
Aleksey Kladov 52a70c392e minor: simplify 2021-07-19 21:21:41 +03:00
Aleksey Kladov 493ed2c17b internal: use types to remove some unwraps 2021-07-19 21:20:10 +03:00
Aleksey Kladov b8b166e674 fix: potential bugs when build scripts do not match the current project 2021-07-18 13:13:03 +03:00
Aleksey Kladov f4de2ece0d internal: simplify handling of the build scripts 2021-07-18 11:29:22 +03:00
Aleksey Kladov 8f3335f5fb internal: make it clearer where IO happens 2021-07-17 23:56:50 +03:00
Aleksey Kladov 8df38aa797 internal: make sure that proc macro machinery doesn't depend on cwd 2021-07-17 17:55:16 +03:00
Aleksey Kladov 9318c643f1 internal: make it easier to isolate IO 2021-07-17 17:55:16 +03:00
Jonas Schievink 7c2b9fb660 Set more CARGO_ env vars 2021-07-12 15:34:49 +02:00