Skip to content

Commit 419f6ac

Browse files
committed
std: rename {read,emit}_field to {read,emit}_struct_field
1 parent 97cc571 commit 419f6ac

File tree

5 files changed

+183
-10
lines changed

5 files changed

+183
-10
lines changed

src/librustc/middle/astencode.rs

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,7 @@ trait read_method_map_entry_helper {
556556
-> method_map_entry;
557557
}
558558
559+
#[cfg(stage0)]
559560
fn encode_method_map_entry(ecx: @e::EncodeContext,
560561
ebml_w: writer::Encoder,
561562
mme: method_map_entry) {
@@ -572,7 +573,27 @@ fn encode_method_map_entry(ecx: @e::EncodeContext,
572573
}
573574
}
574575
576+
#[cfg(stage1)]
577+
#[cfg(stage2)]
578+
#[cfg(stage3)]
579+
fn encode_method_map_entry(ecx: @e::EncodeContext,
580+
ebml_w: writer::Encoder,
581+
mme: method_map_entry) {
582+
do ebml_w.emit_struct("method_map_entry", 3) {
583+
do ebml_w.emit_struct_field("self_arg", 0u) {
584+
ebml_w.emit_arg(ecx, mme.self_arg);
585+
}
586+
do ebml_w.emit_struct_field("explicit_self", 2u) {
587+
mme.explicit_self.encode(&ebml_w);
588+
}
589+
do ebml_w.emit_struct_field("origin", 1u) {
590+
mme.origin.encode(&ebml_w);
591+
}
592+
}
593+
}
594+
575595
impl read_method_map_entry_helper for reader::Decoder {
596+
#[cfg(stage0)]
576597
fn read_method_map_entry(&self, xcx: @ExtendedDecodeContext)
577598
-> method_map_entry {
578599
do self.read_struct("method_map_entry", 3) {
@@ -592,6 +613,29 @@ impl read_method_map_entry_helper for reader::Decoder {
592613
}
593614
}
594615
}
616+
617+
#[cfg(stage1)]
618+
#[cfg(stage2)]
619+
#[cfg(stage3)]
620+
fn read_method_map_entry(&self, xcx: @ExtendedDecodeContext)
621+
-> method_map_entry {
622+
do self.read_struct("method_map_entry", 3) {
623+
method_map_entry {
624+
self_arg: self.read_struct_field("self_arg", 0u, || {
625+
self.read_arg(xcx)
626+
}),
627+
explicit_self: self.read_struct_field("explicit_self", 2u, || {
628+
let self_type: ast::self_ty_ = Decodable::decode(self);
629+
self_type
630+
}),
631+
origin: self.read_struct_field("origin", 1u, || {
632+
let method_origin: method_origin =
633+
Decodable::decode(self);
634+
method_origin.tr(xcx)
635+
}),
636+
}
637+
}
638+
}
595639
}
596640
597641
impl tr for method_origin {
@@ -782,6 +826,7 @@ impl ebml_writer_helpers for writer::Encoder {
782826
}
783827
}
784828
829+
#[cfg(stage0)]
785830
fn emit_tpbt(&self, ecx: @e::EncodeContext,
786831
tpbt: ty::ty_param_bounds_and_ty) {
787832
do self.emit_struct("ty_param_bounds_and_ty", 2) {
@@ -804,6 +849,32 @@ impl ebml_writer_helpers for writer::Encoder {
804849
}
805850
}
806851
}
852+
853+
#[cfg(stage1)]
854+
#[cfg(stage2)]
855+
#[cfg(stage3)]
856+
fn emit_tpbt(&self, ecx: @e::EncodeContext,
857+
tpbt: ty::ty_param_bounds_and_ty) {
858+
do self.emit_struct("ty_param_bounds_and_ty", 2) {
859+
do self.emit_struct_field("generics", 0) {
860+
do self.emit_struct("Generics", 2) {
861+
do self.emit_struct_field("type_param_defs", 0) {
862+
do self.emit_from_vec(*tpbt.generics.type_param_defs)
863+
|type_param_def|
864+
{
865+
self.emit_type_param_def(ecx, type_param_def);
866+
}
867+
}
868+
do self.emit_struct_field("region_param", 1) {
869+
tpbt.generics.region_param.encode(self);
870+
}
871+
}
872+
}
873+
do self.emit_struct_field("ty", 1) {
874+
self.emit_ty(ecx, tpbt.ty);
875+
}
876+
}
877+
}
807878
}
808879
809880
trait write_tag_and_id {
@@ -1053,6 +1124,7 @@ impl ebml_decoder_decoder_helpers for reader::Decoder {
10531124
}
10541125
}
10551126
1127+
#[cfg(stage0)]
10561128
fn read_ty_param_bounds_and_ty(&self, xcx: @ExtendedDecodeContext)
10571129
-> ty::ty_param_bounds_and_ty
10581130
{
@@ -1075,6 +1147,31 @@ impl ebml_decoder_decoder_helpers for reader::Decoder {
10751147
}
10761148
}
10771149
1150+
#[cfg(stage1)]
1151+
#[cfg(stage2)]
1152+
#[cfg(stage3)]
1153+
fn read_ty_param_bounds_and_ty(&self, xcx: @ExtendedDecodeContext)
1154+
-> ty::ty_param_bounds_and_ty
1155+
{
1156+
do self.read_struct("ty_param_bounds_and_ty", 2) {
1157+
ty::ty_param_bounds_and_ty {
1158+
generics: do self.read_struct("Generics", 2) {
1159+
ty::Generics {
1160+
type_param_defs: self.read_struct_field("type_param_defs", 0, || {
1161+
@self.read_to_vec(|| self.read_type_param_def(xcx))
1162+
}),
1163+
region_param: self.read_struct_field(~"region_param", 1, || {
1164+
Decodable::decode(self)
1165+
})
1166+
}
1167+
},
1168+
ty: self.read_struct_field("ty", 1, || {
1169+
self.read_ty(xcx)
1170+
})
1171+
}
1172+
}
1173+
}
1174+
10781175
fn convert_def_id(&self, xcx: @ExtendedDecodeContext,
10791176
source: tydecode::DefIdSource,
10801177
did: ast::def_id) -> ast::def_id {

src/libstd/ebml.rs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -340,8 +340,18 @@ pub mod reader {
340340
f()
341341
}
342342
343+
#[cfg(stage0)]
343344
fn read_field<T>(&self, name: &str, idx: uint, f: &fn() -> T) -> T {
344-
debug!("read_field(name=%s, idx=%u)", name, idx);
345+
debug!("read_field(name=%?, idx=%u)", name, idx);
346+
self._check_label(name);
347+
f()
348+
}
349+
350+
#[cfg(stage1)]
351+
#[cfg(stage2)]
352+
#[cfg(stage3)]
353+
fn read_struct_field<T>(&self, name: &str, idx: uint, f: &fn() -> T) -> T {
354+
debug!("read_struct_field(name=%?, idx=%u)", name, idx);
345355
self._check_label(name);
346356
f()
347357
}
@@ -614,10 +624,18 @@ pub mod writer {
614624
fn emit_enum_variant_arg(&self, _idx: uint, f: &fn()) { f() }
615625
616626
fn emit_struct(&self, _name: &str, _len: uint, f: &fn()) { f() }
627+
#[cfg(stage0)]
617628
fn emit_field(&self, name: &str, _idx: uint, f: &fn()) {
618629
self._emit_label(name);
619630
f()
620631
}
632+
#[cfg(stage1)]
633+
#[cfg(stage2)]
634+
#[cfg(stage3)]
635+
fn emit_struct_field(&self, name: &str, _idx: uint, f: &fn()) {
636+
self._emit_label(name);
637+
f()
638+
}
621639
622640
fn emit_option(&self, f: &fn()) {
623641
self.emit_enum("Option", f);

src/libstd/json.rs

Lines changed: 49 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,22 @@ impl serialize::Encoder for Encoder {
135135
f();
136136
self.wr.write_char('}');
137137
}
138+
#[cfg(stage0)]
138139
fn emit_field(&self, name: &str, idx: uint, f: &fn()) {
139140
if idx != 0 { self.wr.write_char(','); }
140141
self.wr.write_str(escape_str(name));
141142
self.wr.write_char(':');
142143
f();
143144
}
145+
#[cfg(stage1)]
146+
#[cfg(stage2)]
147+
#[cfg(stage3)]
148+
fn emit_struct_field(&self, name: &str, idx: uint, f: &fn()) {
149+
if idx != 0 { self.wr.write_char(','); }
150+
self.wr.write_str(escape_str(name));
151+
self.wr.write_char(':');
152+
f();
153+
}
144154

145155
fn emit_option(&self, f: &fn()) { f(); }
146156
fn emit_option_none(&self) { self.emit_nil(); }
@@ -254,6 +264,7 @@ impl serialize::Encoder for PrettyEncoder {
254264
self.wr.write_char('}');
255265
}
256266
}
267+
#[cfg(stage0)]
257268
fn emit_field(&self, name: &str, idx: uint, f: &fn()) {
258269
if idx == 0 {
259270
self.wr.write_char('\n');
@@ -265,6 +276,20 @@ impl serialize::Encoder for PrettyEncoder {
265276
self.wr.write_str(": ");
266277
f();
267278
}
279+
#[cfg(stage1)]
280+
#[cfg(stage2)]
281+
#[cfg(stage3)]
282+
fn emit_struct_field(&self, name: &str, idx: uint, f: &fn()) {
283+
if idx == 0 {
284+
self.wr.write_char('\n');
285+
} else {
286+
self.wr.write_str(",\n");
287+
}
288+
self.wr.write_str(spaces(self.indent));
289+
self.wr.write_str(escape_str(name));
290+
self.wr.write_str(": ");
291+
f();
292+
}
268293

269294
fn emit_option(&self, f: &fn()) { f(); }
270295
fn emit_option_none(&self) { self.emit_nil(); }
@@ -834,8 +859,31 @@ impl serialize::Decoder for Decoder {
834859
value
835860
}
836861
862+
#[cfg(stage0)]
837863
fn read_field<T>(&self, name: &str, idx: uint, f: &fn() -> T) -> T {
838-
debug!("read_field(%s, idx=%u)", name, idx);
864+
debug!("read_field(name=%?, idx=%u)", name, idx);
865+
match self.stack.pop() {
866+
Object(obj) => {
867+
let mut obj = obj;
868+
let value = match obj.pop(&name.to_owned()) {
869+
None => fail!(fmt!("no such field: %s", name)),
870+
Some(json) => {
871+
self.stack.push(json);
872+
f()
873+
}
874+
};
875+
self.stack.push(Object(obj));
876+
value
877+
}
878+
value => fail!(fmt!("not an object: %?", value))
879+
}
880+
}
881+
882+
#[cfg(stage1)]
883+
#[cfg(stage2)]
884+
#[cfg(stage3)]
885+
fn read_struct_field<T>(&self, name: &str, idx: uint, f: &fn() -> T) -> T {
886+
debug!("read_struct_field(name=%?, idx=%u)", name, idx);
839887
match self.stack.pop() {
840888
Object(obj) => {
841889
let mut obj = obj;

src/libstd/serialize.rs

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,8 +48,13 @@ pub trait Encoder {
4848
fn emit_enum_variant(&self, v_name: &str, v_id: uint, sz: uint, f: &fn());
4949
fn emit_enum_variant_arg(&self, idx: uint, f: &fn());
5050

51-
fn emit_struct(&self, name: &str, _len: uint, f: &fn());
51+
fn emit_struct(&self, name: &str, len: uint, f: &fn());
52+
#[cfg(stage0)]
5253
fn emit_field(&self, f_name: &str, f_idx: uint, f: &fn());
54+
#[cfg(stage1)]
55+
#[cfg(stage2)]
56+
#[cfg(stage3)]
57+
fn emit_struct_field(&self, f_name: &str, f_idx: uint, f: &fn());
5358

5459
// Specialized types:
5560
fn emit_option(&self, f: &fn());
@@ -89,8 +94,13 @@ pub trait Decoder {
8994
fn read_enum_variant<T>(&self, names: &[&str], f: &fn(uint) -> T) -> T;
9095
fn read_enum_variant_arg<T>(&self, idx: uint, f: &fn() -> T) -> T;
9196

92-
fn read_struct<T>(&self, name: &str, _len: uint, f: &fn() -> T) -> T;
93-
fn read_field<T>(&self, name: &str, idx: uint, f: &fn() -> T) -> T;
97+
fn read_struct<T>(&self, s_name: &str, len: uint, f: &fn() -> T) -> T;
98+
#[cfg(stage0)]
99+
fn read_field<T>(&self, f_name: &str, f_idx: uint, f: &fn() -> T) -> T;
100+
#[cfg(stage1)]
101+
#[cfg(stage2)]
102+
#[cfg(stage3)]
103+
fn read_struct_field<T>(&self, f_name: &str, f_idx: uint, f: &fn() -> T) -> T;
94104

95105
// Specialized types:
96106
fn read_option<T>(&self, f: &fn(bool) -> T) -> T;

src/libsyntax/ext/auto_encode.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -732,12 +732,12 @@ fn mk_struct_ser_impl(
732732
)
733733
);
734734

735-
// ast for `__s.emit_field($(name), $(idx), $(expr_lambda))`
735+
// ast for `__s.emit_struct_field($(name), $(idx), $(expr_lambda))`
736736
cx.stmt(
737737
cx.expr_method_call(
738738
span,
739739
cx.expr_var(span, ~"__s"),
740-
cx.ident_of(~"emit_field"),
740+
cx.ident_of(~"emit_struct_field"),
741741
~[
742742
cx.lit_str(span, @cx.str_of(field.ident)),
743743
cx.lit_uint(span, idx),
@@ -786,11 +786,11 @@ fn mk_struct_deser_impl(
786786
)
787787
);
788788

789-
// ast for `__d.read_field($(name), $(idx), $(expr_lambda))`
789+
// ast for `__d.read_struct_field($(name), $(idx), $(expr_lambda))`
790790
let expr: @ast::expr = cx.expr_method_call(
791791
span,
792792
cx.expr_var(span, ~"__d"),
793-
cx.ident_of(~"read_field"),
793+
cx.ident_of(~"read_struct_field"),
794794
~[
795795
cx.lit_str(span, @cx.str_of(field.ident)),
796796
cx.lit_uint(span, idx),
@@ -1256,7 +1256,7 @@ mod test {
12561256
fn emit_struct(&self, name: &str, +len: uint, f: &fn()) {
12571257
self.add_to_log(CallToEmitStruct (name.to_str(),len)); f();
12581258
}
1259-
fn emit_field(&self, name: &str, +idx: uint, f: &fn()) {
1259+
fn emit_struct_field(&self, name: &str, +idx: uint, f: &fn()) {
12601260
self.add_to_log(CallToEmitField (name.to_str(),idx)); f();
12611261
}
12621262

0 commit comments

Comments
 (0)