return null
end
var name = n_assign_op.method_name
+ if type_lvalue isa MMTypeNone then
+ v.error(self, "Error: Method '{name}' call on 'null'.")
+ return null
+ end
var lc = type_lvalue.local_class
if not lc.has_global_property_by_name(name) then
v.error(self, "Error: Method '{name}' doesn't exists in {type_lvalue}.")
if not v.check_expr(n_expr) then return
var type_recv = n_expr.stype
var name = n_id.to_symbol
+ if type_recv isa MMTypeNone then
+ v.error(self, "Error: Attribute '{name}' access on 'null'.")
+ return
+ end
var lc = type_recv.local_class
if not lc.has_global_property_by_name(name) then
v.error(self, "Error: Attribute {name} doesn't exists in {type_recv}.")
private fun get_property(v: TypingVisitor, type_recv: MMType, is_implicit_self: Bool, name: Symbol): nullable MMMethod
do
+ if type_recv isa MMTypeNone then
+ v.error(self, "Error: Method '{name}' call on 'null'.")
+ return null
+ end
var lc = type_recv.local_class
var prop: nullable MMMethod = null
if lc.has_global_property_by_name(name) then prop = lc.select_method(name)
if prop == null and v.local_property.global.is_init then
- var props = type_recv.local_class.super_methods_named(name)
+ var props = lc.super_methods_named(name)
if props.length > 1 then
v.error(self, "Error: Ambigous method name '{name}' for {props.join(", ")}. Use explicit designation.")
return null
else if props.length == 1 then
- var p = type_recv.local_class[props.first.global]
+ var p = lc[props.first.global]
assert p isa MMMethod
prop = p
end
end
if n_expr.stype isa MMTypeNone then
- try_to_isa(v, n_expr2)
+ if n_expr2.stype isa MMTypeNone then
+ v.warning(self, "Warning: comparaison between 2 null values.")
+ else
+ try_to_isa(v, n_expr2)
+ end
else if n_expr2.stype isa MMTypeNone then
try_to_isa(v, n_expr)
end
end
if n_expr.stype isa MMTypeNone then
- try_to_isa(v, n_expr2)
+ if n_expr2.stype isa MMTypeNone then
+ v.warning(self, "Warning: comparaison between 2 null values.")
+ else
+ try_to_isa(v, n_expr2)
+ end
else if n_expr2.stype isa MMTypeNone then
try_to_isa(v, n_expr)
end
v.warning(self, "Warning: Expression is already a {ttype}.")
else if etype < ttype then
v.warning(self, "Warning: Expression is already a {ttype} since it is a {etype}.")
+ else if etype isa MMTypeNone then
+ # ttype is not nullable because of prevous test
+ v.warning(self, "Warning: Expression is null therefore cannot be a {ttype}.")
else if etype.is_nullable and etype.as_notnull == ttype then
if ttype isa MMTypeFormal and ttype.bound.is_nullable then
# No warning in this case since with
--- /dev/null
+alt/error_expr_not_ok_alt6.nit:19,19--22: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt6.nit:21,11--14: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt6.nit:22,26--29: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt6.nit:24,8--11: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt6.nit:25,9--12: Error: Method or variable 'fail' unknown in A.
+alt/error_expr_not_ok_alt6.nit:40,1--7: Error: Method 'fail' doesn't exists in Int.
+alt/error_expr_not_ok_alt6.nit:41,16--19: Type error: expected Int, got null
+alt/error_expr_not_ok_alt6.nit:42,7--9: Type error: expected A, got Int
+alt/error_expr_not_ok_alt6.nit:43,1--8: Error: Method 'fail' doesn't exists in Int.
+alt/error_expr_not_ok_alt6.nit:45,7--10: Type error: expected A, got null
+alt/error_expr_not_ok_alt6.nit:46,1--9: Error: Method 'fail' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:49,7--10: Type error: expected A, got null
+alt/error_expr_not_ok_alt6.nit:50,1--10: Error: Method 'trash' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:51,8--9: Type error: expected null, got Int
+alt/error_expr_not_ok_alt6.nit:52,6--9: Type error: expected Int, got null
+alt/error_expr_not_ok_alt6.nit:53,1--9: Error: Method '+' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:54,7--10: Type error: expected Int, got null
+alt/error_expr_not_ok_alt6.nit:55,1--12: Error: Method '+' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:60,4--7: Type error: expected Bool, got null
+alt/error_expr_not_ok_alt6.nit:60,20: Type error: expected A, got Int
+alt/error_expr_not_ok_alt6.nit:62,10--13: Type error: expected Bool, got null
+alt/error_expr_not_ok_alt6.nit:62,7--27: Type error: expected A, got Int
+alt/error_expr_not_ok_alt6.nit:63,7--30: Type error: expected A, got nullable Int
+alt/error_expr_not_ok_alt6.nit:64,7--33: Type error: expected A, got null
+alt/error_expr_not_ok_alt6.nit:66,7--10: Type error: expected Bool, got null
+alt/error_expr_not_ok_alt6.nit:66,21: Type error: expected A, got Int
+alt/error_expr_not_ok_alt6.nit:69,10--13: Type error: expected Collection[nullable Object], got null
+alt/error_expr_not_ok_alt6.nit:71,8--11: Type error: expected Bool, got null
+alt/error_expr_not_ok_alt6.nit:72,7--15: Type error: expected A, got null
+alt/error_expr_not_ok_alt6.nit:73,7--10: Type error: expected Bool, got null
+alt/error_expr_not_ok_alt6.nit:73,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt6.nit:74,15--18: Type error: expected Bool, got null
+alt/error_expr_not_ok_alt6.nit:74,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt6.nit:75,7--10: Type error: expected Bool, got null
+alt/error_expr_not_ok_alt6.nit:75,15--18: Type error: expected Bool, got null
+alt/error_expr_not_ok_alt6.nit:75,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt6.nit:76,7--10: Type error: expected Bool, got null
+alt/error_expr_not_ok_alt6.nit:76,7--19: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt6.nit:77,7--10: Type error: expected Bool, got null
+alt/error_expr_not_ok_alt6.nit:77,16--19: Type error: expected Bool, got null
+alt/error_expr_not_ok_alt6.nit:77,7--19: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt6.nit:78,7--10: Type error: expected Bool, got null
+alt/error_expr_not_ok_alt6.nit:78,16--19: Type error: expected Bool, got null
+alt/error_expr_not_ok_alt6.nit:78,7--19: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt6.nit:79,11--14: Type error: expected Bool, got null
+alt/error_expr_not_ok_alt6.nit:79,7--14: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt6.nit:80,7--15: Error: Method '==' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:81,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt6.nit:82,7--18: Error: Method '==' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:83,7--15: Error: Method '!=' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:84,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt6.nit:85,7--18: Error: Method '!=' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:86,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt6.nit:87,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt6.nit:88,7--18: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt6.nit:89,7--14: Error: Method '<' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:90,11--14: Type error: expected Int, got null
+alt/error_expr_not_ok_alt6.nit:90,7--14: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt6.nit:91,7--17: Error: Method '<' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:92,7--14: Error: Method '>' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:93,11--14: Type error: expected Int, got null
+alt/error_expr_not_ok_alt6.nit:93,7--14: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt6.nit:94,7--17: Error: Method '>' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:95,7--15: Error: Method '<=' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:96,12--15: Type error: expected Int, got null
+alt/error_expr_not_ok_alt6.nit:96,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt6.nit:97,7--18: Error: Method '<=' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:98,7--15: Error: Method '>=' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:99,12--15: Type error: expected Int, got null
+alt/error_expr_not_ok_alt6.nit:99,7--15: Type error: expected A, got Bool
+alt/error_expr_not_ok_alt6.nit:100,7--18: Error: Method '>=' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:101,7--16: Error: Method '<=>' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:102,13--16: Type error: expected Int, got null
+alt/error_expr_not_ok_alt6.nit:102,7--16: Type error: expected A, got Int
+alt/error_expr_not_ok_alt6.nit:103,7--19: Error: Method '<=>' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:104,7--14: Error: Method '+' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:105,11--14: Type error: expected Int, got null
+alt/error_expr_not_ok_alt6.nit:105,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt6.nit:106,7--17: Error: Method '+' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:107,7--14: Error: Method '-' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:108,11--14: Type error: expected Int, got null
+alt/error_expr_not_ok_alt6.nit:108,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt6.nit:109,7--17: Error: Method '-' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:110,7--14: Error: Method '*' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:111,11--14: Type error: expected Int, got null
+alt/error_expr_not_ok_alt6.nit:111,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt6.nit:112,7--17: Error: Method '*' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:113,7--14: Error: Method '/' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:114,11--14: Type error: expected Int, got null
+alt/error_expr_not_ok_alt6.nit:114,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt6.nit:115,7--17: Error: Method '/' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:116,7--14: Error: Method '%' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:117,11--14: Type error: expected Int, got null
+alt/error_expr_not_ok_alt6.nit:117,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt6.nit:118,7--17: Error: Method '%' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:119,7--11: Error: Method 'unary -' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:122,7--15: Error: Attribute _fail doesn't exists in String.
+alt/error_expr_not_ok_alt6.nit:123,1--13: Error: Attribute _fail doesn't exists in String.
+alt/error_expr_not_ok_alt6.nit:124,1--14: Error: Attribute _fail doesn't exists in String.
+alt/error_expr_not_ok_alt6.nit:126,7--13: Error: Attribute '_x' access on 'null'.
+alt/error_expr_not_ok_alt6.nit:127,1--11: Error: Attribute '_x' access on 'null'.
+alt/error_expr_not_ok_alt6.nit:128,1--12: Error: Attribute '_x' access on 'null'.
+alt/error_expr_not_ok_alt6.nit:131,11--14: Type error: expected Int, got null
+alt/error_expr_not_ok_alt6.nit:131,7--14: Type error: expected A, got Int
+alt/error_expr_not_ok_alt6.nit:132,10--13: Type error: expected Int, got null
+alt/error_expr_not_ok_alt6.nit:133,11--14: Type error: expected Int, got null
+alt/error_expr_not_ok_alt6.nit:134,7--12: Error: Method '[]' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:135,1--11: Error: Method '[]=' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:136,1--12: Error: Method '[]' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:137,1--17: Error: Method '[]=' call on 'null'.
+alt/error_expr_not_ok_alt6.nit:139,8--14: Type error: Int incompatible with null.
+alt/error_expr_not_ok_alt6.nit:140,8--14: Type error: null incompatible with Int.
+alt/error_expr_not_ok_alt6.nit:141,8--11: Type error: expected Discrete, got null
+alt/error_expr_not_ok_alt6.nit:142,8--14: Type error: Int incompatible with null.
+alt/error_expr_not_ok_alt6.nit:143,8--14: Type error: null incompatible with Int.
+alt/error_expr_not_ok_alt6.nit:144,8--11: Type error: expected Discrete, got null
+alt/error_expr_not_ok_alt6.nit:145,8--14: Type error: expected A, got Array[nullable Int]
+alt/error_expr_not_ok_alt6.nit:146,8--14: Type error: expected A, got Array[nullable Int]
+alt/error_expr_not_ok_alt6.nit:147,8--17: Type error: expected A, got Array[null]
+alt/error_expr_not_ok_alt6.nit:149,7--24: Type error: expected A, got String
+alt/error_expr_not_ok_alt6.nit:150,7--17: Type error: expected A, got Int
+alt/error_expr_not_ok_alt6.nit:151,7--10: Type error: 'as(not null)' on 'null' value.
+alt/error_expr_not_ok_alt6.nit:152,7--18: Type error: expected A, got Bool