X-Git-Url: http://nitlanguage.org diff --git a/tests/test_ffi_c_operators.nit b/tests/test_ffi_c_operators.nit index 4c89e6a..d78ceac 100644 --- a/tests/test_ffi_c_operators.nit +++ b/tests/test_ffi_c_operators.nit @@ -1,6 +1,6 @@ # This file is part of NIT ( http://www.nitlanguage.org ). # -# Copyright 2011-2013 Alexis Laferrière +# Copyright 2011-2014 Alexis Laferrière # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -15,146 +15,162 @@ # limitations under the License. class A - var value : Int + var value: Int - init ( value : Int ) do self.value = value + init(value: Int) do self.value = value - fun +( other : A ) : A import value, A `{ - int s = A_value( recv ); + fun +(other: A): A import value, A `{ + int s = A_value( self ); int o = A_value( other ); return new_A( s + o ); `} - fun -( other : A ) : A import value, A `{ - int s = A_value( recv ); + fun +: A import value, A `{ + int s = A_value(self); + return new_A(+s); + `} + + fun -(other: A): A import value, A `{ + int s = A_value( self ); int o = A_value( other ); return new_A( s - o ); `} - fun *( by : Int ) : A import value, A `{ - int s = A_value( recv ); + fun -: A import value, A `{ + int s = A_value(self); + return new_A(-s); + `} + + fun *(by: Int): A import value, A `{ + int s = A_value( self ); return new_A( s * by ); `} - fun /( by : Int ) : A import value, A `{ - int s = A_value( recv ); + fun /(by: Int): A import value, A `{ + int s = A_value( self ); return new_A( s / by ); `} - redef fun ==( other ) import value, nullable Object as(A) `{ + redef fun ==(other) import value, nullable Object.as(A) `{ if ( nullable_Object_is_a_A( other ) && - A_value( nullable_Object_as_A(other) ) == A_value( recv ) ) + A_value( nullable_Object_as_A(other) ) == A_value( self ) ) return 1; else return 0; `} - fun %( other : A ) : A import value, A `{ - return new_A( A_value( recv ) % A_value( other ) ); + fun %(other: A): A import value, A `{ + return new_A( A_value( self ) % A_value( other ) ); + `} + + fun <=>(other: A): A import value, A `{ + return new_A( A_value( self )* 1024 ); `} -# fun +=( other : A ) : A import value, value=, A `{ -# int new_val = A_value( recv ) + A_value( other ); -# A_value__assign( recv, new_val ); -# return new_A( new_val ); -# `} + fun >(other: A): Bool import value `{ + return A_value( self ) > A_value( other ); + `} -# fun -=( other : A ) : A import +=, A, value `{ -# A inv_other = new_A( -1*A_value( other ) ); -# return A__plus_equal( recv, int_other ); -# `} + fun <(other: A): Bool import value `{ + return A_value( self ) < A_value( other ); + `} - fun <=>( other : A ) : A import value, A `{ - return new_A( A_value( recv )* 1024 ); + fun >=(other: A): Bool import value `{ + return A_value( self ) >= A_value( other ); `} -# fun @( other : A ) : A import value, A `{ -# return new_A( A_value( recv )* 1000 ); -# `} + fun <=(other: A): Bool import value `{ + return A_value( self ) <= A_value( other ); + `} - fun >( other : A ) : Bool import value `{ - return A_value( recv ) > A_value( other ); + fun >>(other: A): A import value, value=, A `{ + int new_val = A_value( self ) >> A_value( other ); + return new_A(new_val); `} - fun <( other : A ) : Bool import value `{ - return A_value( recv ) < A_value( other ); + fun <<(other: A): A import value, A `{ + int new_val = A_value( self ) << A_value( other ); + return new_A(new_val); `} - fun >=( other : A ) : Bool import value `{ - return A_value( recv ) >= A_value( other ); + fun |(other: A): A import value, A `{ + int new_val = A_value( self ) | A_value( other ); + return new_A(new_val); `} - fun <=( other : A ) : Bool import value `{ - return A_value( recv ) <= A_value( other ); + fun ^(other: A): A import value, A `{ + int new_val = A_value( self ) ^ A_value( other ); + return new_A(new_val); `} - fun >>( other : A ) import value, value=, A `{ - int new_val = A_value( recv ) >> A_value( other ); - A_value__assign( recv, new_val ); + fun ~: A import value, A `{ + int new_val = ~A_value( self ); + return new_A(new_val); `} - fun <<( other : A ) import value, A `{ - int new_val = A_value( recv ) << A_value( other ); - A_value__assign( recv, new_val ); + fun &(other: A): A import value, A `{ + int new_val = A_value( self ) & A_value( other ); + return new_A(new_val); `} - fun []( index : Int ) : A import A `{ + fun [](index: Int): A import A `{ return new_A( index ); `} - fun []=( index : Int, value : A ) : A import A `{ + fun []=(index: Int, value: A): A import A `{ return new_A( index + A_value( value ) ); `} redef fun to_s do return value.to_s end -print new A( 1 ) + new A( 10 ) # 11 -print new A( 10 ) - new A( 1 ) # 9 +print new A(1) + new A(10) # 11 +print +new A(123) +print new A(10) - new A(1) # 9 +print -new A(123) -print new A( 2 ) * 11 # 22 -print new A( 33 ) / 11 # 3 +print new A(2) * 11 # 22 +print new A(33) / 11 # 3 -#print new A( 44 ) == null # false -print new A( 55 ) == 55 # false -print new A( 33 ) == new A( 11 ) # false -print new A( 22 ) == new A( 77 ) # false -print new A( 11 ) == new A( 11 ) # true +print new A(44) == null # false +print new A(55) == 55 # false +print new A(33) == new A(11) # false +print new A(22) == new A(77) # false +print new A(11) == new A(11) # true -print new A( 147 ) % new A( 12 ) # 3 -print new A( 4 ) <=> new A( 123 ) # 4096 +print new A(147) % new A(12) # 3 +print new A(4) <=> new A(123) # 4096 -print new A( 1 ) < new A( 100 ) # true -print new A( 100 ) < new A( 100 ) # false -print new A( 100 ) < new A( 1 ) # false +print new A(1) < new A(100) # true +print new A(100) < new A(100) # false +print new A(100) < new A(1) # false -print new A( 1 ) > new A( 100 ) # false -print new A( 100 ) > new A( 100 ) # false -print new A( 100 ) > new A( 1 ) # true +print new A(1) > new A(100) # false +print new A(100) > new A(100) # false +print new A(100) > new A(1) # true -print new A( 1 ) <= new A( 100 ) # true -print new A( 100 ) <= new A( 100 ) # true -print new A( 100 ) <= new A( 1 ) # false +print new A(1) <= new A(100) # true +print new A(100) <= new A(100) # true +print new A(100) <= new A(1) # false -print new A( 1 ) >= new A( 100 ) # false -print new A( 100 ) >= new A( 100 ) # true -print new A( 100 ) >= new A( 1 ) # true +print new A(1) >= new A(100) # false +print new A(100) >= new A(100) # true +print new A(100) >= new A(1) # true -#var x = new A( 1 ) -#x << new A( 5 ) -#print x # 16 +print new A(1) << new A(5) # 32 +print new A(32) >> new A(2) # 8 -#var y = new A( 32 ) -#y >> new A( 2 ) -#print y # 8 +print new A(3) | new A(6) # 7 +print new A(3) ^ new A(6) # 5 +print new A(3) & new A(6) # 2 +print ~new A(3) # -4 -var a = new A( 456 ) -print a[ 52 ] # 52 +var a = new A(456) +print a[52] # 52 -a[ 74 ] = new A( 96 ) +a[74] = new A(96) print a # 96 -