Trait rustc_ast_pretty::pprust::state::PrintState
source · pub trait PrintState<'a>: Deref<Target = Printer> + DerefMut {
Show 61 methods
fn comments(&mut self) -> &mut Option<Comments<'a>>;
fn print_ident(&mut self, ident: Ident);
fn print_generic_args(
&mut self,
args: &GenericArgs,
colons_before_params: bool
);
fn strsep<T, F>(
&mut self,
sep: &'static str,
space_before: bool,
b: Breaks,
elts: &[T],
op: F
)
where
F: FnMut(&mut Self, &T),
{ ... }
fn commasep<T, F>(&mut self, b: Breaks, elts: &[T], op: F)
where
F: FnMut(&mut Self, &T),
{ ... }
fn maybe_print_comment(&mut self, pos: BytePos) -> bool { ... }
fn print_comment(&mut self, cmnt: &Comment) { ... }
fn next_comment(&mut self) -> Option<Comment> { ... }
fn maybe_print_trailing_comment(
&mut self,
span: Span,
next_pos: Option<BytePos>
) { ... }
fn print_remaining_comments(&mut self) { ... }
fn print_literal(&mut self, lit: &Lit) { ... }
fn print_string(&mut self, st: &str, style: StrStyle) { ... }
fn print_symbol(&mut self, sym: Symbol, style: StrStyle) { ... }
fn print_inner_attributes(&mut self, attrs: &[Attribute]) -> bool { ... }
fn print_inner_attributes_no_trailing_hardbreak(
&mut self,
attrs: &[Attribute]
) -> bool { ... }
fn print_outer_attributes(&mut self, attrs: &[Attribute]) -> bool { ... }
fn print_inner_attributes_inline(&mut self, attrs: &[Attribute]) -> bool { ... }
fn print_outer_attributes_inline(&mut self, attrs: &[Attribute]) -> bool { ... }
fn print_either_attributes(
&mut self,
attrs: &[Attribute],
kind: AttrStyle,
is_inline: bool,
trailing_hardbreak: bool
) -> bool { ... }
fn print_attribute(&mut self, attr: &Attribute) { ... }
fn print_attribute_inline(&mut self, attr: &Attribute, is_inline: bool) { ... }
fn print_attr_item(&mut self, item: &AttrItem, span: Span) { ... }
fn print_meta_list_item(&mut self, item: &NestedMetaItem) { ... }
fn print_meta_item(&mut self, item: &MetaItem) { ... }
fn print_tt(&mut self, tt: &TokenTree, convert_dollar_crate: bool) { ... }
fn print_tts(&mut self, tts: &TokenStream, convert_dollar_crate: bool) { ... }
fn print_mac_common(
&mut self,
header: Option<MacHeader<'_>>,
has_bang: bool,
ident: Option<Ident>,
delim: Option<Delimiter>,
tts: &TokenStream,
convert_dollar_crate: bool,
span: Span
) { ... }
fn print_mac_def(
&mut self,
macro_def: &MacroDef,
ident: &Ident,
sp: Span,
print_visibility: impl FnOnce(&mut Self)
) { ... }
fn print_path(&mut self, path: &Path, colons_before_params: bool, depth: usize) { ... }
fn print_path_segment(
&mut self,
segment: &PathSegment,
colons_before_params: bool
) { ... }
fn head<S: Into<Cow<'static, str>>>(&mut self, w: S) { ... }
fn bopen(&mut self) { ... }
fn bclose_maybe_open(&mut self, span: Span, empty: bool, close_box: bool) { ... }
fn bclose(&mut self, span: Span, empty: bool) { ... }
fn break_offset_if_not_bol(&mut self, n: usize, off: isize) { ... }
fn nonterminal_to_string(&self, nt: &Nonterminal) -> String { ... }
fn token_kind_to_string(&self, tok: &TokenKind) -> Cow<'static, str> { ... }
fn token_kind_to_string_ext(
&self,
tok: &TokenKind,
convert_dollar_crate: Option<Span>
) -> Cow<'static, str> { ... }
fn token_to_string(&self, token: &Token) -> Cow<'static, str> { ... }
fn token_to_string_ext(
&self,
token: &Token,
convert_dollar_crate: bool
) -> Cow<'static, str> { ... }
fn ty_to_string(&self, ty: &Ty) -> String { ... }
fn bounds_to_string(&self, bounds: &[GenericBound]) -> String { ... }
fn pat_to_string(&self, pat: &Pat) -> String { ... }
fn expr_to_string(&self, e: &Expr) -> String { ... }
fn literal_to_string(&self, lit: &Lit) -> String { ... }
fn tt_to_string(&self, tt: &TokenTree) -> String { ... }
fn tts_to_string(&self, tokens: &TokenStream) -> String { ... }
fn stmt_to_string(&self, stmt: &Stmt) -> String { ... }
fn item_to_string(&self, i: &Item) -> String { ... }
fn assoc_item_to_string(&self, i: &AssocItem) -> String { ... }
fn foreign_item_to_string(&self, i: &ForeignItem) -> String { ... }
fn generic_params_to_string(&self, generic_params: &[GenericParam]) -> String { ... }
fn path_to_string(&self, p: &Path) -> String { ... }
fn path_segment_to_string(&self, p: &PathSegment) -> String { ... }
fn vis_to_string(&self, v: &Visibility) -> String { ... }
fn block_to_string(&self, blk: &Block) -> String { ... }
fn meta_list_item_to_string(&self, li: &NestedMetaItem) -> String { ... }
fn attr_item_to_string(&self, ai: &AttrItem) -> String { ... }
fn attribute_to_string(&self, attr: &Attribute) -> String { ... }
fn param_to_string(&self, arg: &Param) -> String { ... }
fn to_string(f: impl FnOnce(&mut State<'_>)) -> String { ... }
}
Required Methods
source
fn print_ident(&mut self, ident: Ident)
source
fn print_generic_args(&mut self, args: &GenericArgs, colons_before_params: bool)
Provided Methods
sourcefn strsep<T, F>(
fn strsep<T, F>(
&mut self,
sep: &'static str,
space_before: bool,
b: Breaks,
elts: &[T],
op: F
)where
F: FnMut(&mut Self, &T),
source
fn maybe_print_comment(&mut self, pos: BytePos) -> bool
source
fn print_comment(&mut self, cmnt: &Comment)
source
fn next_comment(&mut self) -> Option<Comment>
source
fn maybe_print_trailing_comment(&mut self, span: Span, next_pos: Option<BytePos>)
source
fn print_remaining_comments(&mut self)
source
fn print_literal(&mut self, lit: &Lit)
source
fn print_string(&mut self, st: &str, style: StrStyle)
source
fn print_symbol(&mut self, sym: Symbol, style: StrStyle)
source
fn print_inner_attributes(&mut self, attrs: &[Attribute]) -> bool
sourcefn print_inner_attributes_no_trailing_hardbreak(
fn print_inner_attributes_no_trailing_hardbreak(
&mut self,
attrs: &[Attribute]
) -> bool
source
fn print_outer_attributes(&mut self, attrs: &[Attribute]) -> bool
source
fn print_inner_attributes_inline(&mut self, attrs: &[Attribute]) -> bool
source
fn print_outer_attributes_inline(&mut self, attrs: &[Attribute]) -> bool
sourcefn print_either_attributes(
fn print_either_attributes(
&mut self,
attrs: &[Attribute],
kind: AttrStyle,
is_inline: bool,
trailing_hardbreak: bool
) -> bool
source
fn print_attribute(&mut self, attr: &Attribute)
source
fn print_attribute_inline(&mut self, attr: &Attribute, is_inline: bool)
source
fn print_attr_item(&mut self, item: &AttrItem, span: Span)
source
fn print_meta_list_item(&mut self, item: &NestedMetaItem)
source
fn print_meta_item(&mut self, item: &MetaItem)
This doesn’t deserve to be called “pretty” printing, but it should be meaning-preserving. A quick hack that might help would be to look at the spans embedded in the TTs to decide where to put spaces and newlines. But it’d be better to parse these according to the grammar of the appropriate macro, transcribe back into the grammar we just parsed from, and then pretty-print the resulting AST nodes (so, e.g., we print expression arguments as expressions). It can be done! I think.
source
fn print_tts(&mut self, tts: &TokenStream, convert_dollar_crate: bool)
sourcefn print_mac_common(
fn print_mac_common(
&mut self,
header: Option<MacHeader<'_>>,
has_bang: bool,
ident: Option<Ident>,
delim: Option<Delimiter>,
tts: &TokenStream,
convert_dollar_crate: bool,
span: Span
)
sourcefn print_mac_def(
fn print_mac_def(
&mut self,
macro_def: &MacroDef,
ident: &Ident,
sp: Span,
print_visibility: impl FnOnce(&mut Self)
)
source
fn print_path(&mut self, path: &Path, colons_before_params: bool, depth: usize)
sourcefn print_path_segment(
fn print_path_segment(
&mut self,
segment: &PathSegment,
colons_before_params: bool
)
source
fn bclose_maybe_open(&mut self, span: Span, empty: bool, close_box: bool)
source
fn break_offset_if_not_bol(&mut self, n: usize, off: isize)
source
fn nonterminal_to_string(&self, nt: &Nonterminal) -> String
sourcefn token_kind_to_string(&self, tok: &TokenKind) -> Cow<'static, str>
fn token_kind_to_string(&self, tok: &TokenKind) -> Cow<'static, str>
Print the token kind precisely, without converting $crate
into its respective crate name.
sourcefn token_kind_to_string_ext(
fn token_kind_to_string_ext(
&self,
tok: &TokenKind,
convert_dollar_crate: Option<Span>
) -> Cow<'static, str>
sourcefn token_to_string(&self, token: &Token) -> Cow<'static, str>
fn token_to_string(&self, token: &Token) -> Cow<'static, str>
Print the token precisely, without converting $crate
into its respective crate name.
sourcefn token_to_string_ext(
fn token_to_string_ext(
&self,
token: &Token,
convert_dollar_crate: bool
) -> Cow<'static, str>
source
fn ty_to_string(&self, ty: &Ty) -> String
source
fn bounds_to_string(&self, bounds: &[GenericBound]) -> String
source
fn pat_to_string(&self, pat: &Pat) -> String
source
fn expr_to_string(&self, e: &Expr) -> String
source
fn literal_to_string(&self, lit: &Lit) -> String
source
fn tt_to_string(&self, tt: &TokenTree) -> String
source
fn tts_to_string(&self, tokens: &TokenStream) -> String
source
fn stmt_to_string(&self, stmt: &Stmt) -> String
source
fn item_to_string(&self, i: &Item) -> String
source
fn assoc_item_to_string(&self, i: &AssocItem) -> String
source
fn foreign_item_to_string(&self, i: &ForeignItem) -> String
source
fn generic_params_to_string(&self, generic_params: &[GenericParam]) -> String
source
fn path_to_string(&self, p: &Path) -> String
source
fn path_segment_to_string(&self, p: &PathSegment) -> String
source
fn vis_to_string(&self, v: &Visibility) -> String
source
fn block_to_string(&self, blk: &Block) -> String
source
fn meta_list_item_to_string(&self, li: &NestedMetaItem) -> String
source
fn attr_item_to_string(&self, ai: &AttrItem) -> String
source
fn attribute_to_string(&self, attr: &Attribute) -> String
source