Merge remote-tracking branch 'origin/master' into init_auto
[nit.git] / benchmarks / languages / benches / bench_typetest_covar.nit
1 #!/usr/bin/env nit
2 # This file is part of NIT ( http://www.nitlanguage.org ).
3 #
4 # Licensed under the Apache License, Version 2.0 (the "License");
5 # you may not use this file except in compliance with the License.
6 # You may obtain a copy of the License at
7 #
8 # http://www.apache.org/licenses/LICENSE-2.0
9 #
10 # Unless required by applicable law or agreed to in writing, software
11 # distributed under the License is distributed on an "AS IS" BASIS,
12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 # See the License for the specific language governing permissions and
14 # limitations under the License.
15
16 import bench_base
17
18 class TypeTestCovarGenerator
19 super Generator
20
21 redef fun initnit(res)
22 do
23 for c in classes do
24 res.add "new {classes.first}[{c}[Root]]"
25 end
26
27 end
28
29 redef fun testnit
30 do
31 return "a isa {classes.first}[{classes[middle]}[Root]]"
32 end
33
34 redef fun initcsharp(res, interfaces)
35 do
36 var tagc = ""
37 if interfaces then tagc = "X"
38 for c in classes do
39 res.add "new {tagc}{classes.first}<{c}<Root>>()"
40 end
41 end
42
43 redef fun testcsharp(interfaces)
44 do
45 return "a is {classes.first}<{classes[middle]}<Root>>"
46 end
47
48 redef fun inite(res, se)
49 do
50 for c in classes do
51 res.add "create \{{classes.first}[{c}[ROOT]]\}"
52 end
53 end
54
55 redef fun teste(se)
56 do
57 write "\t\t\t\t\tto ?= a"
58 return "to /= Void"
59 end
60
61 redef fun locale(se)
62 do
63 write "\t\t\tto: detachable {classes.first}[{classes[middle]}[ROOT]]"
64 end
65 end
66
67 var g = new TypeTestCovarGenerator
68 g.genall