First NIT release and new clean mercurial repository
[nit.git] / tests / base_init_linext.nit
1 # This file is part of NIT ( http://www.nitlanguage.org ).
2 #
3 # Copyright 2008 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
20 init inita do
21 'A'.output
22 ' '.output
23 end
24 meth work do '\n'.output
25 end
26
27 class B
28 special A
29 init initb do
30 'B'.output
31 '1'.output
32 ' '.output
33 inita
34 'B'.output
35 '2'.output
36 ' '.output
37 end
38 end
39
40 class C
41 special A
42 init initc do
43 'C'.output
44 '1'.output
45 ' '.output
46 inita
47 'C'.output
48 '2'.output
49 ' '.output
50 end
51 end
52
53 class D
54 special B
55 special C
56 init initd do
57 'D'.output
58 '0'.output
59 ' '.output
60 #alt1# inita
61 #alt3# inita
62 #alt5# inita
63 #alt7# inita
64 #alt9# inita
65 #alt11# inita
66 #alt13# inita
67 #alt15# inita
68 'D'.output
69 '1'.output
70 ' '.output
71 #alt2# initb
72 #alt3# initb
73 #alt6# initb
74 #alt7# initb
75 #alt10# initb
76 #alt11# initb
77 #alt14# initb
78 #alt15# initb
79 'D'.output
80 '2'.output
81 ' '.output
82 #alt4# initc
83 #alt5# initc
84 #alt6# initc
85 #alt7# initc
86 #alt12# initc
87 #alt13# initc
88 #alt14# initc
89 #alt15# initc
90 'D'.output
91 '3'.output
92 ' '.output
93 #alt8# inite
94 #alt9# inite
95 #alt10# inite
96 #alt11# inite
97 #alt12# inite
98 #alt13# inite
99 #alt14# inite
100 #alt15# inite
101 'D'.output
102 '4'.output
103 ' '.output
104 end
105
106 init inite do
107 'E'.output
108 '1'.output
109 ' '.output
110 inita
111 'E'.output
112 '2'.output
113 ' '.output
114 initb
115 'E'.output
116 '3'.output
117 ' '.output
118 initc
119 'E'.output
120 '4'.output
121 ' '.output
122 end
123 end
124
125 #alt0#(new A.inita).work
126 #alt0#(new B.initb).work
127 #alt0#(new C.initc).work
128 (new D.initd).work
129 #alt0#(new D.inite).work