Skip to content

Commit 97ddf3c

Browse files
committed
Stop resolving static methods at the module level. Closes rust-lang#4179
1 parent 8e28f23 commit 97ddf3c

25 files changed

+74
-82
lines changed

src/librustc/metadata/decoder.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ use reader = std::ebml::reader;
2525
use std::ebml;
2626
use std::map::HashMap;
2727
use std::map;
28-
use std::serialize::decode;
28+
use std::serialize::traits::Decodable;
2929
use syntax::ast_map;
3030
use syntax::attr;
3131
use syntax::diagnostic::span_handler;
@@ -284,7 +284,7 @@ fn item_ty_param_bounds(item: ebml::Doc, tcx: ty::ctxt, cdata: cmd)
284284

285285
fn item_ty_region_param(item: ebml::Doc) -> Option<ty::region_variance> {
286286
reader::maybe_get_doc(item, tag_region_param).map(|doc| {
287-
decode(&reader::Decoder(*doc))
287+
Decodable::decode(&reader::Decoder(*doc))
288288
})
289289
}
290290

src/librustc/middle/astencode.rs

+14-12
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,8 @@ use std::ebml::writer::Encoder;
2828
use std::ebml;
2929
use std::map::HashMap;
3030
use std::serialize;
31-
use std::serialize::{Encodable, EncoderHelpers, DecoderHelpers, decode};
31+
use std::serialize::{Encodable, EncoderHelpers, DecoderHelpers};
32+
use std::serialize::traits::Decodable;
3233
use syntax::ast;
3334
use syntax::ast_map;
3435
use syntax::ast_util;
@@ -117,7 +118,7 @@ fn decode_inlined_item(cdata: cstore::crate_metadata,
117118
debug!("> Decoding inlined fn: %s::?",
118119
ast_map::path_to_str(path, tcx.sess.parse_sess.interner));
119120
let ast_dsr = &reader::Decoder(ast_doc);
120-
let from_id_range = decode(ast_dsr);
121+
let from_id_range = Decodable::decode(ast_dsr);
121122
let to_id_range = reserve_id_range(dcx.tcx.sess, from_id_range);
122123
let xcx = extended_decode_ctxt_(@{dcx: dcx,
123124
from_id_range: from_id_range,
@@ -210,7 +211,7 @@ trait def_id_decoder_helpers {
210211
impl<D: serialize::Decoder> D: def_id_decoder_helpers {
211212

212213
fn read_def_id(xcx: extended_decode_ctxt) -> ast::def_id {
213-
let did: ast::def_id = decode(&self);
214+
let did: ast::def_id = Decodable::decode(&self);
214215
did.tr(xcx)
215216
}
216217
}
@@ -287,7 +288,7 @@ fn simplify_ast(ii: ast::inlined_item) -> ast::inlined_item {
287288
fn decode_ast(par_doc: ebml::Doc) -> ast::inlined_item {
288289
let chi_doc = par_doc[c::tag_tree as uint];
289290
let d = &reader::Decoder(chi_doc);
290-
decode(d)
291+
Decodable::decode(d)
291292
}
292293

293294
fn renumber_ast(xcx: extended_decode_ctxt, ii: ast::inlined_item)
@@ -332,7 +333,7 @@ fn encode_def(ebml_w: writer::Encoder, def: ast::def) {
332333

333334
fn decode_def(xcx: extended_decode_ctxt, doc: ebml::Doc) -> ast::def {
334335
let dsr = &reader::Decoder(doc);
335-
let def: ast::def = decode(dsr);
336+
let def: ast::def = Decodable::decode(dsr);
336337
def.tr(xcx)
337338
}
338339

@@ -430,7 +431,7 @@ trait ebml_decoder_helper {
430431

431432
impl reader::Decoder: ebml_decoder_helper {
432433
fn read_freevar_entry(xcx: extended_decode_ctxt) -> freevar_entry {
433-
let fv: freevar_entry = decode(&self);
434+
let fv: freevar_entry = Decodable::decode(&self);
434435
fv.tr(xcx)
435436
}
436437
}
@@ -473,12 +474,13 @@ impl reader::Decoder: read_method_map_entry_helper {
473474
}),
474475
explicit_self:
475476
self.read_field(~"explicit_self", 2u, || {
476-
let self_type: ast::self_ty_ = decode(&self);
477+
let self_type: ast::self_ty_ = Decodable::decode(&self);
477478
self_type
478479
}),
479480
origin:
480481
self.read_field(~"origin", 1u, || {
481-
let method_origin: method_origin = decode(&self);
482+
let method_origin: method_origin =
483+
Decodable::decode(&self);
482484
method_origin.tr(xcx)
483485
})}
484486
}
@@ -926,7 +928,7 @@ impl reader::Decoder: ebml_decoder_decoder_helpers {
926928
@self.read_to_vec(|| self.read_bounds(xcx) )
927929
}),
928930
region_param: self.read_field(~"region_param", 1u, || {
929-
decode(&self)
931+
Decodable::decode(&self)
930932
}),
931933
ty: self.read_field(~"ty", 2u, || {
932934
self.read_ty(xcx)
@@ -990,11 +992,11 @@ fn decode_side_tables(xcx: extended_decode_ctxt,
990992
dcx.maps.vtable_map.insert(id,
991993
val_dsr.read_vtable_res(xcx));
992994
} else if tag == (c::tag_table_adjustments as uint) {
993-
let adj: @ty::AutoAdjustment = @decode(val_dsr);
995+
let adj: @ty::AutoAdjustment = @Decodable::decode(val_dsr);
994996
adj.tr(xcx);
995997
dcx.tcx.adjustments.insert(id, adj);
996998
} else if tag == (c::tag_table_value_mode as uint) {
997-
let vm: ty::ValueMode = decode(val_dsr);
999+
let vm: ty::ValueMode = Decodable::decode(val_dsr);
9981000
dcx.tcx.value_modes.insert(id, vm);
9991001
} else {
10001002
xcx.dcx.tcx.sess.bug(
@@ -1020,7 +1022,7 @@ fn encode_item_ast(ebml_w: writer::Encoder, item: @ast::item) {
10201022
fn decode_item_ast(par_doc: ebml::Doc) -> @ast::item {
10211023
let chi_doc = par_doc[c::tag_tree as uint];
10221024
let d = &reader::Decoder(chi_doc);
1023-
@decode(d)
1025+
@Decodable::decode(d)
10241026
}
10251027

10261028
#[cfg(test)]

src/librustc/middle/resolve.rs

-11
Original file line numberDiff line numberDiff line change
@@ -1336,17 +1336,6 @@ impl Resolver {
13361336
Some(local_def(item.id)),
13371337
ty_m.purity);
13381338

1339-
// For now, add to both the trait module and the
1340-
// enclosing module, for backwards compatibility.
1341-
let (method_name_bindings, _) =
1342-
self.add_child(ident,
1343-
new_parent,
1344-
ForbidDuplicateValues,
1345-
ty_m.span);
1346-
method_name_bindings.define_value(Public,
1347-
def,
1348-
ty_m.span);
1349-
13501339
let (method_name_bindings, _) =
13511340
self.add_child(ident,
13521341
module_parent_opt.get(),

src/librusti/rusti.rc

+2-1
Original file line numberDiff line numberDiff line change
@@ -272,8 +272,9 @@ fn run(repl: Repl, input: ~str) -> Repl {
272272
vtable_map: vtable_map};
273273

274274
debug!("translation");
275+
let path = ~path::GenericPath::from_str("<repl>");
275276
let (llmod, _) = trans::base::trans_crate(sess, crate, ty_cx,
276-
~path::from_str("<repl>"),
277+
path,
277278
exp_map2, maps);
278279
let pm = llvm::LLVMCreatePassManager();
279280

src/libstd/ebml.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -657,7 +657,7 @@ mod tests {
657657
};
658658
let ebml_doc = reader::Doc(@bytes);
659659
let deser = reader::Decoder(ebml_doc);
660-
let v1 = serialize::decode(&deser);
660+
let v1 = serialize::traits::Decodable::decode(&deser);
661661
debug!("v1 == %?", v1);
662662
assert v == v1;
663663
}

src/libstd/flatpipes.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,6 @@ pub mod flatteners {
324324

325325
use serialize::{Encoder, Decoder,
326326
Encodable, Decodable};
327-
use serialize::decode;
328327

329328
use core::io::{Writer, Reader, BytesWriter, ReaderUtil};
330329
use flatpipes::util::BufReader;
@@ -433,15 +432,15 @@ pub mod flatteners {
433432
let buf = vec::from_slice(buf);
434433
let buf_reader = @BufReader::new(move buf);
435434
let reader = buf_reader as @Reader;
436-
let deser: D = from_reader(reader);
437-
decode(&deser)
435+
let deser: D = FromReader::from_reader(reader);
436+
Decodable::decode(&deser)
438437
}
439438

440439
pub fn serialize_value<D: Encoder FromWriter,
441440
T: Encodable<D>>(val: &T) -> ~[u8] {
442441
let bytes_writer = @BytesWriter();
443442
let writer = bytes_writer as @Writer;
444-
let ser = from_writer(writer);
443+
let ser = FromWriter::from_writer(writer);
445444
val.encode(&ser);
446445
let bytes = bytes_writer.bytes.check_out(|bytes| move bytes);
447446
return move bytes;

src/libstd/serialize.rs

+20-19
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,7 @@ pub impl<S: Encoder, T: Encodable<S>> ~T: Encodable<S> {
298298

299299
pub impl<D: Decoder, T: Decodable<D>> ~T: Decodable<D> {
300300
static fn decode(&self, d: &D) -> ~T {
301-
d.read_owned(|| ~decode(d))
301+
d.read_owned(|| ~Decodable::decode(d))
302302
}
303303
}
304304

@@ -310,7 +310,7 @@ pub impl<S: Encoder, T: Encodable<S>> @T: Encodable<S> {
310310

311311
pub impl<D: Decoder, T: Decodable<D>> @T: Decodable<D> {
312312
static fn decode(&self, d: &D) -> @T {
313-
d.read_managed(|| @decode(d))
313+
d.read_managed(|| @Decodable::decode(d))
314314
}
315315
}
316316

@@ -338,7 +338,7 @@ pub impl<D: Decoder, T: Decodable<D>> ~[T]: Decodable<D> {
338338
static fn decode(&self, d: &D) -> ~[T] {
339339
do d.read_owned_vec |len| {
340340
do vec::from_fn(len) |i| {
341-
d.read_vec_elt(i, || decode(d))
341+
d.read_vec_elt(i, || Decodable::decode(d))
342342
}
343343
}
344344
}
@@ -358,7 +358,7 @@ pub impl<D: Decoder, T: Decodable<D>> @[T]: Decodable<D> {
358358
static fn decode(&self, d: &D) -> @[T] {
359359
do d.read_managed_vec |len| {
360360
do at_vec::from_fn(len) |i| {
361-
d.read_vec_elt(i, || decode(d))
361+
d.read_vec_elt(i, || Decodable::decode(d))
362362
}
363363
}
364364
}
@@ -385,7 +385,8 @@ pub impl<D: Decoder, T: Decodable<D>> Option<T>: Decodable<D> {
385385
do d.read_enum_variant |i| {
386386
match i {
387387
0 => None,
388-
1 => Some(d.read_enum_variant_arg(0u, || decode(d))),
388+
1 => Some(d.read_enum_variant_arg(
389+
0u, || Decodable::decode(d))),
389390
_ => fail(fmt!("Bad variant for option: %u", i))
390391
}
391392
}
@@ -418,8 +419,8 @@ pub impl<
418419
static fn decode(&self, d: &D) -> (T0, T1) {
419420
do d.read_tup(2) {
420421
(
421-
d.read_tup_elt(0, || decode(d)),
422-
d.read_tup_elt(1, || decode(d))
422+
d.read_tup_elt(0, || Decodable::decode(d)),
423+
d.read_tup_elt(1, || Decodable::decode(d))
423424
)
424425
}
425426
}
@@ -453,9 +454,9 @@ pub impl<
453454
static fn decode(&self, d: &D) -> (T0, T1, T2) {
454455
do d.read_tup(3) {
455456
(
456-
d.read_tup_elt(0, || decode(d)),
457-
d.read_tup_elt(1, || decode(d)),
458-
d.read_tup_elt(2, || decode(d))
457+
d.read_tup_elt(0, || Decodable::decode(d)),
458+
d.read_tup_elt(1, || Decodable::decode(d)),
459+
d.read_tup_elt(2, || Decodable::decode(d))
459460
)
460461
}
461462
}
@@ -492,10 +493,10 @@ pub impl<
492493
static fn decode(&self, d: &D) -> (T0, T1, T2, T3) {
493494
do d.read_tup(4) {
494495
(
495-
d.read_tup_elt(0, || decode(d)),
496-
d.read_tup_elt(1, || decode(d)),
497-
d.read_tup_elt(2, || decode(d)),
498-
d.read_tup_elt(3, || decode(d))
496+
d.read_tup_elt(0, || Decodable::decode(d)),
497+
d.read_tup_elt(1, || Decodable::decode(d)),
498+
d.read_tup_elt(2, || Decodable::decode(d)),
499+
d.read_tup_elt(3, || Decodable::decode(d))
499500
)
500501
}
501502
}
@@ -536,11 +537,11 @@ pub impl<
536537
-> (T0, T1, T2, T3, T4) {
537538
do d.read_tup(5) {
538539
(
539-
d.read_tup_elt(0, || decode(d)),
540-
d.read_tup_elt(1, || decode(d)),
541-
d.read_tup_elt(2, || decode(d)),
542-
d.read_tup_elt(3, || decode(d)),
543-
d.read_tup_elt(4, || decode(d))
540+
d.read_tup_elt(0, || Decodable::decode(d)),
541+
d.read_tup_elt(1, || Decodable::decode(d)),
542+
d.read_tup_elt(2, || Decodable::decode(d)),
543+
d.read_tup_elt(3, || Decodable::decode(d)),
544+
d.read_tup_elt(4, || Decodable::decode(d))
544545
)
545546
}
546547
}

src/libstd/workcache.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ use either::{Right,Left,Either};
1515

1616
use json;
1717
use sha1;
18-
use serialize::{Encoder, Encodable, Decoder, Decodable, decode};
18+
use serialize::{Encoder, Encodable, Decoder, Decodable};
1919

2020
/**
2121
*

src/test/auxiliary/static-methods-crate.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ impl bool: read {
3636
}
3737

3838
fn read<T: read Copy>(s: ~str) -> T {
39-
match readMaybe(s) {
39+
match read::readMaybe(s) {
4040
Some(x) => x,
4141
_ => fail ~"read failed!"
4242
}

src/test/run-pass/auto-encode.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use std::ebml;
2222
use EBReader = std::ebml::reader;
2323
use EBWriter = std::ebml::writer;
2424
use io::Writer;
25-
use std::serialize::{Encodable, Decodable, decode};
25+
use std::serialize::traits::{Encodable, Decodable};
2626
use std::prettyprint;
2727
use std::time;
2828

@@ -47,7 +47,7 @@ fn test_ebml<A:
4747
a1.encode(ebml_w)
4848
};
4949
let d = EBReader::Doc(@move bytes);
50-
let a2: A = decode(&EBReader::Decoder(d));
50+
let a2: A = Decodable::decode(&EBReader::Decoder(d));
5151
assert *a1 == a2;
5252
}
5353

src/test/run-pass/static-fn-inline-xc.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,5 @@ extern mod mycore(name ="static_fn_inline_xc_aux");
1616
use mycore::num;
1717

1818
fn main() {
19-
let _1:float = num::from_int2(1i);
19+
let _1:float = num::Num2::from_int2(1i);
2020
}

src/test/run-pass/static-fn-trait-xc.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ extern mod mycore(name ="static_fn_trait_xc_aux");
66
use mycore::num;
77

88
fn main() {
9-
let _1:float = num::from_int2(1i);
9+
let _1:float = num::Num2::from_int2(1i);
1010
}

src/test/run-pass/static-method-in-trait-with-tps-intracrate.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,6 @@ impl FromThinAir: Deserializer {
3030

3131
fn main() {
3232
let d = FromThinAir { dummy: () };
33-
let i: int = deserialize(&d);
33+
let i: int = Deserializable::deserialize(&d);
3434
assert i == 22;
3535
}

src/test/run-pass/static-method-test.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ trait bool_like {
1818
}
1919

2020
fn andand<T: bool_like Copy>(x1: T, x2: T) -> T {
21-
select(x1, x2, x1)
21+
bool_like::select(x1, x2, x1)
2222
}
2323

2424
impl bool: bool_like {
@@ -57,7 +57,7 @@ impl<A> ~[A]: buildable<A> {
5757

5858
#[inline(always)]
5959
pure fn build<A, B: buildable<A>>(builder: fn(push: pure fn(+v: A))) -> B {
60-
build_sized(4, builder)
60+
buildable::build_sized(4, builder)
6161
}
6262

6363
/// Apply a function to each element of an iterable and return the results
@@ -71,7 +71,7 @@ fn map<T, IT: BaseIter<T>, U, BU: buildable<U>>
7171
}
7272

7373
fn seq_range<BT: buildable<int>>(lo: uint, hi: uint) -> BT {
74-
do build_sized(hi-lo) |push| {
74+
do buildable::build_sized(hi-lo) |push| {
7575
for uint::range(lo, hi) |i| {
7676
push(i as int);
7777
}
@@ -87,7 +87,7 @@ fn main() {
8787
let v: ~[int] = map(&[1,2,3], |x| 1+x);
8888
assert v == ~[2, 3, 4];
8989

90-
assert select(true, 9, 14) == 9;
90+
assert bool_like::select(true, 9, 14) == 9;
9191
assert !andand(true, false);
9292
assert andand(7, 12) == 12;
9393
assert andand(0, 12) == 0;

src/test/run-pass/static-method-xcrate.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
extern mod static_methods_crate;
1616
use static_methods_crate::read;
17-
use readMaybeRenamed = static_methods_crate::readMaybe;
17+
use readMaybeRenamed = static_methods_crate::read::readMaybe;
1818

1919
fn main() {
2020
let result: int = read(~"5");

0 commit comments

Comments
 (0)