nitc: fix calling extern constructors from extern code in separate compiler
[nit.git] / tests / test_pretty / test_indent1.nit
1 # This file is part of NIT ( http://www.nitlanguage.org ).
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 class Foo
16 fun bar: Bool do return true
17
18 fun foo(other: Foo): Foo
19 do
20 if other.bar then return other else
21 return self
22 end
23 end
24
25 fun baz: Int do
26 var nb = 0
27 while nb < 10 do
28 print nb
29 nb += 1
30 end # 1
31 return nb
32 end
33
34 fun gaz: Int
35 do
36 if bar # 2
37 then # 3
38 return 1
39 else
40 return -1 # 4
41 end
42 end
43 end
44
45 class Test[E]
46 var heap: ArrayHeap[E]
47
48 init to(comparator: Comparator[E]) do
49 heap = new ArrayHeap[E](comparator)
50 end
51
52 init from(comparator: Comparator[E], items: Collection[E]) do
53 heap = new ArrayHeap[E].from(comparator, items.to_a)
54 end
55
56 fun count(k: E): Int do if heap.has(k) then return 1 else return 0
57
58 fun node_at_idx(i: Int, k: E) do
59 while heap != null do
60 if heap.is_empty or i == k then # FIXME prefilter because the compiler is not smart enought yet
61 break
62 end
63 end
64 end
65
66 fun save_those_nodes(nodes: Collection[Object]) do
67 for node in nodes do count(node)
68 end
69 end
70
71 fun foo do
72 if last_slash > 0 then
73 return substring( last_slash+1, length )
74 else
75 return null
76 end
77 end
78
79 print "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam tincidunt sapien et velit fringilla varius at non eros. Nunc ut ultricies metus, sit amet lacinia felis. Donec in facilisis neque, non laoreet nibh. Etiam nec purus eu orci congue iaculis eu quis lorem. Ut et blandit erat. Cras fermentum pellentesque ante, ut dapibus ipsum placerat sit amet. Vivamus pharetra, sem vitae consequat venenatis, diam risus placerat est, sed hendrerit purus justo vitae lectus. In id quam mattis, rutrum augue eu, vehicula ipsum. Nulla nec egestas turpis, nec ullamcorper odio. Pellentesque vitae arcu justo. Aliquam sed pharetra lacus."
80
81 var lorem = "lorem"
82 var ipsum = "ipsum" # for fun
83
84 print "We also need to handle super strings: {lorem} {ipsum} dolor sit amet, consectetur adipiscing elit. Aliquam tincidunt sapien et velit fringilla varius at non eros. Nunc ut ultricies metus, sit amet lacinia felis. Donec in facilisis neque, non laoreet nibh. Etiam nec purus eu orci congue iaculis eu quis {lorem}. Ut et blandit erat. Cras fermentum pellentesque ante, ut dapibus {ipsum} placerat sit amet. Vivamus pharetra, sem vitae consequat venenatis, diam risus placerat est, sed hendrerit purus justo vitae lectus. In id quam mattis, rutrum augue eu, vehicula ipsum. Nulla nec egestas turpis, nec ullamcorper odio. Pellentesque vitae arcu justo. Aliquam sed pharetra lacus." # ending
85
86 var title = "title"
87 var links = new Array[String] # why not?
88
89 var body = """
90 <!DOCTYPE html>
91 <head>
92 <meta charset="utf-8">
93 <meta http-equiv="X-UA-Compatible" content="IE=edge">
94 <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
95 <title>{{{title}}}</title>
96 </head>
97 <body>
98 <div class="container">
99 <h1>{{{title}}}</h1>
100 <ul>
101 <li>{{{links.join("</li>\n\t\t\t<li>")}}}</li>
102 </ul>
103 </div>
104 </body>
105 </html>"""
106