First NIT release and new clean mercurial repository
[nit.git] / tests / gccbug_attribute_access.nit
1 # This file is part of NIT ( http://www.nitlanguage.org ).
2 #
3 # Copyright 2004-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 # By flop
18
19 # If your platfor is subject to a gcc bug, some solutions :
20 # * try global compilation (-g)
21 # * try to change the optimization flags
22 # * try to update your gcc version
23 class Foo
24 attr _count: Int
25 meth run: Int
26 do
27 # Under some case gcc produce bad code here and make the if
28 # evaluate the old _count value
29 _count = _count + 1
30 if _count >= 5 then
31 _count = 0
32 end
33 return _count
34 end
35
36 init
37 do
38 end
39 end
40
41 var f = new Foo
42 var i = 1
43 while i <= 12 do
44 print("{i}: {f.run}")
45 i = i + 1
46 end
47