@@ -6,27 +6,51 @@ use std::io::prelude::*;
66use std:: io:: { Read , Seek , Write } ;
77use std:: os:: fd:: AsFd ;
88use std:: rc:: { Rc , Weak } ;
9+ #[ derive( Default ) ]
10+ pub struct Sized { }
11+ impl Clone for Sized {
12+ fn clone ( & self ) -> Self {
13+ let __this: Value < Sized > = Rc :: new ( RefCell :: new ( Self { } ) ) ;
14+ let this: Ptr < Sized > = __this. as_pointer ( ) ;
15+ Rc :: try_unwrap ( __this) . ok ( ) . unwrap ( ) . into_inner ( )
16+ }
17+ }
18+ impl ByteRepr for Sized {
19+ fn byte_size ( ) -> usize {
20+ 1
21+ }
22+ fn to_bytes ( & self , buf : & mut [ u8 ] ) { }
23+ fn from_bytes ( buf : & [ u8 ] ) -> Self {
24+ Self { }
25+ }
26+ }
927pub fn is_small_0 ( ) -> bool {
1028 return true ;
1129}
1230pub fn is_small_1 ( ) -> bool {
1331 return false ;
1432}
15- pub fn pick_2 ( x : i32 ) -> i32 {
33+ pub fn has_size_2 ( ) -> bool {
34+ return true ;
35+ }
36+ pub fn has_size_3 ( ) -> bool {
37+ return false ;
38+ }
39+ pub fn pick_4 ( x : i32 ) -> i32 {
1640 let x: Value < i32 > = Rc :: new ( RefCell :: new ( x) ) ;
1741 if ( true ) && ( true ) {
1842 return 1 ;
1943 }
2044 return 2 ;
2145}
22- pub fn pick_3 ( x : i64 ) -> i32 {
46+ pub fn pick_5 ( x : i64 ) -> i32 {
2347 let x: Value < i64 > = Rc :: new ( RefCell :: new ( x) ) ;
2448 if ( true ) && ( false ) {
2549 return 1 ;
2650 }
2751 return 2 ;
2852}
29- pub fn pick_4 ( x : f32 ) -> i32 {
53+ pub fn pick_6 ( x : f32 ) -> i32 {
3054 let x: Value < f32 > = Rc :: new ( RefCell :: new ( x) ) ;
3155 if ( false ) && ( true ) {
3256 return 1 ;
@@ -39,8 +63,20 @@ pub fn main() {
3963fn main_0 ( ) -> i32 {
4064 assert ! ( ( { is_small_0( ) } ) ) ;
4165 assert ! ( !( { is_small_1( ) } ) ) ;
42- assert ! ( ( ( { pick_2( 1 , ) } ) == 1 ) ) ;
43- assert ! ( ( ( { pick_3( 1_i64 , ) } ) == 2 ) ) ;
44- assert ! ( ( ( { pick_4( 1.0E+0 , ) } ) == 2 ) ) ;
66+ assert ! ( true ) ;
67+ assert ! ( !false ) ;
68+ assert ! ( ( { has_size_2( ) } ) ) ;
69+ assert ! ( !( { has_size_3( ) } ) ) ;
70+ assert ! ( ( ( { pick_4( 1 , ) } ) == 1 ) ) ;
71+ assert ! ( ( ( { pick_5( 1_i64 , ) } ) == 2 ) ) ;
72+ assert ! ( ( ( { pick_6( 1.0E+0 , ) } ) == 2 ) ) ;
4573 return 0 ;
4674}
75+ pub trait SizedImpl {
76+ fn size ( & self ) -> i32 ;
77+ }
78+ impl SizedImpl for Ptr < Sized > {
79+ fn size ( & self ) -> i32 {
80+ return 4 ;
81+ }
82+ }
0 commit comments