(node, checker)
| 144818 | ts.isReturnStatementWithFixablePromiseHandler = isReturnStatementWithFixablePromiseHandler; |
| 144819 | // Should be kept up to date with transformExpression in convertToAsyncFunction.ts |
| 144820 | function isFixablePromiseHandler(node, checker) { |
| 144821 | // ensure outermost call exists and is a promise handler |
| 144822 | if (!isPromiseHandler(node) || !hasSupportedNumberOfArguments(node) || !node.arguments.every(function (arg) { return isFixablePromiseArgument(arg, checker); })) { |
| 144823 | return false; |
| 144824 | } |
| 144825 | // ensure all chained calls are valid |
| 144826 | var currentNode = node.expression.expression; |
| 144827 | while (isPromiseHandler(currentNode) || ts.isPropertyAccessExpression(currentNode)) { |
| 144828 | if (ts.isCallExpression(currentNode)) { |
| 144829 | if (!hasSupportedNumberOfArguments(currentNode) || !currentNode.arguments.every(function (arg) { return isFixablePromiseArgument(arg, checker); })) { |
| 144830 | return false; |
| 144831 | } |
| 144832 | currentNode = currentNode.expression.expression; |
| 144833 | } |
| 144834 | else { |
| 144835 | currentNode = currentNode.expression; |
| 144836 | } |
| 144837 | } |
| 144838 | return true; |
| 144839 | } |
| 144840 | ts.isFixablePromiseHandler = isFixablePromiseHandler; |
| 144841 | function isPromiseHandler(node) { |
| 144842 | return ts.isCallExpression(node) && (ts.hasPropertyAccessExpressionWithName(node, "then") || |
no test coverage detected