@@ -430,6 +430,13 @@ pub trait ImplicitPromote<RHS> {
430430 type Output : HasAfEnum ;
431431}
432432
433+ impl < T > ImplicitPromote < T > for T
434+ where
435+ T : HasAfEnum ,
436+ {
437+ type Output = T ;
438+ }
439+ 433440macro_rules! implicit {
434441 [ $implType: ident, $rhsType: ident => $outType: ident] => (
435442 impl ImplicitPromote < $rhsType > for $implType {
@@ -443,7 +450,6 @@ macro_rules! implicit {
443450//
444451
445452//LHS is Complex double
446- implicit ! ( c64, c64 => c64) ;
447453implicit ! ( c64, c32 => c64) ;
448454implicit ! ( c64, f64 => c64) ;
449455implicit ! ( c64, f32 => c64) ;
@@ -458,7 +464,6 @@ implicit!(c64, u8 => c64);
458464
459465//LHS is Complex float
460466implicit ! ( c32, c64 => c64) ;
461- implicit ! ( c32, c32 => c32) ;
462467implicit ! ( c32, f64 => c64) ;
463468implicit ! ( c32, f32 => c32) ;
464469implicit ! ( c32, i64 => c32) ;
@@ -473,7 +478,6 @@ implicit!(c32, u8 => c32);
473478//LHS is 64-bit floating point
474479implicit ! ( f64 , c64 => c64) ;
475480implicit ! ( f64 , c32 => c64) ;
476- implicit ! ( f64 , f64 => f64 ) ;
477481implicit ! ( f64 , f32 => f64 ) ;
478482implicit ! ( f64 , i64 => f64 ) ;
479483implicit ! ( f64 , u64 => f64 ) ;
@@ -488,7 +492,6 @@ implicit!(f64, u8 => f64);
488492implicit ! ( f32 , c64 => c64) ;
489493implicit ! ( f32 , c32 => c32) ;
490494implicit ! ( f32 , f64 => f64 ) ;
491- implicit ! ( f32 , f32 => f32 ) ;
492495implicit ! ( f32 , i64 => f32 ) ;
493496implicit ! ( f32 , u64 => f32 ) ;
494497implicit ! ( f32 , i32 => f32 ) ;
@@ -503,7 +506,6 @@ implicit!(i64, c64 => c64);
503506implicit ! ( i64 , c32 => c32) ;
504507implicit ! ( i64 , f64 => f64 ) ;
505508implicit ! ( i64 , f32 => f32 ) ;
506- implicit ! ( i64 , i64 => i64 ) ;
507509implicit ! ( i64 , u64 => u64 ) ;
508510implicit ! ( i64 , i32 => i64 ) ;
509511implicit ! ( i64 , u32 => i64 ) ;
@@ -518,7 +520,6 @@ implicit!(u64, c32 => c32);
518520implicit ! ( u64 , f64 => f64 ) ;
519521implicit ! ( u64 , f32 => f32 ) ;
520522implicit ! ( u64 , i64 => u64 ) ;
521- implicit ! ( u64 , u64 => u64 ) ;
522523implicit ! ( u64 , i32 => u64 ) ;
523524implicit ! ( u64 , u32 => u64 ) ;
524525implicit ! ( u64 , i16 => u64 ) ;
@@ -533,7 +534,6 @@ implicit!(i32, f64 => f64);
533534implicit ! ( i32 , f32 => f32 ) ;
534535implicit ! ( i32 , i64 => i64 ) ;
535536implicit ! ( i32 , u64 => u64 ) ;
536- implicit ! ( i32 , i32 => i32 ) ;
537537implicit ! ( i32 , u32 => u32 ) ;
538538implicit ! ( i32 , i16 => i32 ) ;
539539implicit ! ( i32 , u16 => i32 ) ;
@@ -548,7 +548,6 @@ implicit!(u32, f32 => f32);
548548implicit ! ( u32 , i64 => i64 ) ;
549549implicit ! ( u32 , u64 => u64 ) ;
550550implicit ! ( u32 , i32 => u32 ) ;
551- implicit ! ( u32 , u32 => u32 ) ;
552551implicit ! ( u32 , i16 => u32 ) ;
553552implicit ! ( u32 , u16 => u32 ) ;
554553implicit ! ( u32 , bool => u32 ) ;
@@ -563,7 +562,6 @@ implicit!(i16, i64 => i64);
563562implicit ! ( i16 , u64 => u64 ) ;
564563implicit ! ( i16 , i32 => i32 ) ;
565564implicit ! ( i16 , u32 => u32 ) ;
566- implicit ! ( i16 , i16 => i16 ) ;
567565implicit ! ( i16 , u16 => u16 ) ;
568566implicit ! ( i16 , bool => u16 ) ;
569567implicit ! ( i16 , u8 => u16 ) ;
@@ -578,7 +576,6 @@ implicit!(u16, u64 => u64);
578576implicit ! ( u16 , i32 => i32 ) ;
579577implicit ! ( u16 , u32 => u32 ) ;
580578implicit ! ( u16 , i16 => u16 ) ;
581- implicit ! ( u16 , u16 => u16 ) ;
582579implicit ! ( u16 , bool => u16 ) ;
583580implicit ! ( u16 , u8 => u16 ) ;
584581
@@ -594,7 +591,6 @@ implicit!(u8, u32 => u32);
594591implicit ! ( u8 , i16 => i16 ) ;
595592implicit ! ( u8 , u16 => u16 ) ;
596593implicit ! ( u8 , bool => u8 ) ;
597- implicit ! ( u8 , u8 => u8 ) ;
598594
599595//LHS is bool(af::s8)
600596implicit ! ( bool , c64 => c64) ;
@@ -607,7 +603,6 @@ implicit!(bool, i32 => i32);
607603implicit ! ( bool , u32 => u32 ) ;
608604implicit ! ( bool , i16 => i16 ) ;
609605implicit ! ( bool , u16 => u16 ) ;
610- implicit ! ( bool , bool => bool ) ;
611606implicit ! ( bool , u8 => u8 ) ;
612607
613608///Trait qualifier to accept either real or complex typed data
0 commit comments