Problem with map type (?)

Imported from http://bugzilla.roxen.com/bugzilla/show_bug.cgi?id=4434

Reported by Martin Nilsson, IDA nilsson@pike.ida.liu.se

This code

#pragma strict_types

string f(int i) { return (string)i; }

void main(int n, array(string) args)
{
  array(int) a = (array(int))(args[0]);
  sprintf("%@s", map(a, f));
}

produces the warning

/home/nilsson/Pike/7.7/type.pike:9: Warning: Type mismatch in argument 2 to
sprintf.
/home/nilsson/Pike/7.7/type.pike:9: Warning: Expected: array(object | string)
/home/nilsson/Pike/7.7/type.pike:9: Warning: Got     : array(string | mixed)