(type)
| 57171 | error(node, ts.Diagnostics.Type_0_recursively_references_itself_as_a_base_type, typeToString(type, /*enclosingDeclaration*/ undefined, 2 /* TypeFormatFlags.WriteArrayAsGenericType */)); |
| 57172 | } |
| 57173 | function getBaseTypes(type) { |
| 57174 | if (!type.baseTypesResolved) { |
| 57175 | if (pushTypeResolution(type, 7 /* TypeSystemPropertyName.ResolvedBaseTypes */)) { |
| 57176 | if (type.objectFlags & 8 /* ObjectFlags.Tuple */) { |
| 57177 | type.resolvedBaseTypes = [getTupleBaseType(type)]; |
| 57178 | } |
| 57179 | else if (type.symbol.flags & (32 /* SymbolFlags.Class */ | 64 /* SymbolFlags.Interface */)) { |
| 57180 | if (type.symbol.flags & 32 /* SymbolFlags.Class */) { |
| 57181 | resolveBaseTypesOfClass(type); |
| 57182 | } |
| 57183 | if (type.symbol.flags & 64 /* SymbolFlags.Interface */) { |
| 57184 | resolveBaseTypesOfInterface(type); |
| 57185 | } |
| 57186 | } |
| 57187 | else { |
| 57188 | ts.Debug.fail("type must be class or interface"); |
| 57189 | } |
| 57190 | if (!popTypeResolution() && type.symbol.declarations) { |
| 57191 | for (var _i = 0, _a = type.symbol.declarations; _i < _a.length; _i++) { |
| 57192 | var declaration = _a[_i]; |
| 57193 | if (declaration.kind === 257 /* SyntaxKind.ClassDeclaration */ || declaration.kind === 258 /* SyntaxKind.InterfaceDeclaration */) { |
| 57194 | reportCircularBaseType(declaration, type); |
| 57195 | } |
| 57196 | } |
| 57197 | } |
| 57198 | } |
| 57199 | type.baseTypesResolved = true; |
| 57200 | } |
| 57201 | return type.resolvedBaseTypes; |
| 57202 | } |
| 57203 | function getTupleBaseType(type) { |
| 57204 | var elementTypes = ts.sameMap(type.typeParameters, function (t, i) { return type.elementFlags[i] & 8 /* ElementFlags.Variadic */ ? getIndexedAccessType(t, numberType) : t; }); |
| 57205 | return createArrayType(getUnionType(elementTypes || ts.emptyArray), type.readonly); |
no test coverage detected
searching dependent graphs…