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

Function createTupleTargetType

test/fixtures/snapshot/typescript.js:60933–60988  ·  view source on GitHub ↗
(elementFlags, readonly, namedMemberDeclarations)

Source from the content-addressed store, hash-verified

60931 // Note that the generic type created by this function has no symbol associated with it. The same
60932 // is true for each of the synthesized type parameters.
60933 function createTupleTargetType(elementFlags, readonly, namedMemberDeclarations) {
60934 var arity = elementFlags.length;
60935 var minLength = ts.countWhere(elementFlags, function (f) { return !!(f & (1 /* ElementFlags.Required */ | 8 /* ElementFlags.Variadic */)); });
60936 var typeParameters;
60937 var properties = [];
60938 var combinedFlags = 0;
60939 if (arity) {
60940 typeParameters = new Array(arity);
60941 for (var i = 0; i < arity; i++) {
60942 var typeParameter = typeParameters[i] = createTypeParameter();
60943 var flags = elementFlags[i];
60944 combinedFlags |= flags;
60945 if (!(combinedFlags & 12 /* ElementFlags.Variable */)) {
60946 var property = createSymbol(4 /* SymbolFlags.Property */ | (flags & 2 /* ElementFlags.Optional */ ? 16777216 /* SymbolFlags.Optional */ : 0), "" + i, readonly ? 8 /* CheckFlags.Readonly */ : 0);
60947 property.tupleLabelDeclaration = namedMemberDeclarations === null || namedMemberDeclarations === void 0 ? void 0 : namedMemberDeclarations[i];
60948 property.type = typeParameter;
60949 properties.push(property);
60950 }
60951 }
60952 }
60953 var fixedLength = properties.length;
60954 var lengthSymbol = createSymbol(4 /* SymbolFlags.Property */, "length", readonly ? 8 /* CheckFlags.Readonly */ : 0);
60955 if (combinedFlags & 12 /* ElementFlags.Variable */) {
60956 lengthSymbol.type = numberType;
60957 }
60958 else {
60959 var literalTypes = [];
60960 for (var i = minLength; i <= arity; i++)
60961 literalTypes.push(getNumberLiteralType(i));
60962 lengthSymbol.type = getUnionType(literalTypes);
60963 }
60964 properties.push(lengthSymbol);
60965 var type = createObjectType(8 /* ObjectFlags.Tuple */ | 4 /* ObjectFlags.Reference */);
60966 type.typeParameters = typeParameters;
60967 type.outerTypeParameters = undefined;
60968 type.localTypeParameters = typeParameters;
60969 type.instantiations = new ts.Map();
60970 type.instantiations.set(getTypeListId(type.typeParameters), type);
60971 type.target = type;
60972 type.resolvedTypeArguments = type.typeParameters;
60973 type.thisType = createTypeParameter();
60974 type.thisType.isThisType = true;
60975 type.thisType.constraint = type;
60976 type.declaredProperties = properties;
60977 type.declaredCallSignatures = ts.emptyArray;
60978 type.declaredConstructSignatures = ts.emptyArray;
60979 type.declaredIndexInfos = ts.emptyArray;
60980 type.elementFlags = elementFlags;
60981 type.minLength = minLength;
60982 type.fixedLength = fixedLength;
60983 type.hasRestElement = !!(combinedFlags & 12 /* ElementFlags.Variable */);
60984 type.combinedFlags = combinedFlags;
60985 type.readonly = readonly;
60986 type.labeledElementDeclarations = namedMemberDeclarations;
60987 return type;
60988 }
60989 function createNormalizedTypeReference(target, typeArguments) {
60990 return target.objectFlags & 8 /* ObjectFlags.Tuple */ ? createNormalizedTupleType(target, typeArguments) : createTypeReference(target, typeArguments);

Callers 1

getTupleTargetTypeFunction · 0.85

Calls 8

createTypeParameterFunction · 0.85
createSymbolFunction · 0.85
getNumberLiteralTypeFunction · 0.85
getUnionTypeFunction · 0.85
createObjectTypeFunction · 0.85
getTypeListIdFunction · 0.85
pushMethod · 0.45
setMethod · 0.45

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…