Skip to content

Commit 53a64d2

Browse files
committed
add support for proc macros
1 parent f64a0b3 commit 53a64d2

File tree

3 files changed

+9
-1
lines changed

3 files changed

+9
-1
lines changed

compiler/rustc_expand/src/proc_macro_server.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,10 @@ impl server::Types for Rustc<'_, '_> {
375375
}
376376

377377
impl server::FreeFunctions for Rustc<'_, '_> {
378+
fn injected_env_var(&mut self, var: &str) -> Option<String> {
379+
self.ecx.sess.opts.injected_env_vars.get(var).cloned()
380+
}
381+
378382
fn track_env_var(&mut self, var: &str, value: Option<&str>) {
379383
self.sess()
380384
.env_depinfo

library/proc_macro/src/bridge/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ macro_rules! with_api {
5454
$m! {
5555
FreeFunctions {
5656
fn drop($self: $S::FreeFunctions);
57+
fn injected_env_var(var: &str) -> Option<String>;
5758
fn track_env_var(var: &str, value: Option<&str>);
5859
fn track_path(path: &str);
5960
fn literal_from_str(s: &str) -> Result<Literal<$S::Span, $S::Symbol>, ()>;

library/proc_macro/src/lib.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1505,7 +1505,10 @@ pub mod tracked_env {
15051505
#[unstable(feature = "proc_macro_tracked_env", issue = "99515")]
15061506
pub fn var<K: AsRef<OsStr> + AsRef<str>>(key: K) -> Result<String, VarError> {
15071507
let key: &str = key.as_ref();
1508-
let value = env::var(key);
1508+
let injected_value = crate::bridge::client::FreeFunctions::injected_env_var(key);
1509+
let env_value = env::var(key);
1510+
1511+
let value = injected_value.map_or_else(env_value, Ok);
15091512
crate::bridge::client::FreeFunctions::track_env_var(key, value.as_deref().ok());
15101513
value
15111514
}

0 commit comments

Comments
 (0)