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

Function typeReferenceToTypeNode

test/fixtures/snapshot/typescript.js:52885–52971  ·  view source on GitHub ↗
(type)

Source from the content-addressed store, hash-verified

52883 return typeLiteralNode;
52884 }
52885 function typeReferenceToTypeNode(type) {
52886 var typeArguments = getTypeArguments(type);
52887 if (type.target === globalArrayType || type.target === globalReadonlyArrayType) {
52888 if (context.flags & 2 /* NodeBuilderFlags.WriteArrayAsGenericType */) {
52889 var typeArgumentNode = typeToTypeNodeHelper(typeArguments[0], context);
52890 return ts.factory.createTypeReferenceNode(type.target === globalArrayType ? "Array" : "ReadonlyArray", [typeArgumentNode]);
52891 }
52892 var elementType = typeToTypeNodeHelper(typeArguments[0], context);
52893 var arrayType = ts.factory.createArrayTypeNode(elementType);
52894 return type.target === globalArrayType ? arrayType : ts.factory.createTypeOperatorNode(145 /* SyntaxKind.ReadonlyKeyword */, arrayType);
52895 }
52896 else if (type.target.objectFlags & 8 /* ObjectFlags.Tuple */) {
52897 typeArguments = ts.sameMap(typeArguments, function (t, i) { return removeMissingType(t, !!(type.target.elementFlags[i] & 2 /* ElementFlags.Optional */)); });
52898 if (typeArguments.length > 0) {
52899 var arity = getTypeReferenceArity(type);
52900 var tupleConstituentNodes = mapToTypeNodes(typeArguments.slice(0, arity), context);
52901 if (tupleConstituentNodes) {
52902 if (type.target.labeledElementDeclarations) {
52903 for (var i = 0; i < tupleConstituentNodes.length; i++) {
52904 var flags = type.target.elementFlags[i];
52905 tupleConstituentNodes[i] = ts.factory.createNamedTupleMember(flags & 12 /* ElementFlags.Variable */ ? ts.factory.createToken(25 /* SyntaxKind.DotDotDotToken */) : undefined, ts.factory.createIdentifier(ts.unescapeLeadingUnderscores(getTupleElementLabel(type.target.labeledElementDeclarations[i]))), flags & 2 /* ElementFlags.Optional */ ? ts.factory.createToken(57 /* SyntaxKind.QuestionToken */) : undefined, flags & 4 /* ElementFlags.Rest */ ? ts.factory.createArrayTypeNode(tupleConstituentNodes[i]) :
52906 tupleConstituentNodes[i]);
52907 }
52908 }
52909 else {
52910 for (var i = 0; i < Math.min(arity, tupleConstituentNodes.length); i++) {
52911 var flags = type.target.elementFlags[i];
52912 tupleConstituentNodes[i] =
52913 flags & 12 /* ElementFlags.Variable */ ? ts.factory.createRestTypeNode(flags & 4 /* ElementFlags.Rest */ ? ts.factory.createArrayTypeNode(tupleConstituentNodes[i]) : tupleConstituentNodes[i]) :
52914 flags & 2 /* ElementFlags.Optional */ ? ts.factory.createOptionalTypeNode(tupleConstituentNodes[i]) :
52915 tupleConstituentNodes[i];
52916 }
52917 }
52918 var tupleTypeNode = ts.setEmitFlags(ts.factory.createTupleTypeNode(tupleConstituentNodes), 1 /* EmitFlags.SingleLine */);
52919 return type.target.readonly ? ts.factory.createTypeOperatorNode(145 /* SyntaxKind.ReadonlyKeyword */, tupleTypeNode) : tupleTypeNode;
52920 }
52921 }
52922 if (context.encounteredError || (context.flags & 524288 /* NodeBuilderFlags.AllowEmptyTuple */)) {
52923 var tupleTypeNode = ts.setEmitFlags(ts.factory.createTupleTypeNode([]), 1 /* EmitFlags.SingleLine */);
52924 return type.target.readonly ? ts.factory.createTypeOperatorNode(145 /* SyntaxKind.ReadonlyKeyword */, tupleTypeNode) : tupleTypeNode;
52925 }
52926 context.encounteredError = true;
52927 return undefined; // TODO: GH#18217
52928 }
52929 else if (context.flags & 2048 /* NodeBuilderFlags.WriteClassExpressionAsTypeLiteral */ &&
52930 type.symbol.valueDeclaration &&
52931 ts.isClassLike(type.symbol.valueDeclaration) &&
52932 !isValueSymbolAccessible(type.symbol, context.enclosingDeclaration)) {
52933 return createAnonymousTypeNode(type);
52934 }
52935 else {
52936 var outerTypeParameters = type.target.outerTypeParameters;
52937 var i = 0;
52938 var resultType = void 0;
52939 if (outerTypeParameters) {
52940 var length_2 = outerTypeParameters.length;
52941 while (i < length_2) {
52942 // Find group of type arguments for type parameters with the same declaring container.

Callers 1

typeToTypeNodeHelperFunction · 0.85

Calls 13

getTypeArgumentsFunction · 0.85
typeToTypeNodeHelperFunction · 0.85
removeMissingTypeFunction · 0.85
getTypeReferenceArityFunction · 0.85
mapToTypeNodesFunction · 0.85
getTupleElementLabelFunction · 0.85
isValueSymbolAccessibleFunction · 0.85
createAnonymousTypeNodeFunction · 0.85
symbolToTypeNodeFunction · 0.85
appendReferenceToTypeFunction · 0.85
sliceMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…