X-Git-Url: http://nitlanguage.org diff --git a/src/test_callref.nit b/src/test_callref.nit deleted file mode 100644 index 59e2b47..0000000 --- a/src/test_callref.nit +++ /dev/null @@ -1,104 +0,0 @@ -# This file is part of NIT ( http://www.nitlanguage.org ). -# -# Copyright 2019-2020 Louis-Vincent Boudreault -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -import functional - -redef class Object - fun toto(x: Int): Int - do - return x + 1 - end -end - -redef class Int - redef fun toto(x) do return x + self - - fun mult_by(x: Int): Int do return x * self -end - -class A - fun fun1: String - do - return "in A::fun1" - end -end - -class B - super A - - redef fun fun1 - do - return "in B::fun1" - end -end - -class Counter - var x = 0 - fun incr do x += 1 -end - -class C[E] - var x: E - redef fun to_s - do - if x != null then - return "x is {x.as(not null)}" - end - return "x is null" - end -end - -var a = new A -var b: A = new B -var f1 = &a.fun1 -assert f1.call == "in A::fun1" -var f2 = &b.fun1 -assert f2.call == "in B::fun1" - -var f3 = &10.mult_by -assert f3.call(10) == 100 - -var f4 = &f2.call -assert f4.call == "in B::fun1" - -var f5: Fun0[Object] = &f4.call -assert f5.call == "in B::fun1" -assert f5.call == "in B::fun1" - -assert (&10.toto).call(100) == 110 -assert (&"allo".toto).call(1) == 2 - -var cnt = new Counter -var p1 = &cnt.incr -var ps = [p1,p1,p1,p1,p1] - -for p in ps do p.call -assert cnt.x == 5 - -var c1 = new C[nullable Object](null) -var c2 = new C[nullable Int](null) - -var f6 = &c1.to_s -var f7 = &c2.to_s - -assert f6.call == "x is null" -assert f7.call == "x is null" - -c1.x = "test" -c2.x = 100 - -assert f6.call == "x is test" -assert f7.call == "x is 100"