MCPcopy Index your code
hub / github.com/nodejs/node / assignContextualParameterTypes

Function assignContextualParameterTypes

test/fixtures/snapshot/typescript.js:77691–77729  ·  view source on GitHub ↗
(signature, context)

Source from the content-addressed store, hash-verified

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);

Calls 7

createSymbolWithTypeFunction · 0.85
assignParameterTypeFunction · 0.85
getTypeOfSymbolFunction · 0.85
tryGetTypeAtPositionFunction · 0.85
getRestTypeAtPositionFunction · 0.85
lastMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…