I've added some type checking support for sprintf() arguments:
New type checker:
sprintf("%s%i%f\n", 17, "", 14.0);
Compiler Error: 1:Error in format string, i is not a format. Compiler Error: 1:Bad argument 2 to sprintf. Compiler Error: 1:Expected: object | string Compiler Error: 1:Got : int(17..17) Compiler Error: 1:Bad argument 3 to sprintf. Compiler Error: 1:Expected: object | float Compiler Error: 1:Got : string(0) Compiler Error: 1:Too many arguments to sprintf (expected 3 arguments). Compiler Error: 1:Got : float
Old type checker:
sprintf("%s%i%f\n", 17, "", 14.0);
Compiler Error: 1:Error in format string, i is not a format. Compiler Error: 1:Too many arguments to sprintf. Compiler Error: 1:Expected: function(string(8), object | string, object | float : string) Compiler Error: 1:Got : function(string(8), int(17..17), string(0), float : void | mixed)