diff options
| author | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2019-12-29 16:39:31 +0300 |
|---|---|---|
| committer | Vadim Petrochenkov <vadim.petrochenkov@gmail.com> | 2019-12-30 19:18:16 +0300 |
| commit | b683de4ad79242fdeebcae2afefb72c1530babe9 (patch) | |
| tree | e46daf86fae68f2246b1dd80500f4a504d452b84 /src/libsyntax_ext/env.rs | |
| parent | 0fb43801368ae8b5931583f813071120bed55c35 (diff) | |
| download | rust-b683de4ad79242fdeebcae2afefb72c1530babe9.tar.gz rust-b683de4ad79242fdeebcae2afefb72c1530babe9.zip | |
Rename directories for some crates from `syntax_x` to `rustc_x`
`syntax_expand` -> `rustc_expand` `syntax_pos` -> `rustc_span` `syntax_ext` -> `rustc_builtin_macros`
Diffstat (limited to 'src/libsyntax_ext/env.rs')
| -rw-r--r-- | src/libsyntax_ext/env.rs | 88 |
1 files changed, 0 insertions, 88 deletions
diff --git a/src/libsyntax_ext/env.rs b/src/libsyntax_ext/env.rs deleted file mode 100644 index c9ecbabc8ff..00000000000 --- a/src/libsyntax_ext/env.rs +++ /dev/null @@ -1,88 +0,0 @@ -// The compiler code necessary to support the env! extension. Eventually this -// should all get sucked into either the compiler syntax extension plugin -// interface. -// - -use syntax::ast::{self, GenericArg, Ident}; -use syntax::symbol::{kw, sym, Symbol}; -use syntax::tokenstream::TokenStream; -use syntax_expand::base::{self, *}; -use syntax_pos::Span; - -use std::env; - -pub fn expand_option_env<'cx>( - cx: &'cx mut ExtCtxt<'_>, - sp: Span, - tts: TokenStream, -) -> Box<dyn base::MacResult + 'cx> { - let var = match get_single_str_from_tts(cx, sp, tts, "option_env!") { - None => return DummyResult::any(sp), - Some(v) => v, - }; - - let sp = cx.with_def_site_ctxt(sp); - let e = match env::var(&var.as_str()) { - Err(..) => { - let lt = cx.lifetime(sp, Ident::new(kw::StaticLifetime, sp)); - cx.expr_path(cx.path_all( - sp, - true, - cx.std_path(&[sym::option, sym::Option, sym::None]), - vec![GenericArg::Type(cx.ty_rptr( - sp, - cx.ty_ident(sp, Ident::new(sym::str, sp)), - Some(lt), - ast::Mutability::Not, - ))], - )) - } - Ok(s) => cx.expr_call_global( - sp, - cx.std_path(&[sym::option, sym::Option, sym::Some]), - vec![cx.expr_str(sp, Symbol::intern(&s))], - ), - }; - MacEager::expr(e) -} - -pub fn expand_env<'cx>( - cx: &'cx mut ExtCtxt<'_>, - sp: Span, - tts: TokenStream, -) -> Box<dyn base::MacResult + 'cx> { - let mut exprs = match get_exprs_from_tts(cx, sp, tts) { - Some(ref exprs) if exprs.is_empty() => { - cx.span_err(sp, "env! takes 1 or 2 arguments"); - return DummyResult::any(sp); - } - None => return DummyResult::any(sp), - Some(exprs) => exprs.into_iter(), - }; - - let var = match expr_to_string(cx, exprs.next().unwrap(), "expected string literal") { - None => return DummyResult::any(sp), - Some((v, _style)) => v, - }; - let msg = match exprs.next() { - None => Symbol::intern(&format!("environment variable `{}` not defined", var)), - Some(second) => match expr_to_string(cx, second, "expected string literal") { - None => return DummyResult::any(sp), - Some((s, _style)) => s, - }, - }; - - if exprs.next().is_some() { - cx.span_err(sp, "env! takes 1 or 2 arguments"); - return DummyResult::any(sp); - } - - let e = match env::var(&*var.as_str()) { - Err(_) => { - cx.span_err(sp, &msg.as_str()); - return DummyResult::any(sp); - } - Ok(s) => cx.expr_str(sp, Symbol::intern(&s)), - }; - MacEager::expr(e) -} |
