syntax: 'meth' -> 'fun', 'attr' -> 'var'
[nit.git] / tests / base_virtual_type_self.nit
1 # This file is part of NIT ( http://www.nitlanguage.org ).
2 #
3 # Copyright 2009 Jean Privat <jean@pryen.org>
4 #
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
8 #
9 # http://www.apache.org/licenses/LICENSE-2.0
10 #
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
16
17 import kernel
18
19 class A[E]
20 type T: E
21 var _t: T
22 fun foo(t: T) do end
23 fun foo2: T do return _t
24 fun bar(t: A[T]) do end
25 fun bar2: A[T] do return self
26
27 init do end
28 end
29
30 class B
31 #alt3#special A[Int]
32 type U: Int
33
34 fun test
35 do
36 #alt1#var a = new A[Int]
37 #alt2#var a = new A[U]
38 #alt3#var a = self
39 #alt4#var a = new A[A[Int]]
40 #alt5#var a = new A[A[U]]
41
42 var f: Float
43
44 a.foo(f)
45 f = a.foo2
46 a.bar(f)
47 f = a.bar2
48 end
49 end
50
51 (new B).test