}
pub(crate) fn is_same_visibility(a: &Visibility, b: &Visibility) -> bool {
- match (&a.node, &b.node) {
+ match (&a.kind, &b.kind) {
(
VisibilityKind::Restricted { path: p, .. },
VisibilityKind::Restricted { path: q, .. },
- ) => pprust::path_to_string(p) == pprust::path_to_string(q),
+ ) => pprust::path_to_string(&p) == pprust::path_to_string(&q),
(VisibilityKind::Public, VisibilityKind::Public)
| (VisibilityKind::Inherited, VisibilityKind::Inherited)
| (
context: &RewriteContext<'_>,
vis: &Visibility,
) -> Cow<'static, str> {
- match vis.node {
+ match vis.kind {
VisibilityKind::Public => Cow::from("pub "),
VisibilityKind::Inherited => Cow::from(""),
VisibilityKind::Crate(CrateSugar::PubCrate) => Cow::from("pub(crate) "),
}
}
+#[inline]
+pub(crate) fn format_constness_right(constness: ast::Const) -> &'static str {
+ match constness {
+ ast::Const::Yes(..) => " const",
+ ast::Const::No => "",
+ }
+}
+
#[inline]
pub(crate) fn format_defaultness(defaultness: ast::Defaultness) -> &'static str {
match defaultness {
#[inline]
pub(crate) fn semicolon_for_expr(context: &RewriteContext<'_>, expr: &ast::Expr) -> bool {
+ // Never try to insert semicolons on expressions when we're inside
+ // a macro definition - this can prevent the macro from compiling
+ // when used in expression position
+ if context.is_macro_def {
+ return false;
+ }
+
match expr.kind {
ast::ExprKind::Ret(..) | ast::ExprKind::Continue(..) | ast::ExprKind::Break(..) => {
context.config.trailing_semicolon()
| ast::ExprKind::While(..)
| ast::ExprKind::If(..)
| ast::ExprKind::Block(..)
+ | ast::ExprKind::ConstBlock(..)
| ast::ExprKind::Async(..)
| ast::ExprKind::Loop(..)
| ast::ExprKind::ForLoop(..)
| ast::ExprKind::Ret(..)
| ast::ExprKind::Tup(..)
| ast::ExprKind::Type(..)
- | ast::ExprKind::Yield(None) => false,
+ | ast::ExprKind::Yield(None)
+ | ast::ExprKind::Underscore => false,
}
}