(node)
| 80662 | return undefined; |
| 80663 | } |
| 80664 | function checkTypeReferenceNode(node) { |
| 80665 | checkGrammarTypeArguments(node, node.typeArguments); |
| 80666 | if (node.kind === 178 /* SyntaxKind.TypeReference */ && node.typeName.jsdocDotPos !== undefined && !ts.isInJSFile(node) && !ts.isInJSDoc(node)) { |
| 80667 | grammarErrorAtPos(node, node.typeName.jsdocDotPos, 1, ts.Diagnostics.JSDoc_types_can_only_be_used_inside_documentation_comments); |
| 80668 | } |
| 80669 | ts.forEach(node.typeArguments, checkSourceElement); |
| 80670 | var type = getTypeFromTypeReference(node); |
| 80671 | if (!isErrorType(type)) { |
| 80672 | if (node.typeArguments) { |
| 80673 | addLazyDiagnostic(function () { |
| 80674 | var typeParameters = getTypeParametersForTypeReference(node); |
| 80675 | if (typeParameters) { |
| 80676 | checkTypeArgumentConstraints(node, typeParameters); |
| 80677 | } |
| 80678 | }); |
| 80679 | } |
| 80680 | var symbol = getNodeLinks(node).resolvedSymbol; |
| 80681 | if (symbol) { |
| 80682 | if (ts.some(symbol.declarations, function (d) { return isTypeDeclaration(d) && !!(d.flags & 268435456 /* NodeFlags.Deprecated */); })) { |
| 80683 | addDeprecatedSuggestion(getDeprecatedSuggestionNode(node), symbol.declarations, symbol.escapedName); |
| 80684 | } |
| 80685 | if (type.flags & 32 /* TypeFlags.Enum */ && symbol.flags & 8 /* SymbolFlags.EnumMember */) { |
| 80686 | error(node, ts.Diagnostics.Enum_type_0_has_members_with_initializers_that_are_not_literals, typeToString(type)); |
| 80687 | } |
| 80688 | } |
| 80689 | } |
| 80690 | } |
| 80691 | function getTypeArgumentConstraint(node) { |
| 80692 | var typeReferenceNode = ts.tryCast(node.parent, ts.isTypeReferenceType); |
| 80693 | if (!typeReferenceNode) |
no test coverage detected
searching dependent graphs…