]> git.lizzy.rs Git - rust.git/commitdiff
Modify code around ast::Visibility
authorSeiichi Uchida <seuchida@gmail.com>
Tue, 6 Mar 2018 10:47:28 +0000 (19:47 +0900)
committerSeiichi Uchida <seuchida@gmail.com>
Tue, 6 Mar 2018 10:47:28 +0000 (19:47 +0900)
`ast::Visibility` is changed to `codemap::Spanned` whose node is
`ast::VisibilityKind`. This commit fixes it.

Closes #2398.

src/items.rs
src/utils.rs

index 3503546c0102d881e2900e80c491ec2401016608..ce1bc1ae3182eaf72264aae8c55fe66b0d756590 100644 (file)
@@ -16,8 +16,7 @@
 use config::lists::*;
 use regex::Regex;
 use syntax::{abi, ast, ptr, symbol};
-use syntax::ast::{CrateSugar, ImplItem};
-use syntax::codemap::{BytePos, Span};
+use syntax::codemap::{self, BytePos, Span};
 use syntax::visit;
 
 use codemap::{LineRangeUtils, SpanUtils};
 use vertical::rewrite_with_alignment;
 use visitor::FmtVisitor;
 
+const DEFAULT_VISIBILITY: ast::Visibility = codemap::Spanned {
+    node: ast::VisibilityKind::Inherited,
+    span: codemap::DUMMY_SP,
+};
+
 fn type_annotation_separator(config: &Config) -> &str {
     colon_spaces(config.space_before_colon(), config.space_after_colon())
 }
@@ -191,7 +195,7 @@ pub fn from_method_sig(
             abi: method_sig.abi,
             decl: &*method_sig.decl,
             generics,
-            visibility: ast::Visibility::Inherited,
+            visibility: DEFAULT_VISIBILITY,
         }
     }
 
@@ -680,7 +684,7 @@ pub fn format_impl(
 
 fn is_impl_single_line(
     context: &RewriteContext,
-    items: &[ImplItem],
+    items: &[ast::ImplItem],
     result: &str,
     where_clause_str: &str,
     item: &ast::Item,
@@ -869,7 +873,7 @@ fn from_variant(variant: &'a ast::Variant) -> Self {
         StructParts {
             prefix: "",
             ident: variant.node.name,
-            vis: &ast::Visibility::Inherited,
+            vis: &DEFAULT_VISIBILITY,
             def: &variant.node.data,
             generics: None,
             span: variant.span,
@@ -1208,21 +1212,9 @@ pub fn format_struct_struct(
     }
 }
 
-/// Returns a bytepos that is after that of `(` in `pub(..)`. If the given visibility does not
-/// contain `pub(..)`, then return the `lo` of the `defualt_span`. Yeah, but for what? Well, we need
-/// to bypass the `(` in the visibility when creating a span of tuple's body or fn's args.
-fn get_bytepos_after_visibility(
-    context: &RewriteContext,
-    vis: &ast::Visibility,
-    default_span: Span,
-    terminator: &str,
-) -> BytePos {
-    match *vis {
-        ast::Visibility::Crate(s, CrateSugar::PubCrate) => context
-            .snippet_provider
-            .span_after(mk_sp(s.hi(), default_span.hi()), terminator),
-        ast::Visibility::Crate(s, CrateSugar::JustCrate) => s.hi(),
-        ast::Visibility::Restricted { ref path, .. } => path.span.hi(),
+fn get_bytepos_after_visibility(vis: &ast::Visibility, default_span: Span) -> BytePos {
+    match vis.node {
+        ast::VisibilityKind::Crate(..) | ast::VisibilityKind::Restricted { .. } => vis.span.hi(),
         _ => default_span.lo(),
     }
 }
@@ -1240,7 +1232,7 @@ fn format_tuple_struct(
     result.push_str(&header_str);
 
     let body_lo = if fields.is_empty() {
-        let lo = get_bytepos_after_visibility(context, struct_parts.vis, span, ")");
+        let lo = get_bytepos_after_visibility(struct_parts.vis, span);
         context
             .snippet_provider
             .span_after(mk_sp(lo, span.hi()), "(")
@@ -1522,7 +1514,7 @@ pub fn from_trait_item(ti: &'a ast::TraitItem) -> Self {
         };
         StaticParts {
             prefix: "const",
-            vis: &ast::Visibility::Inherited,
+            vis: &DEFAULT_VISIBILITY,
             ident: ti.ident,
             ty,
             mutability: ast::Mutability::Immutable,
@@ -1874,7 +1866,7 @@ fn rewrite_fn_base(
     }
 
     // Skip `pub(crate)`.
-    let lo_after_visibility = get_bytepos_after_visibility(context, &fn_sig.visibility, span, ")");
+    let lo_after_visibility = get_bytepos_after_visibility(&fn_sig.visibility, span);
     // A conservative estimation, to goal is to be over all parens in generics
     let args_start = fn_sig
         .generics
index 5ec5ee180092aa9a44659e6e9e26a8c5aa84e2eb..f6d2ff23c349f8a2123fef79300420adf242a24d 100644 (file)
@@ -12,7 +12,7 @@
 
 use syntax::{abi, ptr};
 use syntax::ast::{self, Attribute, CrateSugar, MetaItem, MetaItemKind, NestedMetaItem,
-                  NestedMetaItemKind, Path, Visibility};
+                  NestedMetaItemKind, Path, Visibility, VisibilityKind};
 use syntax::codemap::{BytePos, Span, NO_EXPANSION};
 
 use config::Color;
@@ -35,12 +35,12 @@ pub fn extra_offset(text: &str, shape: Shape) -> usize {
 
 // Uses Cow to avoid allocating in the common cases.
 pub fn format_visibility(vis: &Visibility) -> Cow<'static, str> {
-    match *vis {
-        Visibility::Public => Cow::from("pub "),
-        Visibility::Inherited => Cow::from(""),
-        Visibility::Crate(_, CrateSugar::PubCrate) => Cow::from("pub(crate) "),
-        Visibility::Crate(_, CrateSugar::JustCrate) => Cow::from("crate "),
-        Visibility::Restricted { ref path, .. } => {
+    match vis.node {
+        VisibilityKind::Public => Cow::from("pub "),
+        VisibilityKind::Inherited => Cow::from(""),
+        VisibilityKind::Crate(CrateSugar::PubCrate) => Cow::from("pub(crate) "),
+        VisibilityKind::Crate(CrateSugar::JustCrate) => Cow::from("crate "),
+        VisibilityKind::Restricted { ref path, .. } => {
             let Path { ref segments, .. } = **path;
             let mut segments_iter = segments.iter().map(|seg| seg.identifier.name.to_string());
             if path.is_global() {