(node, signatures, args)
| 75948 | return constructorSymbol === globalPromiseSymbol; |
| 75949 | } |
| 75950 | function getArgumentArityError(node, signatures, args) { |
| 75951 | var _a; |
| 75952 | var spreadIndex = getSpreadArgumentIndex(args); |
| 75953 | if (spreadIndex > -1) { |
| 75954 | return ts.createDiagnosticForNode(args[spreadIndex], ts.Diagnostics.A_spread_argument_must_either_have_a_tuple_type_or_be_passed_to_a_rest_parameter); |
| 75955 | } |
| 75956 | var min = Number.POSITIVE_INFINITY; // smallest parameter count |
| 75957 | var max = Number.NEGATIVE_INFINITY; // largest parameter count |
| 75958 | var maxBelow = Number.NEGATIVE_INFINITY; // largest parameter count that is smaller than the number of arguments |
| 75959 | var minAbove = Number.POSITIVE_INFINITY; // smallest parameter count that is larger than the number of arguments |
| 75960 | var closestSignature; |
| 75961 | for (var _i = 0, signatures_8 = signatures; _i < signatures_8.length; _i++) { |
| 75962 | var sig = signatures_8[_i]; |
| 75963 | var minParameter = getMinArgumentCount(sig); |
| 75964 | var maxParameter = getParameterCount(sig); |
| 75965 | // smallest/largest parameter counts |
| 75966 | if (minParameter < min) { |
| 75967 | min = minParameter; |
| 75968 | closestSignature = sig; |
| 75969 | } |
| 75970 | max = Math.max(max, maxParameter); |
| 75971 | // shortest parameter count *longer than the call*/longest parameter count *shorter than the call* |
| 75972 | if (minParameter < args.length && minParameter > maxBelow) |
| 75973 | maxBelow = minParameter; |
| 75974 | if (args.length < maxParameter && maxParameter < minAbove) |
| 75975 | minAbove = maxParameter; |
| 75976 | } |
| 75977 | var hasRestParameter = ts.some(signatures, hasEffectiveRestParameter); |
| 75978 | var parameterRange = hasRestParameter ? min |
| 75979 | : min < max ? min + "-" + max |
| 75980 | : min; |
| 75981 | var isVoidPromiseError = !hasRestParameter && parameterRange === 1 && args.length === 0 && isPromiseResolveArityError(node); |
| 75982 | if (isVoidPromiseError && ts.isInJSFile(node)) { |
| 75983 | return getDiagnosticForCallNode(node, ts.Diagnostics.Expected_1_argument_but_got_0_new_Promise_needs_a_JSDoc_hint_to_produce_a_resolve_that_can_be_called_without_arguments); |
| 75984 | } |
| 75985 | var error = hasRestParameter |
| 75986 | ? ts.Diagnostics.Expected_at_least_0_arguments_but_got_1 |
| 75987 | : isVoidPromiseError |
| 75988 | ? ts.Diagnostics.Expected_0_arguments_but_got_1_Did_you_forget_to_include_void_in_your_type_argument_to_Promise |
| 75989 | : ts.Diagnostics.Expected_0_arguments_but_got_1; |
| 75990 | if (min < args.length && args.length < max) { |
| 75991 | // between min and max, but with no matching overload |
| 75992 | return getDiagnosticForCallNode(node, ts.Diagnostics.No_overload_expects_0_arguments_but_overloads_do_exist_that_expect_either_1_or_2_arguments, args.length, maxBelow, minAbove); |
| 75993 | } |
| 75994 | else if (args.length < min) { |
| 75995 | // too short: put the error span on the call expression, not any of the args |
| 75996 | var diagnostic = getDiagnosticForCallNode(node, error, parameterRange, args.length); |
| 75997 | var parameter = (_a = closestSignature === null || closestSignature === void 0 ? void 0 : closestSignature.declaration) === null || _a === void 0 ? void 0 : _a.parameters[closestSignature.thisParameter ? args.length + 1 : args.length]; |
| 75998 | if (parameter) { |
| 75999 | var parameterError = ts.createDiagnosticForNode(parameter, ts.isBindingPattern(parameter.name) ? ts.Diagnostics.An_argument_matching_this_binding_pattern_was_not_provided |
| 76000 | : ts.isRestParameter(parameter) ? ts.Diagnostics.Arguments_for_the_rest_parameter_0_were_not_provided |
| 76001 | : ts.Diagnostics.An_argument_for_0_was_not_provided, !parameter.name ? args.length : !ts.isBindingPattern(parameter.name) ? ts.idText(ts.getFirstIdentifier(parameter.name)) : undefined); |
| 76002 | return ts.addRelatedInfo(diagnostic, parameterError); |
| 76003 | } |
| 76004 | return diagnostic; |
| 76005 | } |
| 76006 | else { |
| 76007 | // too long; error goes on the excess parameters |
no test coverage detected
searching dependent graphs…