* Serializes the types of the parameters of a node for use with decorator type metadata. * * @param node The node that should have its parameter types serialized.
(node, container)
| 92749 | * @param node The node that should have its parameter types serialized. |
| 92750 | */ |
| 92751 | function serializeParameterTypesOfNode(node, container) { |
| 92752 | var valueDeclaration = ts.isClassLike(node) |
| 92753 | ? ts.getFirstConstructorWithBody(node) |
| 92754 | : ts.isFunctionLike(node) && ts.nodeIsPresent(node.body) |
| 92755 | ? node |
| 92756 | : undefined; |
| 92757 | var expressions = []; |
| 92758 | if (valueDeclaration) { |
| 92759 | var parameters = getParametersOfDecoratedDeclaration(valueDeclaration, container); |
| 92760 | var numParameters = parameters.length; |
| 92761 | for (var i = 0; i < numParameters; i++) { |
| 92762 | var parameter = parameters[i]; |
| 92763 | if (i === 0 && ts.isIdentifier(parameter.name) && parameter.name.escapedText === "this") { |
| 92764 | continue; |
| 92765 | } |
| 92766 | if (parameter.dotDotDotToken) { |
| 92767 | expressions.push(serializeTypeNode(ts.getRestParameterElementType(parameter.type))); |
| 92768 | } |
| 92769 | else { |
| 92770 | expressions.push(serializeTypeOfNode(parameter)); |
| 92771 | } |
| 92772 | } |
| 92773 | } |
| 92774 | return factory.createArrayLiteralExpression(expressions); |
| 92775 | } |
| 92776 | function getParametersOfDecoratedDeclaration(node, container) { |
| 92777 | if (container && node.kind === 172 /* SyntaxKind.GetAccessor */) { |
| 92778 | var setAccessor = ts.getAllAccessorDeclarations(container.members, node).setAccessor; |
no test coverage detected
searching dependent graphs…