From: Seiichi Uchida Date: Tue, 6 Mar 2018 10:47:28 +0000 (+0900) Subject: Modify code around ast::Visibility X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=5416c4df76e07d4eb4c70abf39c5c1c0cad7315c;p=rust.git Modify code around ast::Visibility `ast::Visibility` is changed to `codemap::Spanned` whose node is `ast::VisibilityKind`. This commit fixes it. Closes #2398. --- diff --git a/src/items.rs b/src/items.rs index 3503546c010..ce1bc1ae318 100644 --- a/src/items.rs +++ b/src/items.rs @@ -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}; @@ -39,6 +38,11 @@ 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 diff --git a/src/utils.rs b/src/utils.rs index 5ec5ee18009..f6d2ff23c34 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -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() {