Skip to content

Commit 2d7ffbb

Browse files
committed
Factor convenience functions out of main printer implementation
1 parent 24b8bb1 commit 2d7ffbb

File tree

2 files changed

+78
-75
lines changed

2 files changed

+78
-75
lines changed

compiler/rustc_ast_pretty/src/pp.rs

+1-75
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@
132132
//! methods called `Printer::scan_*`, and the 'PRINT' process is the
133133
//! method called `Printer::print`.
134134
135+
mod convenience;
135136
mod ring;
136137

137138
use ring::RingBuffer;
@@ -185,12 +186,6 @@ pub enum Token {
185186
End,
186187
}
187188

188-
impl Token {
189-
pub fn is_hardbreak_tok(&self) -> bool {
190-
matches!(self, Token::Break(BreakToken { offset: 0, blank_space: SIZE_INFINITY }))
191-
}
192-
}
193-
194189
#[derive(Copy, Clone)]
195190
enum PrintFrame {
196191
Fits,
@@ -439,73 +434,4 @@ impl Printer {
439434
self.out.push_str(string);
440435
self.space -= string.len() as isize;
441436
}
442-
443-
// Convenience functions to talk to the printer.
444-
445-
/// "raw box"
446-
pub fn rbox(&mut self, indent: usize, breaks: Breaks) {
447-
self.scan_begin(BeginToken {
448-
indent: IndentStyle::Block { offset: indent as isize },
449-
breaks,
450-
})
451-
}
452-
453-
/// Inconsistent breaking box
454-
pub fn ibox(&mut self, indent: usize) {
455-
self.rbox(indent, Breaks::Inconsistent)
456-
}
457-
458-
/// Consistent breaking box
459-
pub fn cbox(&mut self, indent: usize) {
460-
self.rbox(indent, Breaks::Consistent)
461-
}
462-
463-
pub fn visual_align(&mut self) {
464-
self.scan_begin(BeginToken { indent: IndentStyle::Visual, breaks: Breaks::Consistent });
465-
}
466-
467-
pub fn break_offset(&mut self, n: usize, off: isize) {
468-
self.scan_break(BreakToken { offset: off, blank_space: n as isize })
469-
}
470-
471-
pub fn end(&mut self) {
472-
self.scan_end()
473-
}
474-
475-
pub fn eof(mut self) -> String {
476-
self.scan_eof();
477-
self.out
478-
}
479-
480-
pub fn word<S: Into<Cow<'static, str>>>(&mut self, wrd: S) {
481-
let string = wrd.into();
482-
self.scan_string(string)
483-
}
484-
485-
fn spaces(&mut self, n: usize) {
486-
self.break_offset(n, 0)
487-
}
488-
489-
pub fn zerobreak(&mut self) {
490-
self.spaces(0)
491-
}
492-
493-
pub fn space(&mut self) {
494-
self.spaces(1)
495-
}
496-
497-
pub fn hardbreak(&mut self) {
498-
self.spaces(SIZE_INFINITY as usize)
499-
}
500-
501-
pub fn is_beginning_of_line(&self) -> bool {
502-
match self.last_token() {
503-
Some(last_token) => last_token.is_hardbreak_tok(),
504-
None => true,
505-
}
506-
}
507-
508-
pub fn hardbreak_tok_offset(off: isize) -> Token {
509-
Token::Break(BreakToken { offset: off, blank_space: SIZE_INFINITY })
510-
}
511437
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
use crate::pp::{BeginToken, BreakToken, Breaks, IndentStyle, Printer, Token, SIZE_INFINITY};
2+
use std::borrow::Cow;
3+
4+
impl Printer {
5+
/// "raw box"
6+
pub fn rbox(&mut self, indent: usize, breaks: Breaks) {
7+
self.scan_begin(BeginToken {
8+
indent: IndentStyle::Block { offset: indent as isize },
9+
breaks,
10+
})
11+
}
12+
13+
/// Inconsistent breaking box
14+
pub fn ibox(&mut self, indent: usize) {
15+
self.rbox(indent, Breaks::Inconsistent)
16+
}
17+
18+
/// Consistent breaking box
19+
pub fn cbox(&mut self, indent: usize) {
20+
self.rbox(indent, Breaks::Consistent)
21+
}
22+
23+
pub fn visual_align(&mut self) {
24+
self.scan_begin(BeginToken { indent: IndentStyle::Visual, breaks: Breaks::Consistent });
25+
}
26+
27+
pub fn break_offset(&mut self, n: usize, off: isize) {
28+
self.scan_break(BreakToken { offset: off, blank_space: n as isize })
29+
}
30+
31+
pub fn end(&mut self) {
32+
self.scan_end()
33+
}
34+
35+
pub fn eof(mut self) -> String {
36+
self.scan_eof();
37+
self.out
38+
}
39+
40+
pub fn word<S: Into<Cow<'static, str>>>(&mut self, wrd: S) {
41+
let string = wrd.into();
42+
self.scan_string(string)
43+
}
44+
45+
fn spaces(&mut self, n: usize) {
46+
self.break_offset(n, 0)
47+
}
48+
49+
pub fn zerobreak(&mut self) {
50+
self.spaces(0)
51+
}
52+
53+
pub fn space(&mut self) {
54+
self.spaces(1)
55+
}
56+
57+
pub fn hardbreak(&mut self) {
58+
self.spaces(SIZE_INFINITY as usize)
59+
}
60+
61+
pub fn is_beginning_of_line(&self) -> bool {
62+
match self.last_token() {
63+
Some(last_token) => last_token.is_hardbreak_tok(),
64+
None => true,
65+
}
66+
}
67+
68+
pub fn hardbreak_tok_offset(off: isize) -> Token {
69+
Token::Break(BreakToken { offset: off, blank_space: SIZE_INFINITY })
70+
}
71+
}
72+
73+
impl Token {
74+
pub fn is_hardbreak_tok(&self) -> bool {
75+
matches!(self, Token::Break(BreakToken { offset: 0, blank_space: SIZE_INFINITY }))
76+
}
77+
}

0 commit comments

Comments
 (0)