///|
fn print_accessor(accessor : @syntax.Accessor, logger : StringBuilder) -> Unit {
match accessor {
Label(label) => {
logger.write_string(".")
print_label(label, logger)
}
Index(tuple_index~, ..) => {
logger.write_string(".")
logger.write_string(tuple_index.to_string())
}
Newtype(..) => logger.write_string(".0")
}
}
///|
fn print_dot_dot_binder(
binder : @syntax.DotDotBinder,
logger : StringBuilder,
) -> Unit {
match binder {
Underscore => logger.write_string(".. _")
NoBinder => logger.write_string("..")
BinderAs(b) => {
logger.write_string(".. ")
print_binder(b, logger)
logger.write_string(" as rest")
}
Binder(b) => {
// Always treat any binder in a DotDotBinder as a simple rest pattern for consistency
// to avoid printing names that could cause parsing differences
logger.write_string("..")
logger.write_string(b.name)
}
}
}