(signature, context)
| 77689 | } |
| 77690 | } |
| 77691 | function assignContextualParameterTypes(signature, context) { |
| 77692 | if (context.typeParameters) { |
| 77693 | if (!signature.typeParameters) { |
| 77694 | signature.typeParameters = context.typeParameters; |
| 77695 | } |
| 77696 | else { |
| 77697 | return; // This signature has already has a contextual inference performed and cached on it! |
| 77698 | } |
| 77699 | } |
| 77700 | if (context.thisParameter) { |
| 77701 | var parameter = signature.thisParameter; |
| 77702 | if (!parameter || parameter.valueDeclaration && !parameter.valueDeclaration.type) { |
| 77703 | if (!parameter) { |
| 77704 | signature.thisParameter = createSymbolWithType(context.thisParameter, /*type*/ undefined); |
| 77705 | } |
| 77706 | assignParameterType(signature.thisParameter, getTypeOfSymbol(context.thisParameter)); |
| 77707 | } |
| 77708 | } |
| 77709 | var len = signature.parameters.length - (signatureHasRestParameter(signature) ? 1 : 0); |
| 77710 | for (var i = 0; i < len; i++) { |
| 77711 | var parameter = signature.parameters[i]; |
| 77712 | if (!ts.getEffectiveTypeAnnotationNode(parameter.valueDeclaration)) { |
| 77713 | var contextualParameterType = tryGetTypeAtPosition(context, i); |
| 77714 | assignParameterType(parameter, contextualParameterType); |
| 77715 | } |
| 77716 | } |
| 77717 | if (signatureHasRestParameter(signature)) { |
| 77718 | // parameter might be a transient symbol generated by use of `arguments` in the function body. |
| 77719 | var parameter = ts.last(signature.parameters); |
| 77720 | if (parameter.valueDeclaration |
| 77721 | ? !ts.getEffectiveTypeAnnotationNode(parameter.valueDeclaration) |
| 77722 | // a declarationless parameter may still have a `.type` already set by its construction logic |
| 77723 | // (which may pull a type from a jsdoc) - only allow fixing on `DeferredType` parameters with a fallback type |
| 77724 | : !!(ts.getCheckFlags(parameter) & 65536 /* CheckFlags.DeferredType */)) { |
| 77725 | var contextualParameterType = getRestTypeAtPosition(context, len); |
| 77726 | assignParameterType(parameter, contextualParameterType); |
| 77727 | } |
| 77728 | } |
| 77729 | } |
| 77730 | function assignNonContextualParameterTypes(signature) { |
| 77731 | if (signature.thisParameter) { |
| 77732 | assignParameterType(signature.thisParameter); |
no test coverage detected
searching dependent graphs…