syntax: add some missing PExpr::is_typed.
authorJean Privat <jean@pryen.org>
Fri, 3 Jul 2009 21:38:57 +0000 (17:38 -0400)
committerJean Privat <jean@pryen.org>
Sat, 4 Jul 2009 00:56:31 +0000 (20:56 -0400)
Add a quite complete test to ensure that expression errors do not crash
the compiler.

Signed-off-by: Jean Privat <jean@pryen.org>

src/syntax/typing.nit
tests/error_expr_not_ok.nit [new file with mode: 0644]
tests/sav/error_expr_not_ok.sav [new file with mode: 0644]
tests/sav/error_expr_not_ok_alt1.sav [new file with mode: 0644]
tests/sav/error_expr_not_ok_alt3.sav [new file with mode: 0644]
tests/sav/error_expr_not_ok_alt4.sav [new file with mode: 0644]
tests/sav/error_expr_not_ok_alt5.sav [new file with mode: 0644]

index 738fa7a..a0b437f 100644 (file)
@@ -907,6 +907,7 @@ redef class ACrangeExpr
        redef fun after_typing(v)
        do
                super
+               if not is_typed then return
                _meth_init = stype.local_class.select_method(once "init".to_symbol)
        end
 end
@@ -914,6 +915,7 @@ redef class AOrangeExpr
        redef fun after_typing(v)
        do
                super
+               if not is_typed then return
                _meth_init = stype.local_class.select_method(once "without_last".to_symbol)
        end
 end
@@ -1361,7 +1363,7 @@ redef class AEqExpr
        redef fun after_typing(v)
        do
                super
-               if not is_typed then return
+               if not n_expr.is_typed or not n_expr2.is_typed then return
                if n_expr.stype isa MMTypeNone and not n_expr2.stype.is_nullable or
                n_expr2.stype isa MMTypeNone and not n_expr.stype.is_nullable then
                        v.warning(self, "Warning: comparaison between null and a non nullable value.")
@@ -1387,7 +1389,7 @@ redef class ANeExpr
        redef fun after_typing(v)
        do
                super
-               if not is_typed then return
+               if not n_expr.is_typed or not n_expr2.is_typed then return
                if n_expr.stype isa MMTypeNone and not n_expr2.stype.is_nullable or
                n_expr2.stype isa MMTypeNone and not n_expr.stype.is_nullable then
                        v.warning(self, "Warning: comparaison between null and a non nullable value.")
diff --git a/tests/error_expr_not_ok.nit b/tests/error_expr_not_ok.nit
new file mode 100644 (file)
index 0000000..82c0d5a
--- /dev/null
@@ -0,0 +1,153 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2009 Jean Privat <jean@pryen.org>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+class A
+       var _x: Object = fail
+       var _i: Int = 1
+       fun y do fail
+       fun z: Object do return fail
+       fun t do
+               _i = fail
+               _i += fail
+       end
+
+end
+
+fun trash(x: A) do end
+
+#alt1#fun fail: Fail do return new Fail
+#alt2#var fail: Fail = new Fail
+#alt3#var fail = fail(5)
+#alt4#var fail: Object = 5
+#alt5#var fail: Object = 5
+#alt5#fail = fail2(5)
+
+var ok = 5
+ok.fail
+var nok: Int = fail
+trash(nok)
+nok.fail
+var nok2 = fail
+trash(nok2) # no rtype
+nok2.fail
+
+fail
+trash(fail) # no rtype
+fail.trash
+fail = ok
+ok = fail
+fail += 1
+ok += fail
+fail += fail
+
+do
+       fail
+end
+if fail then trash(0)
+if true then fail else fail
+trash(if fail then 1 else 2)
+trash(if true then 1 else fail) # no rtype
+trash(if true then fail else fail) # no rtype
+
+while fail do trash(0)
+while true do fail
+
+for i in fail do trash(0) # no rtype (hum...)
+for i in [0..1] do fail
+assert fail
+trash(once fail) # no rtype
+trash(fail or true)
+trash(true or fail)
+trash(fail or fail)
+trash(fail and true)
+trash(fail and fail)
+trash(fail and fail)
+trash(not fail)
+trash(fail == 1) # no rtype
+trash(1 == fail)
+trash(fail == fail) # no rtype
+trash(fail != 1) # no rtype
+trash(1 != fail)
+trash(fail != fail) # no rtype
+trash(fail is 1)
+trash(1 is fail)
+trash(fail is fail)
+trash(fail < 1) # no rtype
+trash(1 < fail)
+trash(fail < fail) # no rtype
+trash(fail > 1) # no rtype
+trash(1 > fail)
+trash(fail > fail) # no rtype
+trash(fail <= 1) # no rtype
+trash(1 <= fail)
+trash(fail <= fail) # no rtype
+trash(fail >= 1) # no rtype
+trash(1 >= fail)
+trash(fail >= fail) # no rtype
+trash(fail <=> 1) # no rtype
+trash(1 <=> fail)
+trash(fail <=> fail) # no rtype
+trash(fail + 1) # no rtype
+trash(1 + fail)
+trash(fail + fail) # no rtype
+trash(fail - 1) # no rtype
+trash(1 - fail)
+trash(fail - fail) # no rtype
+trash(fail * 1) # no rtype
+trash(1 * fail)
+trash(fail * fail) # no rtype
+trash(fail / 1) # no rtype
+trash(1 / fail)
+trash(fail / fail) # no rtype
+trash(fail % 1) # no rtype
+trash(1 % fail)
+trash(fail % fail) # no rtype
+trash(-fail) # no rtype
+
+var str = "XXX"
+trash(str._fail) # no rtype
+str._fail = 1
+str._fail += 1
+
+trash(fail._x) # no rtype
+fail._x = 4
+fail._x += 5
+
+var arr = [1, 2]
+trash(arr[fail])
+arr[1] = fail
+arr[1] += fail
+trash(fail[1]) # no rtype
+fail[1] = 2
+fail[1] += 2
+fail[fail] = fail
+
+trash([1..fail]) # no rtype
+trash([fail..1]) # no rtype
+trash([fail..fail]) # no rtype
+trash([1..fail[) # no rtype
+trash([fail..1[) # no rtype
+trash([fail..fail[) # no rtype
+trash([1, fail]) # no rtype
+trash([fail, 1]) # no rtype
+trash([fail, fail]) # no rtype
+
+trash("hello{fail}world")
+trash(fail.as(Int)) # no rtype
+trash(fail.as(not null))
+trash(fail isa Int) # no rtype
+
diff --git a/tests/sav/error_expr_not_ok.sav b/tests/sav/error_expr_not_ok.sav
new file mode 100644 (file)
index 0000000..4cc8ccb
--- /dev/null
@@ -0,0 +1,156 @@
+./error_expr_not_ok.nit:19,19--22: Error: Method or variable 'fail' unknown in A.
+./error_expr_not_ok.nit:21,11--14: Error: Method or variable 'fail' unknown in A.
+./error_expr_not_ok.nit:22,26--29: Error: Method or variable 'fail' unknown in A.
+./error_expr_not_ok.nit:24,8--11: Error: Method or variable 'fail' unknown in A.
+./error_expr_not_ok.nit:25,9--12: Error: Method or variable 'fail' unknown in A.
+./error_expr_not_ok.nit:40,1--7: Error: Method 'fail' doesn't exists in Int.
+./error_expr_not_ok.nit:41,16--19: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:42,7--9: Type error: expected A, got Int
+./error_expr_not_ok.nit:43,1--8: Error: Method 'fail' doesn't exists in Int.
+./error_expr_not_ok.nit:44,12--15: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:48,1--4: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:49,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:50,1--4: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:51,1--9: Error: Method or variable 'fail=' unknown in Sys.
+./error_expr_not_ok.nit:52,6--9: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:53,1--9: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:54,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:55,9--12: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:55,1--12: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:58,2--5: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:60,4--7: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:60,20--20: Type error: expected A, got Int
+./error_expr_not_ok.nit:61,14--17: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:61,24--27: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:62,10--13: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:62,7--27: Type error: expected A, got Int
+./error_expr_not_ok.nit:63,27--30: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:64,20--23: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:64,30--33: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:66,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:66,21--21: Type error: expected A, got Int
+./error_expr_not_ok.nit:67,15--18: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:69,10--13: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:70,20--23: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:71,8--11: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:72,12--15: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:73,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:73,7--18: Type error: expected A, got Bool
+./error_expr_not_ok.nit:74,15--18: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:74,7--18: Type error: expected A, got Bool
+./error_expr_not_ok.nit:75,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:75,15--18: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:75,7--18: Type error: expected A, got Bool
+./error_expr_not_ok.nit:76,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:76,7--19: Type error: expected A, got Bool
+./error_expr_not_ok.nit:77,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:77,16--19: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:77,7--19: Type error: expected A, got Bool
+./error_expr_not_ok.nit:78,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:78,16--19: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:78,7--19: Type error: expected A, got Bool
+./error_expr_not_ok.nit:79,11--14: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:79,7--14: Type error: expected A, got Bool
+./error_expr_not_ok.nit:80,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:81,12--15: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:81,7--15: Type error: expected A, got Bool
+./error_expr_not_ok.nit:82,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:82,15--18: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:83,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:84,12--15: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:84,7--15: Type error: expected A, got Bool
+./error_expr_not_ok.nit:85,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:85,15--18: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:86,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:86,7--15: Type error: expected A, got Bool
+./error_expr_not_ok.nit:87,12--15: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:87,7--15: Type error: expected A, got Bool
+./error_expr_not_ok.nit:88,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:88,15--18: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:88,7--18: Type error: expected A, got Bool
+./error_expr_not_ok.nit:89,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:90,11--14: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:90,7--14: Type error: expected A, got Bool
+./error_expr_not_ok.nit:91,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:91,14--17: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:92,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:93,11--14: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:93,7--14: Type error: expected A, got Bool
+./error_expr_not_ok.nit:94,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:94,14--17: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:95,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:96,12--15: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:96,7--15: Type error: expected A, got Bool
+./error_expr_not_ok.nit:97,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:97,15--18: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:98,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:99,12--15: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:99,7--15: Type error: expected A, got Bool
+./error_expr_not_ok.nit:100,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:100,15--18: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:101,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:102,13--16: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:102,7--16: Type error: expected A, got Int
+./error_expr_not_ok.nit:103,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:103,16--19: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:104,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:105,11--14: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:105,7--14: Type error: expected A, got Int
+./error_expr_not_ok.nit:106,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:106,14--17: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:107,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:108,11--14: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:108,7--14: Type error: expected A, got Int
+./error_expr_not_ok.nit:109,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:109,14--17: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:110,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:111,11--14: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:111,7--14: Type error: expected A, got Int
+./error_expr_not_ok.nit:112,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:112,14--17: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:113,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:114,11--14: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:114,7--14: Type error: expected A, got Int
+./error_expr_not_ok.nit:115,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:115,14--17: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:116,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:117,11--14: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:117,7--14: Type error: expected A, got Int
+./error_expr_not_ok.nit:118,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:118,14--17: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:119,8--11: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:122,7--15: Error: Attribute _fail doesn't exists in String.
+./error_expr_not_ok.nit:123,1--13: Error: Attribute _fail doesn't exists in String.
+./error_expr_not_ok.nit:124,1--14: Error: Attribute _fail doesn't exists in String.
+./error_expr_not_ok.nit:126,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:127,1--4: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:128,1--4: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:131,11--14: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:131,7--14: Type error: expected A, got Int
+./error_expr_not_ok.nit:132,10--13: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:133,11--14: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:134,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:135,1--4: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:136,1--4: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:137,1--4: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:137,6--9: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:137,14--17: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:139,11--14: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:140,8--11: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:141,8--11: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:141,14--17: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:142,11--14: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:143,8--11: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:144,8--11: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:144,14--17: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:145,11--14: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:146,8--11: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:147,8--11: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:147,14--17: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:149,14--17: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:149,7--24: Type error: expected A, got String
+./error_expr_not_ok.nit:150,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:150,7--17: Type error: expected A, got Int
+./error_expr_not_ok.nit:151,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:152,7--10: Error: Method or variable 'fail' unknown in Sys.
+./error_expr_not_ok.nit:152,7--18: Type error: expected A, got Bool
diff --git a/tests/sav/error_expr_not_ok_alt1.sav b/tests/sav/error_expr_not_ok_alt1.sav
new file mode 100644 (file)
index 0000000..4db74a4
--- /dev/null
@@ -0,0 +1 @@
+alt/error_expr_not_ok_alt1.nit:32,11: Type error: class Fail not found in module error_expr_not_ok_alt1.
diff --git a/tests/sav/error_expr_not_ok_alt3.sav b/tests/sav/error_expr_not_ok_alt3.sav
new file mode 100644 (file)
index 0000000..7139349
--- /dev/null
@@ -0,0 +1,41 @@
+alt/error_expr_not_ok_alt3.nit:19,19--22: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt3.nit:21,11--14: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt3.nit:22,26--29: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt3.nit:24,8--11: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt3.nit:25,9--12: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt3.nit:34,12--17: Error: Method or variable 'fail' unknown in Sys.
+alt/error_expr_not_ok_alt3.nit:40,1--7: Error: Method 'fail' doesn't exists in Int.
+alt/error_expr_not_ok_alt3.nit:42,7--9: Type error: expected A, got Int
+alt/error_expr_not_ok_alt3.nit:43,1--8: Error: Method 'fail' doesn't exists in Int.
+alt/error_expr_not_ok_alt3.nit:60,20--20: Type error: expected A, got Int
+alt/error_expr_not_ok_alt3.nit:62,7--27: Type error: expected A, got Int
+alt/error_expr_not_ok_alt3.nit:66,21--21: Type error: expected A, got Int
+alt/error_expr_not_ok_alt3.nit:73,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt3.nit:74,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt3.nit:75,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt3.nit:76,7--19: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt3.nit:77,7--19: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt3.nit:78,7--19: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt3.nit:79,7--14: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt3.nit:81,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt3.nit:84,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt3.nit:86,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt3.nit:87,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt3.nit:88,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt3.nit:90,7--14: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt3.nit:93,7--14: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt3.nit:96,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt3.nit:99,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt3.nit:102,7--16: Type error: expected A, got Int
+alt/error_expr_not_ok_alt3.nit:105,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt3.nit:108,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt3.nit:111,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt3.nit:114,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt3.nit:117,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt3.nit:122,7--15: Error: Attribute _fail doesn't exists in String.
+alt/error_expr_not_ok_alt3.nit:123,1--13: Error: Attribute _fail doesn't exists in String.
+alt/error_expr_not_ok_alt3.nit:124,1--14: Error: Attribute _fail doesn't exists in String.
+alt/error_expr_not_ok_alt3.nit:131,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt3.nit:149,7--24: Type error: expected A, got String
+alt/error_expr_not_ok_alt3.nit:150,7--17: Type error: expected A, got Int
+alt/error_expr_not_ok_alt3.nit:152,7--18: Type error: expected A, got Bool
diff --git a/tests/sav/error_expr_not_ok_alt4.sav b/tests/sav/error_expr_not_ok_alt4.sav
new file mode 100644 (file)
index 0000000..9a3e75e
--- /dev/null
@@ -0,0 +1,105 @@
+alt/error_expr_not_ok_alt4.nit:19,19--22: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt4.nit:21,11--14: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt4.nit:22,26--29: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt4.nit:24,8--11: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt4.nit:25,9--12: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt4.nit:40,1--7: Error: Method 'fail' doesn't exists in Int.
+alt/error_expr_not_ok_alt4.nit:41,16--19: Type error: expected Int, got Object
+alt/error_expr_not_ok_alt4.nit:42,7--9: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:43,1--8: Error: Method 'fail' doesn't exists in Int.
+alt/error_expr_not_ok_alt4.nit:45,7--10: Type error: expected A, got Object
+alt/error_expr_not_ok_alt4.nit:46,1--9: Error: Method 'fail' doesn't exists in Object.
+alt/error_expr_not_ok_alt4.nit:49,7--10: Type error: expected A, got Object
+alt/error_expr_not_ok_alt4.nit:50,1--10: Error: 'trash' arity missmatch.
+alt/error_expr_not_ok_alt4.nit:60,4--7: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt4.nit:60,20--20: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:62,10--13: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt4.nit:62,7--27: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:63,7--30: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:64,7--33: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:66,7--10: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt4.nit:66,21--21: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:69,10--13: Type error: expected Collection[nullable Object], got Int
+alt/error_expr_not_ok_alt4.nit:71,8--11: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt4.nit:72,7--15: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:73,7--10: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt4.nit:73,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:74,15--18: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt4.nit:74,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:75,7--10: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt4.nit:75,15--18: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt4.nit:75,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:76,7--10: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt4.nit:76,7--19: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:77,7--10: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt4.nit:77,16--19: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt4.nit:77,7--19: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:78,7--10: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt4.nit:78,16--19: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt4.nit:78,7--19: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:79,11--14: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt4.nit:79,7--14: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:80,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:81,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:82,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:83,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:84,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:85,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:86,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:87,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:88,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:89,7--14: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:90,7--14: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:91,7--17: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:92,7--14: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:93,7--14: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:94,7--17: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:95,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:96,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:97,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:98,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:99,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:100,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt4.nit:101,7--16: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:102,7--16: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:103,7--19: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:104,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:105,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:106,7--17: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:107,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:108,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:109,7--17: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:110,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:111,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:112,7--17: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:113,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:114,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:115,7--17: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:116,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:117,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:118,7--17: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:119,7--11: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:122,7--15: Error: Attribute _fail doesn't exists in String.
+alt/error_expr_not_ok_alt4.nit:123,1--13: Error: Attribute _fail doesn't exists in String.
+alt/error_expr_not_ok_alt4.nit:124,1--14: Error: Attribute _fail doesn't exists in String.
+alt/error_expr_not_ok_alt4.nit:126,7--13: Error: Attribute _x doesn't exists in Int.
+alt/error_expr_not_ok_alt4.nit:127,1--11: Error: Attribute _x doesn't exists in Int.
+alt/error_expr_not_ok_alt4.nit:128,1--12: Error: Attribute _x doesn't exists in Int.
+alt/error_expr_not_ok_alt4.nit:131,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:134,7--12: Error: Method '[]' doesn't exists in Int.
+alt/error_expr_not_ok_alt4.nit:135,1--11: Error: Method '[]=' doesn't exists in Int.
+alt/error_expr_not_ok_alt4.nit:136,1--12: Error: Method '[]' doesn't exists in Int.
+alt/error_expr_not_ok_alt4.nit:137,1--17: Error: Method '[]=' doesn't exists in Int.
+alt/error_expr_not_ok_alt4.nit:139,8--14: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt4.nit:140,8--14: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt4.nit:141,8--17: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt4.nit:142,8--14: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt4.nit:143,8--14: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt4.nit:144,8--17: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt4.nit:145,8--14: Type error: expected A, got Array[Int]
+alt/error_expr_not_ok_alt4.nit:146,8--14: Type error: expected A, got Array[Int]
+alt/error_expr_not_ok_alt4.nit:147,8--17: Type error: expected A, got Array[Int]
+alt/error_expr_not_ok_alt4.nit:149,7--24: Type error: expected A, got String
+alt/error_expr_not_ok_alt4.nit:150,7--17: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:151,7--22: Type error: expected A, got Int
+alt/error_expr_not_ok_alt4.nit:152,7--18: Type error: expected A, got Bool
diff --git a/tests/sav/error_expr_not_ok_alt5.sav b/tests/sav/error_expr_not_ok_alt5.sav
new file mode 100644 (file)
index 0000000..a45185c
--- /dev/null
@@ -0,0 +1,106 @@
+alt/error_expr_not_ok_alt5.nit:19,19--22: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt5.nit:21,11--14: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt5.nit:22,26--29: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt5.nit:24,8--11: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt5.nit:25,9--12: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt5.nit:37,8--14: Error: Method or variable 'fail2' unknown in Sys.
+alt/error_expr_not_ok_alt5.nit:40,1--7: Error: Method 'fail' doesn't exists in Int.
+alt/error_expr_not_ok_alt5.nit:41,16--19: Type error: expected Int, got Object
+alt/error_expr_not_ok_alt5.nit:42,7--9: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:43,1--8: Error: Method 'fail' doesn't exists in Int.
+alt/error_expr_not_ok_alt5.nit:45,7--10: Type error: expected A, got Object
+alt/error_expr_not_ok_alt5.nit:46,1--9: Error: Method 'fail' doesn't exists in Object.
+alt/error_expr_not_ok_alt5.nit:49,7--10: Type error: expected A, got Object
+alt/error_expr_not_ok_alt5.nit:50,1--10: Error: 'trash' arity missmatch.
+alt/error_expr_not_ok_alt5.nit:60,4--7: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt5.nit:60,20--20: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:62,10--13: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt5.nit:62,7--27: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:63,7--30: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:64,7--33: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:66,7--10: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt5.nit:66,21--21: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:69,10--13: Type error: expected Collection[nullable Object], got Int
+alt/error_expr_not_ok_alt5.nit:71,8--11: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt5.nit:72,7--15: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:73,7--10: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt5.nit:73,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:74,15--18: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt5.nit:74,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:75,7--10: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt5.nit:75,15--18: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt5.nit:75,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:76,7--10: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt5.nit:76,7--19: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:77,7--10: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt5.nit:77,16--19: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt5.nit:77,7--19: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:78,7--10: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt5.nit:78,16--19: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt5.nit:78,7--19: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:79,11--14: Type error: expected Bool, got Int
+alt/error_expr_not_ok_alt5.nit:79,7--14: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:80,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:81,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:82,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:83,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:84,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:85,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:86,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:87,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:88,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:89,7--14: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:90,7--14: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:91,7--17: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:92,7--14: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:93,7--14: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:94,7--17: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:95,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:96,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:97,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:98,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:99,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:100,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt5.nit:101,7--16: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:102,7--16: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:103,7--19: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:104,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:105,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:106,7--17: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:107,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:108,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:109,7--17: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:110,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:111,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:112,7--17: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:113,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:114,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:115,7--17: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:116,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:117,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:118,7--17: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:119,7--11: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:122,7--15: Error: Attribute _fail doesn't exists in String.
+alt/error_expr_not_ok_alt5.nit:123,1--13: Error: Attribute _fail doesn't exists in String.
+alt/error_expr_not_ok_alt5.nit:124,1--14: Error: Attribute _fail doesn't exists in String.
+alt/error_expr_not_ok_alt5.nit:126,7--13: Error: Attribute _x doesn't exists in Int.
+alt/error_expr_not_ok_alt5.nit:127,1--11: Error: Attribute _x doesn't exists in Int.
+alt/error_expr_not_ok_alt5.nit:128,1--12: Error: Attribute _x doesn't exists in Int.
+alt/error_expr_not_ok_alt5.nit:131,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:134,7--12: Error: Method '[]' doesn't exists in Int.
+alt/error_expr_not_ok_alt5.nit:135,1--11: Error: Method '[]=' doesn't exists in Int.
+alt/error_expr_not_ok_alt5.nit:136,1--12: Error: Method '[]' doesn't exists in Int.
+alt/error_expr_not_ok_alt5.nit:137,1--17: Error: Method '[]=' doesn't exists in Int.
+alt/error_expr_not_ok_alt5.nit:139,8--14: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt5.nit:140,8--14: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt5.nit:141,8--17: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt5.nit:142,8--14: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt5.nit:143,8--14: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt5.nit:144,8--17: Type error: expected A, got Range[Int]
+alt/error_expr_not_ok_alt5.nit:145,8--14: Type error: expected A, got Array[Int]
+alt/error_expr_not_ok_alt5.nit:146,8--14: Type error: expected A, got Array[Int]
+alt/error_expr_not_ok_alt5.nit:147,8--17: Type error: expected A, got Array[Int]
+alt/error_expr_not_ok_alt5.nit:149,7--24: Type error: expected A, got String
+alt/error_expr_not_ok_alt5.nit:150,7--17: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:151,7--22: Type error: expected A, got Int
+alt/error_expr_not_ok_alt5.nit:152,7--18: Type error: expected A, got Bool