@@ -26,6 +26,7 @@ type package = {
2626 versions : ~[ ( ~str , ~str ) ]
2727} ;
2828
29+ #[ cfg( stage0) ]
2930impl package : cmp:: Ord {
3031 pure fn lt ( & & other: package ) -> bool {
3132 if self . name . lt ( other. name ) { return true ; }
@@ -47,6 +48,29 @@ impl package : cmp::Ord {
4748 pure fn ge ( & & other: package ) -> bool { !self . lt ( other) }
4849 pure fn gt ( & & other: package ) -> bool { other. lt ( self ) }
4950}
51+ #[ cfg( stage1) ]
52+ #[ cfg( stage2) ]
53+ impl package : cmp:: Ord {
54+ pure fn lt ( other : & package ) -> bool {
55+ if self . name . lt ( & ( * other) . name ) { return true ; }
56+ if ( * other) . name . lt ( & self . name ) { return false ; }
57+ if self . uuid . lt ( & ( * other) . uuid ) { return true ; }
58+ if ( * other) . uuid . lt ( & self . uuid ) { return false ; }
59+ if self . url . lt ( & ( * other) . url ) { return true ; }
60+ if ( * other) . url . lt ( & self . url ) { return false ; }
61+ if self . method . lt ( & ( * other) . method ) { return true ; }
62+ if ( * other) . method . lt ( & self . method ) { return false ; }
63+ if self . description . lt ( & ( * other) . description ) { return true ; }
64+ if ( * other) . description . lt ( & self . description ) { return false ; }
65+ if self . tags . lt ( & ( * other) . tags ) { return true ; }
66+ if ( * other) . tags . lt ( & self . tags ) { return false ; }
67+ if self . versions . lt ( & ( * other) . versions ) { return true ; }
68+ return false ;
69+ }
70+ pure fn le ( other : & package ) -> bool { !( * other) . lt ( & self ) }
71+ pure fn ge ( other : & package ) -> bool { !self . lt ( other) }
72+ pure fn gt ( other : & package ) -> bool { ( * other) . lt ( & self ) }
73+ }
5074
5175type local_package = {
5276 name : ~str ,
@@ -97,12 +121,21 @@ type options = {
97121
98122enum mode { system_mode, user_mode, local_mode }
99123
124+ #[ cfg( stage0) ]
100125impl mode : cmp:: Eq {
101126 pure fn eq ( & & other: mode ) -> bool {
102127 ( self as uint ) == ( other as uint )
103128 }
104129 pure fn ne ( & & other: mode ) -> bool { !self . eq ( other) }
105130}
131+ #[ cfg( stage1) ]
132+ #[ cfg( stage2) ]
133+ impl mode : cmp:: Eq {
134+ pure fn eq ( other : & mode ) -> bool {
135+ ( self as uint ) == ( ( * other) as uint )
136+ }
137+ pure fn ne ( other : & mode ) -> bool { !self . eq ( other) }
138+ }
106139
107140fn opts ( ) -> ~[ getopts:: Opt ] {
108141 ~[ optflag ( ~"g") , optflag ( ~"G ") , optflag ( ~"test") ,
0 commit comments