Move pp::Printer helpers to direct impl
This commit is contained in:
parent
e91dbc5916
commit
cab453250a
@ -1212,8 +1212,6 @@ pub fn print_node(&mut self, node: Node<'_>) {
|
||||
Node::Pat(a) => self.print_pat(&a),
|
||||
Node::Arm(a) => self.print_arm(&a),
|
||||
Node::Block(a) => {
|
||||
use syntax::print::pprust::PrintState;
|
||||
|
||||
// containing cbox, will be closed by print-block at }
|
||||
self.cbox(print::indent_unit);
|
||||
// head-ibox, will be closed by print-block after {
|
||||
|
@ -73,6 +73,19 @@ pub struct State<'a> {
|
||||
ann: &'a (dyn PpAnn + 'a),
|
||||
}
|
||||
|
||||
impl std::ops::Deref for State<'_> {
|
||||
type Target = pp::Printer;
|
||||
fn deref(&self) -> &Self::Target {
|
||||
&self.s
|
||||
}
|
||||
}
|
||||
|
||||
impl std::ops::DerefMut for State<'_> {
|
||||
fn deref_mut(&mut self) -> &mut Self::Target {
|
||||
&mut self.s
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> PrintState<'a> for State<'a> {
|
||||
fn writer(&mut self) -> &mut pp::Printer {
|
||||
&mut self.s
|
||||
|
@ -8,7 +8,6 @@
|
||||
use rustc::ty::TyCtxt;
|
||||
use std::mem;
|
||||
use std::usize;
|
||||
use syntax::print::pprust::PrintState;
|
||||
use log::debug;
|
||||
|
||||
use rustc_data_structures::graph::implementation::OUTGOING;
|
||||
|
@ -19,7 +19,6 @@
|
||||
use syntax::ast;
|
||||
use syntax::mut_visit::MutVisitor;
|
||||
use syntax::print::{pprust};
|
||||
use syntax::print::pprust::PrintState;
|
||||
use syntax_pos::FileName;
|
||||
|
||||
use graphviz as dot;
|
||||
|
@ -162,6 +162,7 @@ pub mod util {
|
||||
pub mod print {
|
||||
pub mod pp;
|
||||
pub mod pprust;
|
||||
mod helpers;
|
||||
}
|
||||
|
||||
pub mod ext {
|
||||
|
@ -611,8 +611,6 @@ fn tokens_to_string(tokens: &[TokenType]) -> String {
|
||||
match ty.node {
|
||||
TyKind::Rptr(ref lifetime, ref mut_ty) => {
|
||||
let sum_with_parens = pprust::to_string(|s| {
|
||||
use crate::print::pprust::PrintState;
|
||||
|
||||
s.s.word("&");
|
||||
s.print_opt_lifetime(lifetime);
|
||||
s.print_mutability(mut_ty.mutbl);
|
||||
|
@ -2571,7 +2571,6 @@ fn parse_dot_or_call_expr_with_(&mut self, e0: P<Expr>, lo: Span) -> PResult<'a,
|
||||
None => continue,
|
||||
};
|
||||
let sugg = pprust::to_string(|s| {
|
||||
use crate::print::pprust::PrintState;
|
||||
s.popen();
|
||||
s.print_expr(&e);
|
||||
s.s.word( ".");
|
||||
@ -4588,7 +4587,7 @@ pub fn parse_block(&mut self) -> PResult<'a, P<Block>> {
|
||||
stmt_span = stmt_span.with_hi(self.prev_span.hi());
|
||||
}
|
||||
let sugg = pprust::to_string(|s| {
|
||||
use crate::print::pprust::{PrintState, INDENT_UNIT};
|
||||
use crate::print::pprust::INDENT_UNIT;
|
||||
s.ibox(INDENT_UNIT);
|
||||
s.bopen();
|
||||
s.print_stmt(&stmt);
|
||||
|
34
src/libsyntax/print/helpers.rs
Normal file
34
src/libsyntax/print/helpers.rs
Normal file
@ -0,0 +1,34 @@
|
||||
use std::borrow::Cow;
|
||||
use crate::print::pp::Printer;
|
||||
|
||||
impl Printer {
|
||||
pub fn word_space<W: Into<Cow<'static, str>>>(&mut self, w: W) {
|
||||
self.word(w);
|
||||
self.space();
|
||||
}
|
||||
|
||||
pub fn popen(&mut self) {
|
||||
self.word("(");
|
||||
}
|
||||
|
||||
pub fn pclose(&mut self) {
|
||||
self.word(")");
|
||||
}
|
||||
|
||||
pub fn hardbreak_if_not_bol(&mut self) {
|
||||
if !self.is_beginning_of_line() {
|
||||
self.hardbreak()
|
||||
}
|
||||
}
|
||||
|
||||
pub fn space_if_not_bol(&mut self) {
|
||||
if !self.is_beginning_of_line() { self.space(); }
|
||||
}
|
||||
|
||||
pub fn nbsp(&mut self) { self.word(" ") }
|
||||
|
||||
pub fn word_nbsp<S: Into<Cow<'static, str>>>(&mut self, w: S) {
|
||||
self.word(w);
|
||||
self.nbsp()
|
||||
}
|
||||
}
|
@ -597,7 +597,7 @@ fn print(&mut self, token: Token, l: isize) {
|
||||
// Convenience functions to talk to the printer.
|
||||
|
||||
/// "raw box"
|
||||
crate fn rbox(&mut self, indent: usize, b: Breaks) {
|
||||
pub fn rbox(&mut self, indent: usize, b: Breaks) {
|
||||
self.scan_begin(BeginToken {
|
||||
offset: indent as isize,
|
||||
breaks: b
|
||||
@ -605,7 +605,7 @@ fn print(&mut self, token: Token, l: isize) {
|
||||
}
|
||||
|
||||
/// Inconsistent breaking box
|
||||
crate fn ibox(&mut self, indent: usize) {
|
||||
pub fn ibox(&mut self, indent: usize) {
|
||||
self.rbox(indent, Breaks::Inconsistent)
|
||||
}
|
||||
|
||||
@ -621,7 +621,7 @@ pub fn break_offset(&mut self, n: usize, off: isize) {
|
||||
})
|
||||
}
|
||||
|
||||
crate fn end(&mut self) {
|
||||
pub fn end(&mut self) {
|
||||
self.scan_end()
|
||||
}
|
||||
|
||||
|
@ -432,38 +432,23 @@ fn visibility_qualified(vis: &ast::Visibility, s: &str) -> String {
|
||||
format!("{}{}", to_string(|s| s.print_visibility(vis)), s)
|
||||
}
|
||||
|
||||
pub trait PrintState<'a> {
|
||||
impl std::ops::Deref for State<'_> {
|
||||
type Target = pp::Printer;
|
||||
fn deref(&self) -> &Self::Target {
|
||||
&self.s
|
||||
}
|
||||
}
|
||||
|
||||
impl std::ops::DerefMut for State<'_> {
|
||||
fn deref_mut(&mut self) -> &mut Self::Target {
|
||||
&mut self.s
|
||||
}
|
||||
}
|
||||
|
||||
pub trait PrintState<'a>: std::ops::Deref<Target=pp::Printer> + std::ops::DerefMut {
|
||||
fn writer(&mut self) -> &mut pp::Printer;
|
||||
fn comments(&mut self) -> &mut Option<Comments<'a>>;
|
||||
|
||||
fn word_space<S: Into<Cow<'static, str>>>(&mut self, w: S) {
|
||||
self.writer().word(w);
|
||||
self.writer().space()
|
||||
}
|
||||
|
||||
fn popen(&mut self) { self.writer().word("(") }
|
||||
|
||||
fn pclose(&mut self) { self.writer().word(")") }
|
||||
|
||||
fn hardbreak_if_not_bol(&mut self) {
|
||||
if !self.writer().is_beginning_of_line() {
|
||||
self.writer().hardbreak()
|
||||
}
|
||||
}
|
||||
|
||||
// "raw box"
|
||||
fn rbox(&mut self, u: usize, b: pp::Breaks) {
|
||||
self.writer().rbox(u, b)
|
||||
}
|
||||
|
||||
fn ibox(&mut self, u: usize) {
|
||||
self.writer().ibox(u);
|
||||
}
|
||||
|
||||
fn end(&mut self) {
|
||||
self.writer().end()
|
||||
}
|
||||
|
||||
fn commasep<T, F>(&mut self, b: Breaks, elts: &[T], mut op: F)
|
||||
where F: FnMut(&mut Self, &T),
|
||||
{
|
||||
@ -728,12 +713,6 @@ fn print_tts_ext(&mut self, tts: tokenstream::TokenStream, convert_dollar_crate:
|
||||
}
|
||||
self.end();
|
||||
}
|
||||
|
||||
fn space_if_not_bol(&mut self) {
|
||||
if !self.writer().is_beginning_of_line() { self.writer().space(); }
|
||||
}
|
||||
|
||||
fn nbsp(&mut self) { self.writer().word(" ") }
|
||||
}
|
||||
|
||||
impl<'a> PrintState<'a> for State<'a> {
|
||||
@ -747,15 +726,6 @@ fn comments(&mut self) -> &mut Option<Comments<'a>> {
|
||||
}
|
||||
|
||||
impl<'a> State<'a> {
|
||||
pub fn cbox(&mut self, u: usize) {
|
||||
self.s.cbox(u);
|
||||
}
|
||||
|
||||
crate fn word_nbsp<S: Into<Cow<'static, str>>>(&mut self, w: S) {
|
||||
self.s.word(w);
|
||||
self.nbsp()
|
||||
}
|
||||
|
||||
crate fn head<S: Into<Cow<'static, str>>>(&mut self, w: S) {
|
||||
let w = w.into();
|
||||
// outer-box is consistent
|
||||
|
Loading…
Reference in New Issue
Block a user