Skip to content

Commit bc35524

Browse files
committed
Make ast::Visibility non-copyable
1 parent 74240b2 commit bc35524

File tree

6 files changed

+53
-53
lines changed

6 files changed

+53
-53
lines changed

src/librustc_front/lowering.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -761,7 +761,7 @@ pub fn lower_impl_item(lctx: &LoweringContext, i: &ImplItem) -> hir::ImplItem {
761761
id: i.id,
762762
name: i.ident.name,
763763
attrs: lower_attrs(lctx, &i.attrs),
764-
vis: lower_visibility(lctx, i.vis),
764+
vis: lower_visibility(lctx, &i.vis),
765765
defaultness: lower_defaultness(lctx, i.defaultness),
766766
node: match i.node {
767767
ImplItemKind::Const(ref ty, ref expr) => {
@@ -839,7 +839,7 @@ pub fn lower_item(lctx: &LoweringContext, i: &Item) -> hir::Item {
839839
name: i.ident.name,
840840
attrs: lower_attrs(lctx, &i.attrs),
841841
node: node,
842-
vis: lower_visibility(lctx, i.vis),
842+
vis: lower_visibility(lctx, &i.vis),
843843
span: i.span,
844844
}
845845
}
@@ -857,7 +857,7 @@ pub fn lower_foreign_item(lctx: &LoweringContext, i: &ForeignItem) -> hir::Forei
857857
hir::ForeignItemStatic(lower_ty(lctx, t), m)
858858
}
859859
},
860-
vis: lower_visibility(lctx, i.vis),
860+
vis: lower_visibility(lctx, &i.vis),
861861
span: i.span,
862862
}
863863
}
@@ -1706,8 +1706,8 @@ pub fn lower_capture_clause(_lctx: &LoweringContext, c: CaptureBy) -> hir::Captu
17061706
}
17071707
}
17081708

1709-
pub fn lower_visibility(_lctx: &LoweringContext, v: Visibility) -> hir::Visibility {
1710-
match v {
1709+
pub fn lower_visibility(_lctx: &LoweringContext, v: &Visibility) -> hir::Visibility {
1710+
match *v {
17111711
Visibility::Public => hir::Public,
17121712
Visibility::Inherited => hir::Inherited,
17131713
}

src/libsyntax/ast.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1868,7 +1868,7 @@ pub struct PolyTraitRef {
18681868
pub span: Span,
18691869
}
18701870

1871-
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)]
1871+
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
18721872
pub enum Visibility {
18731873
Public,
18741874
Inherited,
@@ -1893,7 +1893,7 @@ impl StructField_ {
18931893

18941894
pub type StructField = Spanned<StructField_>;
18951895

1896-
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug, Copy)]
1896+
#[derive(Clone, PartialEq, Eq, RustcEncodable, RustcDecodable, Hash, Debug)]
18971897
pub enum StructFieldKind {
18981898
NamedField(Ident, Visibility),
18991899
/// Element of a tuple-like struct
@@ -1908,9 +1908,9 @@ impl StructFieldKind {
19081908
}
19091909
}
19101910

1911-
pub fn visibility(&self) -> Visibility {
1911+
pub fn visibility(&self) -> &Visibility {
19121912
match *self {
1913-
NamedField(_, vis) | UnnamedField(vis) => vis
1913+
NamedField(_, ref vis) | UnnamedField(ref vis) => vis
19141914
}
19151915
}
19161916
}

src/libsyntax/ast_util.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -247,7 +247,7 @@ impl<'a, 'v, O: IdVisitingOperation> Visitor<'v> for IdVisitor<'a, O> {
247247
FnKind::ItemFn(_, generics, _, _, _, _) => {
248248
self.visit_generics_helper(generics)
249249
}
250-
FnKind::Method(_, sig, _) => {
250+
FnKind::Method(_, ref sig, _) => {
251251
self.visit_generics_helper(&sig.generics)
252252
}
253253
FnKind::Closure => {}

src/libsyntax/parse/parser.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -4952,7 +4952,7 @@ impl<'a> Parser<'a> {
49524952
self.commit_expr_expecting(&expr, token::Semi)?;
49534953
(name, ast::ImplItemKind::Const(typ, expr))
49544954
} else {
4955-
let (name, inner_attrs, node) = self.parse_impl_method(vis)?;
4955+
let (name, inner_attrs, node) = self.parse_impl_method(&vis)?;
49564956
attrs.extend(inner_attrs);
49574957
(name, node)
49584958
};
@@ -4968,8 +4968,8 @@ impl<'a> Parser<'a> {
49684968
})
49694969
}
49704970

4971-
fn complain_if_pub_macro(&mut self, visa: Visibility, span: Span) {
4972-
match visa {
4971+
fn complain_if_pub_macro(&mut self, visa: &Visibility, span: Span) {
4972+
match *visa {
49734973
Visibility::Public => {
49744974
let is_macro_rules: bool = match self.token {
49754975
token::Ident(sid, _) => sid.name == intern("macro_rules"),
@@ -4993,7 +4993,7 @@ impl<'a> Parser<'a> {
49934993
}
49944994

49954995
/// Parse a method or a macro invocation in a trait impl.
4996-
fn parse_impl_method(&mut self, vis: Visibility)
4996+
fn parse_impl_method(&mut self, vis: &Visibility)
49974997
-> PResult<'a, (Ident, Vec<ast::Attribute>, ast::ImplItemKind)> {
49984998
// code copied from parse_macro_use_or_failure... abstraction!
49994999
if !self.token.is_any_keyword()
@@ -5003,7 +5003,7 @@ impl<'a> Parser<'a> {
50035003
// method macro.
50045004

50055005
let last_span = self.last_span;
5006-
self.complain_if_pub_macro(vis, last_span);
5006+
self.complain_if_pub_macro(&vis, last_span);
50075007

50085008
let lo = self.span.lo;
50095009
let pth = self.parse_path(NoTypesAllowed)?;
@@ -6045,7 +6045,7 @@ impl<'a> Parser<'a> {
60456045
// MACRO INVOCATION ITEM
60466046

60476047
let last_span = self.last_span;
6048-
self.complain_if_pub_macro(visibility, last_span);
6048+
self.complain_if_pub_macro(&visibility, last_span);
60496049

60506050
let mac_lo = self.span.lo;
60516051

src/libsyntax/print/pprust.rs

+32-32
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,7 @@ pub fn fun_to_string(decl: &ast::FnDecl,
388388
to_string(|s| {
389389
s.head("")?;
390390
s.print_fn(decl, unsafety, constness, Abi::Rust, Some(name),
391-
generics, opt_explicit_self, ast::Visibility::Inherited)?;
391+
generics, opt_explicit_self, &ast::Visibility::Inherited)?;
392392
s.end()?; // Close the head box
393393
s.end() // Close the outer box
394394
})
@@ -432,8 +432,8 @@ pub fn mac_to_string(arg: &ast::Mac) -> String {
432432
to_string(|s| s.print_mac(arg, ::parse::token::Paren))
433433
}
434434

435-
pub fn visibility_qualified(vis: ast::Visibility, s: &str) -> String {
436-
match vis {
435+
pub fn visibility_qualified(vis: &ast::Visibility, s: &str) -> String {
436+
match *vis {
437437
ast::Visibility::Public => format!("pub {}", s),
438438
ast::Visibility::Inherited => s.to_string()
439439
}
@@ -1052,13 +1052,13 @@ impl<'a> State<'a> {
10521052
self.print_fn(decl, ast::Unsafety::Normal,
10531053
ast::Constness::NotConst,
10541054
Abi::Rust, Some(item.ident),
1055-
generics, None, item.vis)?;
1055+
generics, None, &item.vis)?;
10561056
self.end()?; // end head-ibox
10571057
word(&mut self.s, ";")?;
10581058
self.end() // end the outer fn box
10591059
}
10601060
ast::ForeignItemKind::Static(ref t, m) => {
1061-
self.head(&visibility_qualified(item.vis, "static"))?;
1061+
self.head(&visibility_qualified(&item.vis, "static"))?;
10621062
if m {
10631063
self.word_space("mut")?;
10641064
}
@@ -1076,7 +1076,7 @@ impl<'a> State<'a> {
10761076
ident: ast::Ident,
10771077
ty: &ast::Ty,
10781078
default: Option<&ast::Expr>,
1079-
vis: ast::Visibility)
1079+
vis: &ast::Visibility)
10801080
-> io::Result<()>
10811081
{
10821082
word(&mut self.s, &visibility_qualified(vis, ""))?;
@@ -1118,7 +1118,7 @@ impl<'a> State<'a> {
11181118
self.ann.pre(self, NodeItem(item))?;
11191119
match item.node {
11201120
ast::ItemKind::ExternCrate(ref optional_path) => {
1121-
self.head(&visibility_qualified(item.vis, "extern crate"))?;
1121+
self.head(&visibility_qualified(&item.vis, "extern crate"))?;
11221122
if let Some(p) = *optional_path {
11231123
let val = p.as_str();
11241124
if val.contains("-") {
@@ -1136,14 +1136,14 @@ impl<'a> State<'a> {
11361136
self.end()?; // end outer head-block
11371137
}
11381138
ast::ItemKind::Use(ref vp) => {
1139-
self.head(&visibility_qualified(item.vis, "use"))?;
1139+
self.head(&visibility_qualified(&item.vis, "use"))?;
11401140
self.print_view_path(&vp)?;
11411141
word(&mut self.s, ";")?;
11421142
self.end()?; // end inner head-block
11431143
self.end()?; // end outer head-block
11441144
}
11451145
ast::ItemKind::Static(ref ty, m, ref expr) => {
1146-
self.head(&visibility_qualified(item.vis, "static"))?;
1146+
self.head(&visibility_qualified(&item.vis, "static"))?;
11471147
if m == ast::Mutability::Mutable {
11481148
self.word_space("mut")?;
11491149
}
@@ -1159,7 +1159,7 @@ impl<'a> State<'a> {
11591159
self.end()?; // end the outer cbox
11601160
}
11611161
ast::ItemKind::Const(ref ty, ref expr) => {
1162-
self.head(&visibility_qualified(item.vis, "const"))?;
1162+
self.head(&visibility_qualified(&item.vis, "const"))?;
11631163
self.print_ident(item.ident)?;
11641164
self.word_space(":")?;
11651165
self.print_type(&ty)?;
@@ -1181,13 +1181,13 @@ impl<'a> State<'a> {
11811181
Some(item.ident),
11821182
typarams,
11831183
None,
1184-
item.vis
1184+
&item.vis
11851185
)?;
11861186
word(&mut self.s, " ")?;
11871187
self.print_block_with_attrs(&body, &item.attrs)?;
11881188
}
11891189
ast::ItemKind::Mod(ref _mod) => {
1190-
self.head(&visibility_qualified(item.vis, "mod"))?;
1190+
self.head(&visibility_qualified(&item.vis, "mod"))?;
11911191
self.print_ident(item.ident)?;
11921192
self.nbsp()?;
11931193
self.bopen()?;
@@ -1204,7 +1204,7 @@ impl<'a> State<'a> {
12041204
ast::ItemKind::Ty(ref ty, ref params) => {
12051205
self.ibox(INDENT_UNIT)?;
12061206
self.ibox(0)?;
1207-
self.word_nbsp(&visibility_qualified(item.vis, "type"))?;
1207+
self.word_nbsp(&visibility_qualified(&item.vis, "type"))?;
12081208
self.print_ident(item.ident)?;
12091209
self.print_generics(params)?;
12101210
self.end()?; // end the inner ibox
@@ -1222,17 +1222,17 @@ impl<'a> State<'a> {
12221222
params,
12231223
item.ident,
12241224
item.span,
1225-
item.vis
1225+
&item.vis
12261226
)?;
12271227
}
12281228
ast::ItemKind::Struct(ref struct_def, ref generics) => {
1229-
self.head(&visibility_qualified(item.vis,"struct"))?;
1229+
self.head(&visibility_qualified(&item.vis, "struct"))?;
12301230
self.print_struct(&struct_def, generics, item.ident, item.span, true)?;
12311231
}
12321232

12331233
ast::ItemKind::DefaultImpl(unsafety, ref trait_ref) => {
12341234
self.head("")?;
1235-
self.print_visibility(item.vis)?;
1235+
self.print_visibility(&item.vis)?;
12361236
self.print_unsafety(unsafety)?;
12371237
self.word_nbsp("impl")?;
12381238
self.print_trait_ref(trait_ref)?;
@@ -1249,7 +1249,7 @@ impl<'a> State<'a> {
12491249
ref ty,
12501250
ref impl_items) => {
12511251
self.head("")?;
1252-
self.print_visibility(item.vis)?;
1252+
self.print_visibility(&item.vis)?;
12531253
self.print_unsafety(unsafety)?;
12541254
self.word_nbsp("impl")?;
12551255

@@ -1287,7 +1287,7 @@ impl<'a> State<'a> {
12871287
}
12881288
ast::ItemKind::Trait(unsafety, ref generics, ref bounds, ref trait_items) => {
12891289
self.head("")?;
1290-
self.print_visibility(item.vis)?;
1290+
self.print_visibility(&item.vis)?;
12911291
self.print_unsafety(unsafety)?;
12921292
self.word_nbsp("trait")?;
12931293
self.print_ident(item.ident)?;
@@ -1312,7 +1312,7 @@ impl<'a> State<'a> {
13121312
self.bclose(item.span)?;
13131313
}
13141314
ast::ItemKind::Mac(codemap::Spanned { ref node, .. }) => {
1315-
self.print_visibility(item.vis)?;
1315+
self.print_visibility(&item.vis)?;
13161316
self.print_path(&node.path, false, 0)?;
13171317
word(&mut self.s, "! ")?;
13181318
self.print_ident(item.ident)?;
@@ -1355,7 +1355,7 @@ impl<'a> State<'a> {
13551355
pub fn print_enum_def(&mut self, enum_definition: &ast::EnumDef,
13561356
generics: &ast::Generics, ident: ast::Ident,
13571357
span: codemap::Span,
1358-
visibility: ast::Visibility) -> io::Result<()> {
1358+
visibility: &ast::Visibility) -> io::Result<()> {
13591359
self.head(&visibility_qualified(visibility, "enum"))?;
13601360
self.print_ident(ident)?;
13611361
self.print_generics(generics)?;
@@ -1381,8 +1381,8 @@ impl<'a> State<'a> {
13811381
self.bclose(span)
13821382
}
13831383

1384-
pub fn print_visibility(&mut self, vis: ast::Visibility) -> io::Result<()> {
1385-
match vis {
1384+
pub fn print_visibility(&mut self, vis: &ast::Visibility) -> io::Result<()> {
1385+
match *vis {
13861386
ast::Visibility::Public => self.word_nbsp("pub"),
13871387
ast::Visibility::Inherited => Ok(())
13881388
}
@@ -1404,7 +1404,7 @@ impl<'a> State<'a> {
14041404
|s, field| {
14051405
match field.node.kind {
14061406
ast::NamedField(..) => panic!("unexpected named field"),
1407-
ast::UnnamedField(vis) => {
1407+
ast::UnnamedField(ref vis) => {
14081408
s.print_visibility(vis)?;
14091409
s.maybe_print_comment(field.span.lo)?;
14101410
s.print_type(&field.node.ty)
@@ -1429,7 +1429,7 @@ impl<'a> State<'a> {
14291429
for field in struct_def.fields() {
14301430
match field.node.kind {
14311431
ast::UnnamedField(..) => panic!("unexpected unnamed field"),
1432-
ast::NamedField(ident, visibility) => {
1432+
ast::NamedField(ident, ref visibility) => {
14331433
self.hardbreak_if_not_bol()?;
14341434
self.maybe_print_comment(field.span.lo)?;
14351435
self.print_outer_attributes(&field.node.attrs)?;
@@ -1528,7 +1528,7 @@ impl<'a> State<'a> {
15281528
pub fn print_method_sig(&mut self,
15291529
ident: ast::Ident,
15301530
m: &ast::MethodSig,
1531-
vis: ast::Visibility)
1531+
vis: &ast::Visibility)
15321532
-> io::Result<()> {
15331533
self.print_fn(&m.decl,
15341534
m.unsafety,
@@ -1550,13 +1550,13 @@ impl<'a> State<'a> {
15501550
ast::TraitItemKind::Const(ref ty, ref default) => {
15511551
self.print_associated_const(ti.ident, &ty,
15521552
default.as_ref().map(|expr| &**expr),
1553-
ast::Visibility::Inherited)?;
1553+
&ast::Visibility::Inherited)?;
15541554
}
15551555
ast::TraitItemKind::Method(ref sig, ref body) => {
15561556
if body.is_some() {
15571557
self.head("")?;
15581558
}
1559-
self.print_method_sig(ti.ident, sig, ast::Visibility::Inherited)?;
1559+
self.print_method_sig(ti.ident, sig, &ast::Visibility::Inherited)?;
15601560
if let Some(ref body) = *body {
15611561
self.nbsp()?;
15621562
self.print_block_with_attrs(body, &ti.attrs)?;
@@ -1582,11 +1582,11 @@ impl<'a> State<'a> {
15821582
}
15831583
match ii.node {
15841584
ast::ImplItemKind::Const(ref ty, ref expr) => {
1585-
self.print_associated_const(ii.ident, &ty, Some(&expr), ii.vis)?;
1585+
self.print_associated_const(ii.ident, &ty, Some(&expr), &ii.vis)?;
15861586
}
15871587
ast::ImplItemKind::Method(ref sig, ref body) => {
15881588
self.head("")?;
1589-
self.print_method_sig(ii.ident, sig, ii.vis)?;
1589+
self.print_method_sig(ii.ident, sig, &ii.vis)?;
15901590
self.nbsp()?;
15911591
self.print_block_with_attrs(body, &ii.attrs)?;
15921592
}
@@ -2655,7 +2655,7 @@ impl<'a> State<'a> {
26552655
name: Option<ast::Ident>,
26562656
generics: &ast::Generics,
26572657
opt_explicit_self: Option<&ast::SelfKind>,
2658-
vis: ast::Visibility) -> io::Result<()> {
2658+
vis: &ast::Visibility) -> io::Result<()> {
26592659
self.print_fn_header_info(unsafety, constness, abi, vis)?;
26602660

26612661
if let Some(name) = name {
@@ -3037,7 +3037,7 @@ impl<'a> State<'a> {
30373037
name,
30383038
&generics,
30393039
opt_explicit_self,
3040-
ast::Visibility::Inherited)?;
3040+
&ast::Visibility::Inherited)?;
30413041
self.end()
30423042
}
30433043

@@ -3112,7 +3112,7 @@ impl<'a> State<'a> {
31123112
unsafety: ast::Unsafety,
31133113
constness: ast::Constness,
31143114
abi: Abi,
3115-
vis: ast::Visibility) -> io::Result<()> {
3115+
vis: &ast::Visibility) -> io::Result<()> {
31163116
word(&mut self.s, &visibility_qualified(vis, ""))?;
31173117

31183118
match constness {

0 commit comments

Comments
 (0)