Skip to content

Commit 430652c

Browse files
committed
auto merge of #11370 : alexcrichton/rust/issue-10465, r=pwalton
Turned out to be a 2-line fix, but the compiler fallout was huge.
2 parents f3a8baa + 0547fb9 commit 430652c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+278
-247
lines changed

src/libextra/dlist.rs

+32-32
Original file line numberDiff line numberDiff line change
@@ -625,43 +625,43 @@ impl<A: Clone> Clone for DList<A> {
625625
}
626626

627627
#[cfg(test)]
628-
pub fn check_links<T>(list: &DList<T>) {
629-
let mut len = 0u;
630-
let mut last_ptr: Option<&Node<T>> = None;
631-
let mut node_ptr: &Node<T>;
632-
match list.list_head {
633-
None => { assert_eq!(0u, list.length); return }
634-
Some(ref node) => node_ptr = &**node,
635-
}
636-
loop {
637-
match (last_ptr, node_ptr.prev.resolve_immut()) {
638-
(None , None ) => {}
639-
(None , _ ) => fail!("prev link for list_head"),
640-
(Some(p), Some(pptr)) => {
641-
assert_eq!(p as *Node<T>, pptr as *Node<T>);
642-
}
643-
_ => fail!("prev link is none, not good"),
628+
mod tests {
629+
use container::Deque;
630+
use extra::test;
631+
use std::rand;
632+
use super::{DList, Node, ListInsertion};
633+
634+
pub fn check_links<T>(list: &DList<T>) {
635+
let mut len = 0u;
636+
let mut last_ptr: Option<&Node<T>> = None;
637+
let mut node_ptr: &Node<T>;
638+
match list.list_head {
639+
None => { assert_eq!(0u, list.length); return }
640+
Some(ref node) => node_ptr = &**node,
644641
}
645-
match node_ptr.next {
646-
Some(ref next) => {
647-
last_ptr = Some(node_ptr);
648-
node_ptr = &**next;
649-
len += 1;
642+
loop {
643+
match (last_ptr, node_ptr.prev.resolve_immut()) {
644+
(None , None ) => {}
645+
(None , _ ) => fail!("prev link for list_head"),
646+
(Some(p), Some(pptr)) => {
647+
assert_eq!(p as *Node<T>, pptr as *Node<T>);
648+
}
649+
_ => fail!("prev link is none, not good"),
650650
}
651-
None => {
652-
len += 1;
653-
break;
651+
match node_ptr.next {
652+
Some(ref next) => {
653+
last_ptr = Some(node_ptr);
654+
node_ptr = &**next;
655+
len += 1;
656+
}
657+
None => {
658+
len += 1;
659+
break;
660+
}
654661
}
655662
}
663+
assert_eq!(len, list.length);
656664
}
657-
assert_eq!(len, list.length);
658-
}
659-
660-
#[cfg(test)]
661-
mod tests {
662-
use super::*;
663-
use std::rand;
664-
use extra::test;
665665

666666
#[test]
667667
fn test_basic() {

src/libextra/json.rs

+1-2
Original file line numberDiff line numberDiff line change
@@ -1333,11 +1333,10 @@ impl to_str::ToStr for Error {
13331333

13341334
#[cfg(test)]
13351335
mod tests {
1336-
13371336
use super::*;
13381337

13391338
use std::io;
1340-
use serialize::Decodable;
1339+
use serialize::{Encodable, Decodable};
13411340
use treemap::TreeMap;
13421341

13431342
#[deriving(Eq, Encodable, Decodable)]

src/libextra/lib.rs

-12
Original file line numberDiff line numberDiff line change
@@ -34,10 +34,6 @@ Rust extras are part of the standard Rust distribution.
3434
#[deny(non_camel_case_types)];
3535
#[deny(missing_doc)];
3636

37-
use std::str::{StrSlice, OwnedStr};
38-
39-
pub use std::os;
40-
4137
// Utility modules
4238

4339
pub mod c_vec;
@@ -108,12 +104,4 @@ pub mod serialize;
108104
pub mod extra {
109105
pub use serialize;
110106
pub use test;
111-
112-
// For bootstrapping.
113-
pub use std::clone;
114-
pub use std::condition;
115-
pub use std::cmp;
116-
pub use std::unstable;
117-
pub use std::str;
118-
pub use std::os;
119107
}

src/libextra/num/bigint.rs

+2
Original file line numberDiff line numberDiff line change
@@ -1434,6 +1434,7 @@ impl BigInt {
14341434
#[cfg(test)]
14351435
mod biguint_tests {
14361436
use super::*;
1437+
use super::RandBigInt;
14371438
14381439
use std::cmp::{Less, Equal, Greater};
14391440
use std::i64;
@@ -2090,6 +2091,7 @@ mod biguint_tests {
20902091
#[cfg(test)]
20912092
mod bigint_tests {
20922093
use super::*;
2094+
use super::RandBigInt;
20932095

20942096
use std::cmp::{Less, Equal, Greater};
20952097
use std::i64;

src/libextra/ringbuf.rs

+3-2
Original file line numberDiff line numberDiff line change
@@ -404,10 +404,11 @@ impl<A> Extendable<A> for RingBuf<A> {
404404

405405
#[cfg(test)]
406406
mod tests {
407-
use super::*;
407+
use container::Deque;
408+
use extra::test;
408409
use std::clone::Clone;
409410
use std::cmp::Eq;
410-
use extra::test;
411+
use super::RingBuf;
411412

412413
#[test]
413414
fn test_simple() {

src/libextra/stats.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,6 @@ pub fn freq_count<T: Iterator<U>, U: Eq+Hash>(mut iter: T) -> hashmap::HashMap<U
432432

433433
#[cfg(test)]
434434
mod tests {
435-
436435
use stats::Stats;
437436
use stats::Summary;
438437
use stats::write_5_number_summary;
@@ -1018,6 +1017,7 @@ mod tests {
10181017
mod bench {
10191018
use extra::test::BenchHarness;
10201019
use std::vec;
1020+
use stats::Stats;
10211021

10221022
#[bench]
10231023
fn sum_three_items(bh: &mut BenchHarness) {

src/librustc/driver/driver.rs

+1
Original file line numberDiff line numberDiff line change
@@ -1134,6 +1134,7 @@ mod test {
11341134

11351135
use extra::getopts::groups::getopts;
11361136
use syntax::attr;
1137+
use syntax::attr::AttrMetaMethods;
11371138
use syntax::diagnostic;
11381139

11391140
// When the user supplies --test we should implicitly supply --cfg test

src/librustc/middle/borrowck/gather_loans/lifetime.rs

+1
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use middle::borrowck::*;
1717
use mc = middle::mem_categorization;
1818
use middle::ty;
19+
use util::ppaux::Repr;
1920
use syntax::ast;
2021
use syntax::codemap::Span;
2122

src/librustc/middle/resolve.rs

+26-57
Original file line numberDiff line numberDiff line change
@@ -5408,8 +5408,7 @@ impl Resolver {
54085408
}
54095409
}
54105410

5411-
fn search_for_traits_containing_method(&mut self, name: Ident)
5412-
-> ~[DefId] {
5411+
fn search_for_traits_containing_method(&mut self, name: Ident) -> ~[DefId] {
54135412
debug!("(searching for traits containing method) looking for '{}'",
54145413
self.session.str_of(name));
54155414

@@ -5438,71 +5437,41 @@ impl Resolver {
54385437
self.populate_module_if_necessary(search_module);
54395438

54405439
let children = search_module.children.borrow();
5441-
for (_, &child_name_bindings) in children.get().iter() {
5442-
match child_name_bindings.def_for_namespace(TypeNS) {
5443-
Some(def) => {
5444-
match def {
5445-
DefTrait(trait_def_id) => {
5446-
if candidate_traits.contains(&trait_def_id) {
5447-
self.add_trait_info(
5448-
&mut found_traits,
5449-
trait_def_id, name);
5450-
}
5451-
}
5452-
_ => {
5453-
// Continue.
5454-
}
5455-
}
5456-
}
5457-
None => {
5458-
// Continue.
5459-
}
5440+
for (_, &child_names) in children.get().iter() {
5441+
let def = match child_names.def_for_namespace(TypeNS) {
5442+
Some(def) => def,
5443+
None => continue
5444+
};
5445+
let trait_def_id = match def {
5446+
DefTrait(trait_def_id) => trait_def_id,
5447+
_ => continue,
5448+
};
5449+
if candidate_traits.contains(&trait_def_id) {
5450+
self.add_trait_info(&mut found_traits, trait_def_id,
5451+
name);
54605452
}
54615453
}
54625454

54635455
// Look for imports.
54645456
let import_resolutions = search_module.import_resolutions
54655457
.borrow();
5466-
for (_, &import_resolution) in import_resolutions.get()
5467-
.iter() {
5468-
match import_resolution.target_for_namespace(TypeNS) {
5469-
None => {
5470-
// Continue.
5471-
}
5472-
Some(target) => {
5473-
match target.bindings.def_for_namespace(TypeNS) {
5474-
Some(def) => {
5475-
match def {
5476-
DefTrait(trait_def_id) => {
5477-
if candidate_traits.contains(&trait_def_id) {
5478-
self.add_trait_info(
5479-
&mut found_traits,
5480-
trait_def_id, name);
5481-
self.used_imports.insert(
5482-
import_resolution.type_id
5483-
.get());
5484-
}
5485-
}
5486-
_ => {
5487-
// Continue.
5488-
}
5489-
}
5490-
}
5491-
None => {
5492-
// Continue.
5493-
}
5494-
}
5495-
}
5458+
for (_, &import) in import_resolutions.get().iter() {
5459+
let target = match import.target_for_namespace(TypeNS) {
5460+
None => continue,
5461+
Some(target) => target,
5462+
};
5463+
let did = match target.bindings.def_for_namespace(TypeNS) {
5464+
Some(DefTrait(trait_def_id)) => trait_def_id,
5465+
Some(..) | None => continue,
5466+
};
5467+
if candidate_traits.contains(&did) {
5468+
self.add_trait_info(&mut found_traits, did, name);
5469+
self.used_imports.insert(import.type_id.get());
54965470
}
54975471
}
54985472

5499-
// Move to the next parent.
55005473
match search_module.parent_link {
5501-
NoParentLink => {
5502-
// Done.
5503-
break;
5504-
}
5505-
ModuleParentLink(parent_module, _) |
5474+
NoParentLink | ModuleParentLink(..) => break,
55065475
BlockParentLink(parent_module, _) => {
55075476
search_module = parent_module;
55085477
}

src/librustc/middle/typeck/astconv.rs

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ use middle::ty;
5757
use middle::typeck::rscope;
5858
use middle::typeck::rscope::{RegionScope};
5959
use middle::typeck::lookup_def_tcx;
60+
use util::ppaux::Repr;
6061

6162
use std::vec;
6263
use syntax::abi::AbiSet;

src/librustc/middle/typeck/check/method.rs

+1
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ obtained the type `Foo`, we would never match this method.
8383
use middle::resolve;
8484
use middle::ty::*;
8585
use middle::ty;
86+
use middle::typeck::astconv::AstConv;
8687
use middle::typeck::check::{FnCtxt, impl_self_ty};
8788
use middle::typeck::check::{structurally_resolved_type};
8889
use middle::typeck::check::vtable;

src/librustc/middle/typeck/check/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ use middle::typeck::no_params;
107107
use middle::typeck::{require_same_types, method_map, vtable_map};
108108
use middle::lang_items::TypeIdLangItem;
109109
use util::common::{block_query, indenter, loop_query};
110-
use util::ppaux::UserString;
111110
use util::ppaux;
111+
use util::ppaux::{UserString, Repr};
112112

113113
use std::cell::{Cell, RefCell};
114114
use std::hashmap::HashMap;

src/librustc/middle/typeck/check/regionck.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,14 @@ this point a bit better.
3131
use middle::freevars::get_freevars;
3232
use middle::ty::{ReScope};
3333
use middle::ty;
34+
use middle::typeck::astconv::AstConv;
3435
use middle::typeck::check::FnCtxt;
3536
use middle::typeck::check::regionmanip::relate_nested_regions;
3637
use middle::typeck::infer::resolve_and_force_all_but_regions;
3738
use middle::typeck::infer::resolve_type;
3839
use middle::typeck::infer;
39-
use util::ppaux::{ty_to_str, region_to_str};
4040
use middle::pat_util;
41+
use util::ppaux::{ty_to_str, region_to_str, Repr};
4142

4243
use syntax::ast::{ManagedSigil, OwnedSigil, BorrowedSigil};
4344
use syntax::ast::{DefArg, DefBinding, DefLocal, DefSelf, DefUpvar};
@@ -833,14 +834,14 @@ pub mod guarantor {
833834
* but more special purpose.
834835
*/
835836

836-
837+
use middle::typeck::astconv::AstConv;
837838
use middle::typeck::check::regionck::Rcx;
838839
use middle::typeck::check::regionck::mk_subregion_due_to_derefence;
839840
use middle::typeck::infer;
840841
use middle::ty;
841842
use syntax::ast;
842843
use syntax::codemap::Span;
843-
use util::ppaux::{ty_to_str};
844+
use util::ppaux::{ty_to_str, Repr};
844845

845846
pub fn for_addr_of(rcx: &mut Rcx, expr: &ast::Expr, base: &ast::Expr) {
846847
/*!

src/librustc/middle/typeck/check/vtable.rs

+2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
use middle::ty;
1313
use middle::ty::{AutoAddEnv, AutoDerefRef, AutoObject, param_ty};
1414
use middle::ty_fold::TypeFolder;
15+
use middle::typeck::astconv::AstConv;
1516
use middle::typeck::check::{FnCtxt, impl_self_ty};
1617
use middle::typeck::check::{structurally_resolved_type};
1718
use middle::typeck::infer::fixup_err_to_str;
@@ -23,6 +24,7 @@ use middle::typeck::{param_numbered, param_self, param_index};
2324
use middle::subst::Subst;
2425
use util::common::indenter;
2526
use util::ppaux;
27+
use util::ppaux::Repr;
2628

2729
use std::cell::RefCell;
2830
use std::hashmap::HashSet;

src/librustc/middle/typeck/check/writeback.rs

+2
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515

1616
use middle::pat_util;
1717
use middle::ty;
18+
use middle::typeck::astconv::AstConv;
1819
use middle::typeck::check::{FnCtxt, SelfInfo};
1920
use middle::typeck::infer::{force_all, resolve_all, resolve_region};
2021
use middle::typeck::infer::resolve_type;
@@ -25,6 +26,7 @@ use middle::typeck::method_map_entry;
2526
use middle::typeck::write_substs_to_tcx;
2627
use middle::typeck::write_ty_to_tcx;
2728
use util::ppaux;
29+
use util::ppaux::Repr;
2830

2931
use syntax::ast;
3032
use syntax::codemap::Span;

src/librustc/middle/typeck/coherence.rs

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ use middle::typeck::infer::combine::Combine;
3434
use middle::typeck::infer::InferCtxt;
3535
use middle::typeck::infer::{new_infer_ctxt, resolve_ivar, resolve_type};
3636
use middle::typeck::infer;
37+
use util::ppaux::Repr;
3738
use syntax::ast::{Crate, DefId, DefStruct, DefTy};
3839
use syntax::ast::{item, item_enum, item_impl, item_mod, item_struct};
3940
use syntax::ast::{LOCAL_CRATE, trait_ref, ty_path};

src/librustc/middle/typeck/collect.rs

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ use middle::typeck::astconv;
4242
use middle::typeck::rscope::*;
4343
use middle::typeck::{CrateCtxt, lookup_def_tcx, no_params, write_ty_to_tcx};
4444
use util::ppaux;
45+
use util::ppaux::Repr;
4546

4647
use std::vec;
4748
use syntax::abi::AbiSet;

src/librustc/middle/typeck/infer/coercion.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ use middle::ty::{vstore_slice, vstore_box, vstore_uniq};
7171
use middle::ty::{mt};
7272
use middle::ty;
7373
use middle::typeck::infer::{CoerceResult, resolve_type, Coercion};
74-
use middle::typeck::infer::combine::CombineFields;
74+
use middle::typeck::infer::combine::{CombineFields, Combine};
7575
use middle::typeck::infer::sub::Sub;
7676
use middle::typeck::infer::to_str::InferStr;
7777
use middle::typeck::infer::resolve::try_resolve_tvar_shallow;

0 commit comments

Comments
 (0)