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

Function tryGetValueFromType

test/fixtures/snapshot/typescript.js:155041–155111  ·  view source on GitHub ↗
(context, checker, importAdder, quotePreference, type)

Source from the content-addressed store, hash-verified

155039 changes.replaceNode(context.sourceFile, info.parentDeclaration, ts.factory.createObjectLiteralExpression(__spreadArray(__spreadArray([], info.parentDeclaration.properties, true), props, true), /*multiLine*/ true), options);
155040 }
155041 function tryGetValueFromType(context, checker, importAdder, quotePreference, type) {
155042 if (type.flags & 3 /* TypeFlags.AnyOrUnknown */) {
155043 return createUndefined();
155044 }
155045 if (type.flags & (4 /* TypeFlags.String */ | 134217728 /* TypeFlags.TemplateLiteral */)) {
155046 return ts.factory.createStringLiteral("", /* isSingleQuote */ quotePreference === 0 /* QuotePreference.Single */);
155047 }
155048 if (type.flags & 8 /* TypeFlags.Number */) {
155049 return ts.factory.createNumericLiteral(0);
155050 }
155051 if (type.flags & 64 /* TypeFlags.BigInt */) {
155052 return ts.factory.createBigIntLiteral("0n");
155053 }
155054 if (type.flags & 16 /* TypeFlags.Boolean */) {
155055 return ts.factory.createFalse();
155056 }
155057 if (type.flags & 1056 /* TypeFlags.EnumLike */) {
155058 var enumMember = type.symbol.exports ? ts.firstOrUndefined(ts.arrayFrom(type.symbol.exports.values())) : type.symbol;
155059 var name = checker.symbolToExpression(type.symbol.parent ? type.symbol.parent : type.symbol, 111551 /* SymbolFlags.Value */, /*enclosingDeclaration*/ undefined, /*flags*/ undefined);
155060 return enumMember === undefined || name === undefined ? ts.factory.createNumericLiteral(0) : ts.factory.createPropertyAccessExpression(name, checker.symbolToString(enumMember));
155061 }
155062 if (type.flags & 256 /* TypeFlags.NumberLiteral */) {
155063 return ts.factory.createNumericLiteral(type.value);
155064 }
155065 if (type.flags & 2048 /* TypeFlags.BigIntLiteral */) {
155066 return ts.factory.createBigIntLiteral(type.value);
155067 }
155068 if (type.flags & 128 /* TypeFlags.StringLiteral */) {
155069 return ts.factory.createStringLiteral(type.value, /* isSingleQuote */ quotePreference === 0 /* QuotePreference.Single */);
155070 }
155071 if (type.flags & 512 /* TypeFlags.BooleanLiteral */) {
155072 return (type === checker.getFalseType() || type === checker.getFalseType(/*fresh*/ true)) ? ts.factory.createFalse() : ts.factory.createTrue();
155073 }
155074 if (type.flags & 65536 /* TypeFlags.Null */) {
155075 return ts.factory.createNull();
155076 }
155077 if (type.flags & 1048576 /* TypeFlags.Union */) {
155078 var expression = ts.firstDefined(type.types, function (t) { return tryGetValueFromType(context, checker, importAdder, quotePreference, t); });
155079 return expression !== null && expression !== void 0 ? expression : createUndefined();
155080 }
155081 if (checker.isArrayLikeType(type)) {
155082 return ts.factory.createArrayLiteralExpression();
155083 }
155084 if (isObjectLiteralType(type)) {
155085 var props = ts.map(checker.getPropertiesOfType(type), function (prop) {
155086 var initializer = prop.valueDeclaration ? tryGetValueFromType(context, checker, importAdder, quotePreference, checker.getTypeAtLocation(prop.valueDeclaration)) : createUndefined();
155087 return ts.factory.createPropertyAssignment(prop.name, initializer);
155088 });
155089 return ts.factory.createObjectLiteralExpression(props, /*multiLine*/ true);
155090 }
155091 if (ts.getObjectFlags(type) & 16 /* ObjectFlags.Anonymous */) {
155092 var decl = ts.find(type.symbol.declarations || ts.emptyArray, ts.or(ts.isFunctionTypeNode, ts.isMethodSignature, ts.isMethodDeclaration));
155093 if (decl === undefined)
155094 return createUndefined();
155095 var signature = checker.getSignaturesOfType(type, 0 /* SignatureKind.Call */);
155096 if (signature === undefined)
155097 return createUndefined();
155098 var func = codefix.createSignatureDeclarationFromSignature(213 /* SyntaxKind.FunctionExpression */, context, quotePreference, signature[0], codefix.createStubbedBody(ts.Diagnostics.Function_not_implemented.message, quotePreference), /*name*/ undefined, /*modifiers*/ undefined, /*optional*/ undefined, /*enclosingDeclaration*/ undefined, importAdder);

Callers 2

addJsxAttributesFunction · 0.85

Calls 6

createUndefinedFunction · 0.85
isObjectLiteralTypeFunction · 0.85
mapMethod · 0.65
findMethod · 0.65
valuesMethod · 0.45
lengthMethod · 0.45

Tested by

no test coverage detected