This program:
-------8<-------------------------------------- #pragma strict_types void main() { Stdio.Stat s = file_stat("/etc/passwd"); String.int2size(s->size); } -------8<--------------------------------------
Will cause the following complaint:
test-int2size.pike:5: Warning: Type mismatch in argument 1 to int2size. test-int2size.pike:5: Warning: Expected: int. test-int2size.pike:5: Warning: Got : function | string | int.
which seems a bit unfair.
The problem is in the definition of Stdio.Stat (aka files.Stat), where all the fields are accessed via lfun::`[]() or lfun::`->(), which has the declared type function(string|int(0..6):string|int|function)| function(int, int...:array(int)). It would probably be a good idea to fix this by using getters and setters instead.