diff options
author | bors[bot] <26634292+bors[bot]@users.noreply.github.com> | 2020-03-11 10:51:07 +0000 |
---|---|---|
committer | GitHub <[email protected]> | 2020-03-11 10:51:07 +0000 |
commit | c48dcf74118b6e0df747f036a9b66701037f3fc7 (patch) | |
tree | bc047c31d43d2e16428c56bf7cdf305f4a30fa66 /crates/ra_db/src/fixture.rs | |
parent | 7b323b45a15809a20052f13d5a8f073aaa274a86 (diff) | |
parent | 6ea7c319154f9ec10721f4041afc9d07d6b2476b (diff) |
Merge #3549
3549: Implement env! macro r=matklad a=edwin0cheng
This PR implements `env!` macro by adding following things:
1. Added `additional_outdirs` settings in vscode. (naming to be bikeshed)
2. Added `ExternSourceId` which is a wrapping for SourceRootId but only used in extern sources. It is because `OUT_DIR` is not belonged to any crate and we have to access it behind an `AstDatabase`.
3. This PR does not implement the `OUT_DIR` parsing from `cargo check`. I don't have general design about this, @kiljacken could we reuse some cargo watch code for that ?
~~Block on [#3536]~~
PS: After this PR , we (kind of) completed the `include!(concat!(env!('OUT_DIR'), "foo.rs")` macro call combo. [Exodia Obliterate!](https://www.youtube.com/watch?v=RfqNH3FoGi0)
Co-authored-by: Edwin Cheng <[email protected]>
Diffstat (limited to 'crates/ra_db/src/fixture.rs')
-rw-r--r-- | crates/ra_db/src/fixture.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/crates/ra_db/src/fixture.rs b/crates/ra_db/src/fixture.rs index 7f43c2971..3dc86ca2d 100644 --- a/crates/ra_db/src/fixture.rs +++ b/crates/ra_db/src/fixture.rs | |||
@@ -61,7 +61,14 @@ fn with_single_file(db: &mut dyn SourceDatabaseExt, ra_fixture: &str) -> FileId | |||
61 | }; | 61 | }; |
62 | 62 | ||
63 | let mut crate_graph = CrateGraph::default(); | 63 | let mut crate_graph = CrateGraph::default(); |
64 | crate_graph.add_crate_root(file_id, meta.edition, meta.krate, meta.cfg, meta.env); | 64 | crate_graph.add_crate_root( |
65 | file_id, | ||
66 | meta.edition, | ||
67 | meta.krate, | ||
68 | meta.cfg, | ||
69 | meta.env, | ||
70 | Default::default(), | ||
71 | ); | ||
65 | crate_graph | 72 | crate_graph |
66 | } else { | 73 | } else { |
67 | let mut crate_graph = CrateGraph::default(); | 74 | let mut crate_graph = CrateGraph::default(); |
@@ -71,6 +78,7 @@ fn with_single_file(db: &mut dyn SourceDatabaseExt, ra_fixture: &str) -> FileId | |||
71 | None, | 78 | None, |
72 | CfgOptions::default(), | 79 | CfgOptions::default(), |
73 | Env::default(), | 80 | Env::default(), |
81 | Default::default(), | ||
74 | ); | 82 | ); |
75 | crate_graph | 83 | crate_graph |
76 | }; | 84 | }; |
@@ -119,6 +127,7 @@ fn with_files(db: &mut dyn SourceDatabaseExt, fixture: &str) -> Option<FilePosit | |||
119 | Some(krate.clone()), | 127 | Some(krate.clone()), |
120 | meta.cfg, | 128 | meta.cfg, |
121 | meta.env, | 129 | meta.env, |
130 | Default::default(), | ||
122 | ); | 131 | ); |
123 | let prev = crates.insert(krate.clone(), crate_id); | 132 | let prev = crates.insert(krate.clone(), crate_id); |
124 | assert!(prev.is_none()); | 133 | assert!(prev.is_none()); |
@@ -155,6 +164,7 @@ fn with_files(db: &mut dyn SourceDatabaseExt, fixture: &str) -> Option<FilePosit | |||
155 | None, | 164 | None, |
156 | CfgOptions::default(), | 165 | CfgOptions::default(), |
157 | Env::default(), | 166 | Env::default(), |
167 | Default::default(), | ||
158 | ); | 168 | ); |
159 | } else { | 169 | } else { |
160 | for (from, to) in crate_deps { | 170 | for (from, to) in crate_deps { |