// For (possibly parenthesized) identifiers denoting built-in
// functions, the recorded signatures are call-site specific:
// if the call result is not a constant, the recorded type is
// an argument-specific signature. Otherwise, the recorded type
// is invalid.
For make() the signature seems a bit too call-site specific: it depends on whether the len and cap arguments are consts or vars. If the arguments are constant (e.g. make(int, 10)), the type is something plausible: func(int, int) int. But if an argument is a variable (e.g. var length = 10; make(int, 10)) the type is different, and strange: func(int) int. In particular, while it's arguable whether any of these types "make sense", this means the (non-variadic) function has more arguments than its supposed type's parameters, which is confusing to a static analysis. (Of course, Go itself is fine with it.)