(checker, selection, statement, file)
| 161807 | return ts.rangeContainsStartEnd(r1, ts.skipTrivia(file.text, node.pos), node.end); |
| 161808 | } |
| 161809 | function collectTypeParameters(checker, selection, statement, file) { |
| 161810 | var result = []; |
| 161811 | return visitor(selection) ? undefined : result; |
| 161812 | function visitor(node) { |
| 161813 | if (ts.isTypeReferenceNode(node)) { |
| 161814 | if (ts.isIdentifier(node.typeName)) { |
| 161815 | var typeName = node.typeName; |
| 161816 | var symbol = checker.resolveName(typeName.text, typeName, 262144 /* SymbolFlags.TypeParameter */, /* excludeGlobals */ true); |
| 161817 | for (var _i = 0, _a = (symbol === null || symbol === void 0 ? void 0 : symbol.declarations) || ts.emptyArray; _i < _a.length; _i++) { |
| 161818 | var decl = _a[_i]; |
| 161819 | if (ts.isTypeParameterDeclaration(decl) && decl.getSourceFile() === file) { |
| 161820 | // skip extraction if the type node is in the range of the type parameter declaration. |
| 161821 | // function foo<T extends { a?: /**/T }>(): void; |
| 161822 | if (decl.name.escapedText === typeName.escapedText && rangeContainsSkipTrivia(decl, selection, file)) { |
| 161823 | return true; |
| 161824 | } |
| 161825 | if (rangeContainsSkipTrivia(statement, decl, file) && !rangeContainsSkipTrivia(selection, decl, file)) { |
| 161826 | ts.pushIfUnique(result, decl); |
| 161827 | break; |
| 161828 | } |
| 161829 | } |
| 161830 | } |
| 161831 | } |
| 161832 | } |
| 161833 | else if (ts.isInferTypeNode(node)) { |
| 161834 | var conditionalTypeNode = ts.findAncestor(node, function (n) { return ts.isConditionalTypeNode(n) && rangeContainsSkipTrivia(n.extendsType, node, file); }); |
| 161835 | if (!conditionalTypeNode || !rangeContainsSkipTrivia(selection, conditionalTypeNode, file)) { |
| 161836 | return true; |
| 161837 | } |
| 161838 | } |
| 161839 | else if ((ts.isTypePredicateNode(node) || ts.isThisTypeNode(node))) { |
| 161840 | var functionLikeNode = ts.findAncestor(node.parent, ts.isFunctionLike); |
| 161841 | if (functionLikeNode && functionLikeNode.type && rangeContainsSkipTrivia(functionLikeNode.type, node, file) && !rangeContainsSkipTrivia(selection, functionLikeNode, file)) { |
| 161842 | return true; |
| 161843 | } |
| 161844 | } |
| 161845 | else if (ts.isTypeQueryNode(node)) { |
| 161846 | if (ts.isIdentifier(node.exprName)) { |
| 161847 | var symbol = checker.resolveName(node.exprName.text, node.exprName, 111551 /* SymbolFlags.Value */, /* excludeGlobals */ false); |
| 161848 | if ((symbol === null || symbol === void 0 ? void 0 : symbol.valueDeclaration) && rangeContainsSkipTrivia(statement, symbol.valueDeclaration, file) && !rangeContainsSkipTrivia(selection, symbol.valueDeclaration, file)) { |
| 161849 | return true; |
| 161850 | } |
| 161851 | } |
| 161852 | else { |
| 161853 | if (ts.isThisIdentifier(node.exprName.left) && !rangeContainsSkipTrivia(selection, node.parent, file)) { |
| 161854 | return true; |
| 161855 | } |
| 161856 | } |
| 161857 | } |
| 161858 | if (file && ts.isTupleTypeNode(node) && (ts.getLineAndCharacterOfPosition(file, node.pos).line === ts.getLineAndCharacterOfPosition(file, node.end).line)) { |
| 161859 | ts.setEmitFlags(node, 1 /* EmitFlags.SingleLine */); |
| 161860 | } |
| 161861 | return ts.forEachChild(node, visitor); |
| 161862 | } |
| 161863 | } |
| 161864 | function doTypeAliasChange(changes, file, name, info) { |
| 161865 | var firstStatement = info.firstStatement, selection = info.selection, typeParameters = info.typeParameters; |
| 161866 | var newTypeNode = ts.factory.createTypeAliasDeclaration( |
no test coverage detected