From 154dee2dccd45f929b0a3d2ce2d45739513f77c8 Mon Sep 17 00:00:00 2001 From: Esteban Küber Date: Thu, 19 Jul 2018 18:53:26 -0700 Subject: rework println --- src/libsyntax_ext/format.rs | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'src/libsyntax_ext/format.rs') diff --git a/src/libsyntax_ext/format.rs b/src/libsyntax_ext/format.rs index 6abf987d0ab..d3e5adf6835 100644 --- a/src/libsyntax_ext/format.rs +++ b/src/libsyntax_ext/format.rs @@ -683,7 +683,20 @@ pub fn expand_format_args<'cx>(ecx: &'cx mut ExtCtxt, sp = sp.apply_mark(ecx.current_expansion.mark); match parse_args(ecx, sp, tts) { Some((efmt, args, names)) => { - MacEager::expr(expand_preparsed_format_args(ecx, sp, efmt, args, names)) + MacEager::expr(expand_preparsed_format_args(ecx, sp, efmt, args, names, false)) + } + None => DummyResult::expr(sp), + } +} + +pub fn expand_format_args_nl<'cx>(ecx: &'cx mut ExtCtxt, + mut sp: Span, + tts: &[tokenstream::TokenTree]) + -> Box { + sp = sp.apply_mark(ecx.current_expansion.mark); + match parse_args(ecx, sp, tts) { + Some((efmt, args, names)) => { + MacEager::expr(expand_preparsed_format_args(ecx, sp, efmt, args, names, true)) } None => DummyResult::expr(sp), } @@ -695,7 +708,8 @@ pub fn expand_preparsed_format_args(ecx: &mut ExtCtxt, sp: Span, efmt: P, args: Vec>, - names: HashMap) + names: HashMap, + append_newline: bool) -> P { // NOTE: this verbose way of initializing `Vec>` is because // `ArgumentType` does not derive `Clone`. @@ -706,6 +720,10 @@ pub fn expand_preparsed_format_args(ecx: &mut ExtCtxt, let msg = "format argument must be a string literal"; let fmt_sp = efmt.span; let fmt = match expr_to_spanned_string(ecx, efmt, msg) { + Ok(mut fmt) if append_newline => { + fmt.node.0 = Symbol::intern(&format!("{}\n", fmt.node.0)); + fmt + } Ok(fmt) => fmt, Err(mut err) => { let sugg_fmt = match args.len() { -- cgit 1.4.1-3-g733a5