Skip to content

Commit 5d5cfcc

Browse files
committed
Merge pull request #3258 from erickt/serialization
Fixing serialization no-implicit-copies warnings, and other misc cleanup
2 parents 511e762 + d8988fe commit 5d5cfcc

File tree

4 files changed

+33
-38
lines changed

4 files changed

+33
-38
lines changed

src/libstd/ebml.rs

Lines changed: 15 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -284,14 +284,8 @@ impl writer {
284284
self.wr_tagged_bytes(tag_id, &[v as u8]);
285285
}
286286

287-
fn wr_tagged_str(tag_id: uint, v: ~str) {
288-
// Lame: can't use str::as_bytes() here because the resulting
289-
// vector is NULL-terminated. Annoyingly, the underlying
290-
// writer interface doesn't permit us to write a slice of a
291-
// vector. We need first-class slices, I think.
292-
293-
// str::as_bytes(v) {|b| self.wr_tagged_bytes(tag_id, b); }
294-
self.wr_tagged_bytes(tag_id, str::bytes(v));
287+
fn wr_tagged_str(tag_id: uint, v: &str) {
288+
str::byte_slice(v, |b| self.wr_tagged_bytes(tag_id, b));
295289
}
296290

297291
fn wr_bytes(b: &[u8]) {
@@ -369,7 +363,7 @@ impl ebml::writer: serialization::serializer {
369363
fn emit_f32(_v: f32) { fail ~"Unimplemented: serializing an f32"; }
370364
fn emit_float(_v: float) { fail ~"Unimplemented: serializing a float"; }
371365

372-
fn emit_str(v: ~str) { self.wr_tagged_str(es_str as uint, v) }
366+
fn emit_str(v: &str) { self.wr_tagged_str(es_str as uint, v) }
373367

374368
fn emit_enum(name: ~str, f: fn()) {
375369
self._emit_label(name);
@@ -451,7 +445,7 @@ priv impl ebml_deserializer {
451445
return r_doc;
452446
}
453447

454-
fn push_doc<T: copy>(d: ebml::doc, f: fn() -> T) -> T{
448+
fn push_doc<T>(d: ebml::doc, f: fn() -> T) -> T{
455449
let old_parent = self.parent;
456450
let old_pos = self.pos;
457451
self.parent = d;
@@ -505,13 +499,13 @@ impl ebml_deserializer: serialization::deserializer {
505499
fn read_str() -> ~str { ebml::doc_as_str(self.next_doc(es_str)) }
506500

507501
// Compound types:
508-
fn read_enum<T:copy>(name: ~str, f: fn() -> T) -> T {
502+
fn read_enum<T>(name: ~str, f: fn() -> T) -> T {
509503
debug!{"read_enum(%s)", name};
510504
self._check_label(name);
511505
self.push_doc(self.next_doc(es_enum), f)
512506
}
513507

514-
fn read_enum_variant<T:copy>(f: fn(uint) -> T) -> T {
508+
fn read_enum_variant<T>(f: fn(uint) -> T) -> T {
515509
debug!{"read_enum_variant()"};
516510
let idx = self._next_uint(es_enum_vid);
517511
debug!{" idx=%u", idx};
@@ -520,12 +514,12 @@ impl ebml_deserializer: serialization::deserializer {
520514
}
521515
}
522516

523-
fn read_enum_variant_arg<T:copy>(idx: uint, f: fn() -> T) -> T {
517+
fn read_enum_variant_arg<T>(idx: uint, f: fn() -> T) -> T {
524518
debug!{"read_enum_variant_arg(idx=%u)", idx};
525519
f()
526520
}
527521

528-
fn read_vec<T:copy>(f: fn(uint) -> T) -> T {
522+
fn read_vec<T>(f: fn(uint) -> T) -> T {
529523
debug!{"read_vec()"};
530524
do self.push_doc(self.next_doc(es_vec)) {
531525
let len = self._next_uint(es_vec_len);
@@ -534,38 +528,38 @@ impl ebml_deserializer: serialization::deserializer {
534528
}
535529
}
536530

537-
fn read_vec_elt<T:copy>(idx: uint, f: fn() -> T) -> T {
531+
fn read_vec_elt<T>(idx: uint, f: fn() -> T) -> T {
538532
debug!{"read_vec_elt(idx=%u)", idx};
539533
self.push_doc(self.next_doc(es_vec_elt), f)
540534
}
541535

542-
fn read_box<T:copy>(f: fn() -> T) -> T {
536+
fn read_box<T>(f: fn() -> T) -> T {
543537
debug!{"read_box()"};
544538
f()
545539
}
546540

547-
fn read_uniq<T:copy>(f: fn() -> T) -> T {
541+
fn read_uniq<T>(f: fn() -> T) -> T {
548542
debug!{"read_uniq()"};
549543
f()
550544
}
551545

552-
fn read_rec<T:copy>(f: fn() -> T) -> T {
546+
fn read_rec<T>(f: fn() -> T) -> T {
553547
debug!{"read_rec()"};
554548
f()
555549
}
556550

557-
fn read_rec_field<T:copy>(f_name: ~str, f_idx: uint, f: fn() -> T) -> T {
551+
fn read_rec_field<T>(f_name: ~str, f_idx: uint, f: fn() -> T) -> T {
558552
debug!{"read_rec_field(%s, idx=%u)", f_name, f_idx};
559553
self._check_label(f_name);
560554
f()
561555
}
562556

563-
fn read_tup<T:copy>(sz: uint, f: fn() -> T) -> T {
557+
fn read_tup<T>(sz: uint, f: fn() -> T) -> T {
564558
debug!{"read_tup(sz=%u)", sz};
565559
f()
566560
}
567561

568-
fn read_tup_elt<T:copy>(idx: uint, f: fn() -> T) -> T {
562+
fn read_tup_elt<T>(idx: uint, f: fn() -> T) -> T {
569563
debug!{"read_tup_elt(idx=%u)", idx};
570564
f()
571565
}

src/libstd/prettyprint.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ impl Writer: serializer {
6363
self.write_str(fmt!{"%?_f32", v});
6464
}
6565

66-
fn emit_str(v: ~str) {
66+
fn emit_str(v: &str) {
6767
self.write_str(fmt!{"%?", v});
6868
}
6969

@@ -127,4 +127,4 @@ impl Writer: serializer {
127127
if idx > 0u { self.write_str(~", "); }
128128
f();
129129
}
130-
}
130+
}

src/libstd/serialization.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ trait serializer {
2323
fn emit_float(v: float);
2424
fn emit_f64(v: f64);
2525
fn emit_f32(v: f32);
26-
fn emit_str(v: ~str);
26+
fn emit_str(v: &str);
2727

2828
// Compound types:
2929
fn emit_enum(name: ~str, f: fn());
@@ -65,17 +65,17 @@ trait deserializer {
6565
fn read_float() -> float;
6666

6767
// Compound types:
68-
fn read_enum<T:copy>(name: ~str, f: fn() -> T) -> T;
69-
fn read_enum_variant<T:copy>(f: fn(uint) -> T) -> T;
70-
fn read_enum_variant_arg<T:copy>(idx: uint, f: fn() -> T) -> T;
71-
fn read_vec<T:copy>(f: fn(uint) -> T) -> T;
72-
fn read_vec_elt<T:copy>(idx: uint, f: fn() -> T) -> T;
73-
fn read_box<T:copy>(f: fn() -> T) -> T;
74-
fn read_uniq<T:copy>(f: fn() -> T) -> T;
75-
fn read_rec<T:copy>(f: fn() -> T) -> T;
76-
fn read_rec_field<T:copy>(f_name: ~str, f_idx: uint, f: fn() -> T) -> T;
77-
fn read_tup<T:copy>(sz: uint, f: fn() -> T) -> T;
78-
fn read_tup_elt<T:copy>(idx: uint, f: fn() -> T) -> T;
68+
fn read_enum<T>(name: ~str, f: fn() -> T) -> T;
69+
fn read_enum_variant<T>(f: fn(uint) -> T) -> T;
70+
fn read_enum_variant_arg<T>(idx: uint, f: fn() -> T) -> T;
71+
fn read_vec<T>(f: fn(uint) -> T) -> T;
72+
fn read_vec_elt<T>(idx: uint, f: fn() -> T) -> T;
73+
fn read_box<T>(f: fn() -> T) -> T;
74+
fn read_uniq<T>(f: fn() -> T) -> T;
75+
fn read_rec<T>(f: fn() -> T) -> T;
76+
fn read_rec_field<T>(f_name: ~str, f_idx: uint, f: fn() -> T) -> T;
77+
fn read_tup<T>(sz: uint, f: fn() -> T) -> T;
78+
fn read_tup_elt<T>(idx: uint, f: fn() -> T) -> T;
7979
}
8080

8181
// ___________________________________________________________________________
@@ -201,7 +201,7 @@ fn deserialize_i64<D: deserializer>(d: D) -> i64 {
201201
d.read_i64()
202202
}
203203

204-
fn serialize_str<S: serializer>(s: S, v: ~str) {
204+
fn serialize_str<S: serializer>(s: S, v: &str) {
205205
s.emit_str(v);
206206
}
207207

src/rustc/driver/driver.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -583,8 +583,9 @@ fn parse_pretty(sess: session, &&name: ~str) -> pp_mode {
583583
~"expanded,identified" => ppm_expanded_identified,
584584
~"identified" => ppm_identified,
585585
_ => {
586-
sess.fatal(~"argument to `pretty` must be one of `normal`, `typed`, \
587-
or `identified`");
586+
sess.fatal(~"argument to `pretty` must be one of `normal`, \
587+
`expanded`, `typed`, `identified`, \
588+
or `expanded,identified`");
588589
}
589590
}
590591
}

0 commit comments

Comments
 (0)