File tree 19 files changed +44
-0
lines changed
rustc_data_structures/src
19 files changed +44
-0
lines changed Original file line number Diff line number Diff line change 15
15
#![ feature( if_let_guard) ]
16
16
#![ feature( let_chains) ]
17
17
#![ feature( min_specialization) ]
18
+ #![ feature( spec_option_partial_eq) ]
18
19
#![ feature( negative_impls) ]
19
20
#![ feature( slice_internals) ]
20
21
#![ feature( stmt_expr_attributes) ]
Original file line number Diff line number Diff line change 6
6
#![ feature( min_specialization) ]
7
7
#![ feature( never_type) ]
8
8
#![ feature( rustc_attrs) ]
9
+ #![ feature( spec_option_partial_eq) ]
9
10
#![ feature( stmt_expr_attributes) ]
10
11
#![ feature( trusted_step) ]
11
12
#![ feature( try_blocks) ]
Original file line number Diff line number Diff line change 13
13
#![ feature( cell_leak) ]
14
14
#![ feature( control_flow_enum) ]
15
15
#![ feature( extend_one) ]
16
+ #![ feature( spec_option_partial_eq) ]
16
17
#![ feature( hash_raw_entry) ]
17
18
#![ feature( hasher_prefixfree_extras) ]
18
19
#![ feature( maybe_uninit_uninit_array) ]
Original file line number Diff line number Diff line change 9
9
#![ feature( never_type) ]
10
10
#![ feature( rustc_attrs) ]
11
11
#![ feature( variant_count) ]
12
+ #![ feature( spec_option_partial_eq) ]
12
13
#![ recursion_limit = "256" ]
13
14
#![ deny( rustc:: untranslatable_diagnostic) ]
14
15
#![ deny( rustc:: diagnostic_outside_of_impl) ]
Original file line number Diff line number Diff line change @@ -65,6 +65,7 @@ This API is completely unstable and subject to change.
65
65
#![ feature( is_sorted) ]
66
66
#![ feature( iter_intersperse) ]
67
67
#![ feature( let_chains) ]
68
+ #![ feature( spec_option_partial_eq) ]
68
69
#![ feature( min_specialization) ]
69
70
#![ feature( never_type) ]
70
71
#![ feature( once_cell) ]
Original file line number Diff line number Diff line change 3
3
#![ feature( try_blocks) ]
4
4
#![ feature( never_type) ]
5
5
#![ feature( min_specialization) ]
6
+ #![ feature( spec_option_partial_eq) ]
6
7
#![ feature( control_flow_enum) ]
7
8
#![ feature( drain_filter) ]
8
9
#![ allow( rustc:: potential_query_instability) ]
Original file line number Diff line number Diff line change 6
6
#![ feature( new_uninit) ]
7
7
#![ feature( step_trait) ]
8
8
#![ feature( stmt_expr_attributes) ]
9
+ #![ feature( spec_option_partial_eq) ]
9
10
#![ feature( test) ]
10
11
11
12
pub mod bit_set;
Original file line number Diff line number Diff line change 19
19
#![ feature( extend_one) ]
20
20
#![ feature( let_chains) ]
21
21
#![ feature( if_let_guard) ]
22
+ #![ feature( spec_option_partial_eq) ]
22
23
#![ feature( min_specialization) ]
23
24
#![ feature( never_type) ]
24
25
#![ feature( try_blocks) ]
Original file line number Diff line number Diff line change 34
34
#![ feature( iter_intersperse) ]
35
35
#![ feature( iter_order_by) ]
36
36
#![ feature( let_chains) ]
37
+ #![ feature( spec_option_partial_eq) ]
37
38
#![ feature( min_specialization) ]
38
39
#![ feature( never_type) ]
39
40
#![ recursion_limit = "256" ]
Original file line number Diff line number Diff line change @@ -192,6 +192,30 @@ impl Parse for Newtype {
192
192
}
193
193
}
194
194
} ;
195
+ let spec_partial_eq_impl = if let Lit :: Int ( max) = & max {
196
+ if let Ok ( max_val) = max. base10_parse :: < u32 > ( ) {
197
+ quote ! {
198
+ impl core:: option:: SpecOptionPartialEq for #name {
199
+ #[ inline]
200
+ fn eq( l: & Option <Self >, r: & Option <Self >) -> bool {
201
+ if #max_val < u32 :: MAX {
202
+ l. map( |i| i. private) . unwrap_or( #max_val+1 ) == r. map( |i| i. private) . unwrap_or( #max_val+1 )
203
+ } else {
204
+ match ( l, r) {
205
+ ( Some ( l) , Some ( r) ) => r == l,
206
+ ( None , None ) => true ,
207
+ _ => false
208
+ }
209
+ }
210
+ }
211
+ }
212
+ }
213
+ } else {
214
+ quote ! { }
215
+ }
216
+ } else {
217
+ quote ! { }
218
+ } ;
195
219
196
220
Ok ( Self ( quote ! {
197
221
#( #attrs) *
@@ -293,6 +317,8 @@ impl Parse for Newtype {
293
317
294
318
#step
295
319
320
+ #spec_partial_eq_impl
321
+
296
322
impl From <#name> for u32 {
297
323
#[ inline]
298
324
fn from( v: #name) -> u32 {
Original file line number Diff line number Diff line change 31
31
#![ feature( discriminant_kind) ]
32
32
#![ feature( exhaustive_patterns) ]
33
33
#![ feature( get_mut_unchecked) ]
34
+ #![ feature( spec_option_partial_eq) ]
34
35
#![ feature( if_let_guard) ]
35
36
#![ feature( negative_impls) ]
36
37
#![ feature( never_type) ]
Original file line number Diff line number Diff line change 7
7
#![ feature( control_flow_enum) ]
8
8
#![ feature( if_let_guard) ]
9
9
#![ feature( let_chains) ]
10
+ #![ feature( spec_option_partial_eq) ]
10
11
#![ feature( min_specialization) ]
11
12
#![ feature( once_cell) ]
12
13
#![ recursion_limit = "256" ]
Original file line number Diff line number Diff line change 4
4
#![ feature( min_specialization) ]
5
5
#![ feature( once_cell) ]
6
6
#![ feature( stmt_expr_attributes) ]
7
+ #![ feature( spec_option_partial_eq) ]
7
8
#![ feature( trusted_step) ]
8
9
#![ recursion_limit = "256" ]
9
10
#![ deny( rustc:: untranslatable_diagnostic) ]
Original file line number Diff line number Diff line change 7
7
#![ feature( once_cell) ]
8
8
#![ feature( option_get_or_insert_default) ]
9
9
#![ feature( trusted_step) ]
10
+ #![ feature( spec_option_partial_eq) ]
10
11
#![ feature( try_blocks) ]
11
12
#![ feature( yeet_expr) ]
12
13
#![ feature( if_let_guard) ]
Original file line number Diff line number Diff line change 11
11
#![ feature( iter_intersperse) ]
12
12
#![ feature( let_chains) ]
13
13
#![ feature( map_try_insert) ]
14
+ #![ feature( spec_option_partial_eq) ]
14
15
#![ feature( min_specialization) ]
15
16
#![ feature( try_blocks) ]
16
17
#![ recursion_limit = "256" ]
Original file line number Diff line number Diff line change 3
3
#![ feature( hash_raw_entry) ]
4
4
#![ feature( min_specialization) ]
5
5
#![ feature( extern_types) ]
6
+ #![ feature( spec_option_partial_eq) ]
6
7
#![ allow( rustc:: potential_query_instability) ]
7
8
#![ deny( rustc:: untranslatable_diagnostic) ]
8
9
#![ deny( rustc:: diagnostic_outside_of_impl) ]
Original file line number Diff line number Diff line change 18
18
#![ feature( if_let_guard) ]
19
19
#![ feature( negative_impls) ]
20
20
#![ feature( min_specialization) ]
21
+ #![ feature( spec_option_partial_eq) ]
21
22
#![ feature( rustc_attrs) ]
22
23
#![ deny( rustc:: untranslatable_diagnostic) ]
23
24
#![ deny( rustc:: diagnostic_outside_of_impl) ]
Original file line number Diff line number Diff line change 14
14
#![ feature( min_specialization) ]
15
15
#![ feature( never_type) ]
16
16
#![ feature( rustc_attrs) ]
17
+ #![ feature( spec_option_partial_eq) ]
17
18
#![ feature( step_trait) ]
18
19
#![ deny( rustc:: untranslatable_diagnostic) ]
19
20
#![ deny( rustc:: diagnostic_outside_of_impl) ]
Original file line number Diff line number Diff line change 1
1
#![ feature( fmt_helpers_for_derive) ]
2
2
#![ feature( min_specialization) ]
3
3
#![ feature( rustc_attrs) ]
4
+ #![ feature( spec_option_partial_eq) ]
4
5
#![ deny( rustc:: untranslatable_diagnostic) ]
5
6
#![ deny( rustc:: diagnostic_outside_of_impl) ]
6
7
You can’t perform that action at this time.
0 commit comments