MCPcopy Create free account
hub / github.com/Snapchat/Valdi / resolveTypeOfExpression

Function resolveTypeOfExpression

compiler/companion/src/TSUtils.ts:364–396  ·  view source on GitHub ↗
(expression: ts.Expression, typeChecker: ts.TypeChecker)

Source from the content-addressed store, hash-verified

362}
363
364export function resolveTypeOfExpression(expression: ts.Expression, typeChecker: ts.TypeChecker): ResolvedType {
365 let effectiveType: SymbolType | undefined;
366 let effectiveObjectInfo: SymbolObjectInfo | undefined;
367 let isNullable = false;
368
369 const resolvedSymbols = resolvedSymbolsOfExpression(expression, typeChecker);
370
371 for (const resolvedSymbol of resolvedSymbols) {
372 if (resolvedSymbol.type === SymbolType.any) {
373 effectiveType = SymbolType.any;
374 } else if (resolvedSymbol.type === SymbolType.undefined || resolvedSymbol.type === SymbolType.null) {
375 isNullable = true;
376 } else {
377 if (effectiveType === undefined) {
378 effectiveType = resolvedSymbol.type;
379 effectiveObjectInfo = resolvedSymbol.objectInfo;
380 } else {
381 effectiveType = SymbolType.any;
382 }
383 }
384 }
385
386 if (effectiveType === undefined) {
387 effectiveType = SymbolType.any;
388 }
389
390 if (effectiveType === SymbolType.any) {
391 isNullable = true;
392 effectiveObjectInfo = undefined;
393 }
394
395 return { effectiveType, isNullable, resolvedSymbols, effectiveObjectInfo };
396}
397
398export class Transpiler {
399 readonly diagnostics: ts.Diagnostic[] = [];

Callers 4

TSUtils.spec.tsFile · 0.90
getJsxNodeKindMethod · 0.90

Calls 1

Tested by

no test coverage detected