Skip to content

Commit 5233f9c

Browse files
committed
Add support for crate shorthand for pub(crate)
1 parent e2a5c78 commit 5233f9c

File tree

7 files changed

+62
-29
lines changed

7 files changed

+62
-29
lines changed

Cargo.lock

Lines changed: 21 additions & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/items.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use std::borrow::Cow;
1414
use std::cmp::min;
1515

1616
use syntax::{abi, ast, ptr, symbol};
17-
use syntax::ast::ImplItem;
17+
use syntax::ast::{CrateSugar, ImplItem};
1818
use syntax::codemap::{BytePos, Span};
1919
use syntax::visit;
2020

@@ -1765,10 +1765,12 @@ fn rewrite_fn_base(
17651765
}
17661766

17671767
// Skip `pub(crate)`.
1768-
let lo_after_visibility = if let ast::Visibility::Crate(s) = fn_sig.visibility {
1769-
context.codemap.span_after(mk_sp(s.hi(), span.hi()), ")")
1770-
} else {
1771-
span.lo()
1768+
let lo_after_visibility = match fn_sig.visibility {
1769+
ast::Visibility::Crate(s, CrateSugar::PubCrate) => {
1770+
context.codemap.span_after(mk_sp(s.hi(), span.hi()), ")")
1771+
}
1772+
ast::Visibility::Crate(s, CrateSugar::JustCrate) => s.hi(),
1773+
_ => span.lo(),
17721774
};
17731775
// A conservative estimation, to goal is to be over all parens in generics
17741776
let args_start = fn_sig

src/utils.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
use std::borrow::Cow;
1212

1313
use syntax::{abi, ptr};
14-
use syntax::ast::{self, Attribute, MetaItem, MetaItemKind, NestedMetaItem, NestedMetaItemKind,
15-
Path, Visibility};
14+
use syntax::ast::{self, Attribute, CrateSugar, MetaItem, MetaItemKind, NestedMetaItem,
15+
NestedMetaItemKind, Path, Visibility};
1616
use syntax::codemap::{BytePos, Span, NO_EXPANSION};
1717

1818
use rewrite::RewriteContext;
@@ -37,7 +37,8 @@ pub fn format_visibility(vis: &Visibility) -> Cow<'static, str> {
3737
match *vis {
3838
Visibility::Public => Cow::from("pub "),
3939
Visibility::Inherited => Cow::from(""),
40-
Visibility::Crate(_) => Cow::from("pub(crate) "),
40+
Visibility::Crate(_, CrateSugar::PubCrate) => Cow::from("pub(crate) "),
41+
Visibility::Crate(_, CrateSugar::JustCrate) => Cow::from("crate "),
4142
Visibility::Restricted { ref path, .. } => {
4243
let Path { ref segments, .. } = **path;
4344
let mut segments_iter = segments.iter().map(|seg| seg.identifier.name.to_string());

tests/source/fn-simple.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,3 +62,5 @@ mod foo {
6262

6363
// #2082
6464
pub(crate) fn init() {}
65+
66+
crate fn init() {}

tests/source/pub-restricted.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,19 @@ pub( crate ) enum WriteState<D> {
2424
WriteData(Writer<D>),
2525
}
2626

27+
crate enum WriteState<D> {
28+
WriteId {
29+
id: U64Writer,
30+
size: U64Writer,
31+
payload: Option<Writer<D>>,
32+
},
33+
WriteSize {
34+
size: U64Writer,
35+
payload: Option<Writer<D>>,
36+
},
37+
WriteData(Writer<D>),
38+
}
39+
2740
pub(in ::global:: path :: to::some_mod ) enum WriteState<D> {
2841
WriteId {
2942
id: U64Writer,

tests/target/fn-simple.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,3 +104,5 @@ mod foo {
104104

105105
// #2082
106106
pub(crate) fn init() {}
107+
108+
crate fn init() {}

tests/target/pub-restricted.rs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,19 @@ pub(crate) enum WriteState<D> {
2424
WriteData(Writer<D>),
2525
}
2626

27+
crate enum WriteState<D> {
28+
WriteId {
29+
id: U64Writer,
30+
size: U64Writer,
31+
payload: Option<Writer<D>>,
32+
},
33+
WriteSize {
34+
size: U64Writer,
35+
payload: Option<Writer<D>>,
36+
},
37+
WriteData(Writer<D>),
38+
}
39+
2740
pub(in global::path::to::some_mod) enum WriteState<D> {
2841
WriteId {
2942
id: U64Writer,

0 commit comments

Comments
 (0)