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

Function checkObjectLiteral

test/fixtures/snapshot/typescript.js:73514–73726  ·  view source on GitHub ↗
(node, checkMode)

Source from the content-addressed store, hash-verified

73512 return links.immediateTarget;
73513 }
73514 function checkObjectLiteral(node, checkMode) {
73515 var inDestructuringPattern = ts.isAssignmentTarget(node);
73516 // Grammar checking
73517 checkGrammarObjectLiteralExpression(node, inDestructuringPattern);
73518 var allPropertiesTable = strictNullChecks ? ts.createSymbolTable() : undefined;
73519 var propertiesTable = ts.createSymbolTable();
73520 var propertiesArray = [];
73521 var spread = emptyObjectType;
73522 var contextualType = getApparentTypeOfContextualType(node);
73523 var contextualTypeHasPattern = contextualType && contextualType.pattern &&
73524 (contextualType.pattern.kind === 201 /* SyntaxKind.ObjectBindingPattern */ || contextualType.pattern.kind === 205 /* SyntaxKind.ObjectLiteralExpression */);
73525 var inConstContext = isConstContext(node);
73526 var checkFlags = inConstContext ? 8 /* CheckFlags.Readonly */ : 0;
73527 var isInJavascript = ts.isInJSFile(node) && !ts.isInJsonFile(node);
73528 var enumTag = ts.getJSDocEnumTag(node);
73529 var isJSObjectLiteral = !contextualType && isInJavascript && !enumTag;
73530 var objectFlags = freshObjectLiteralFlag;
73531 var patternWithComputedProperties = false;
73532 var hasComputedStringProperty = false;
73533 var hasComputedNumberProperty = false;
73534 var hasComputedSymbolProperty = false;
73535 // Spreads may cause an early bail; ensure computed names are always checked (this is cached)
73536 // As otherwise they may not be checked until exports for the type at this position are retrieved,
73537 // which may never occur.
73538 for (var _i = 0, _a = node.properties; _i < _a.length; _i++) {
73539 var elem = _a[_i];
73540 if (elem.name && ts.isComputedPropertyName(elem.name)) {
73541 checkComputedPropertyName(elem.name);
73542 }
73543 }
73544 var offset = 0;
73545 for (var _b = 0, _c = node.properties; _b < _c.length; _b++) {
73546 var memberDecl = _c[_b];
73547 var member = getSymbolOfNode(memberDecl);
73548 var computedNameType = memberDecl.name && memberDecl.name.kind === 162 /* SyntaxKind.ComputedPropertyName */ ?
73549 checkComputedPropertyName(memberDecl.name) : undefined;
73550 if (memberDecl.kind === 296 /* SyntaxKind.PropertyAssignment */ ||
73551 memberDecl.kind === 297 /* SyntaxKind.ShorthandPropertyAssignment */ ||
73552 ts.isObjectLiteralMethod(memberDecl)) {
73553 var type = memberDecl.kind === 296 /* SyntaxKind.PropertyAssignment */ ? checkPropertyAssignment(memberDecl, checkMode) :
73554 // avoid resolving the left side of the ShorthandPropertyAssignment outside of the destructuring
73555 // for error recovery purposes. For example, if a user wrote `{ a = 100 }` instead of `{ a: 100 }`.
73556 // we don't want to say "could not find 'a'".
73557 memberDecl.kind === 297 /* SyntaxKind.ShorthandPropertyAssignment */ ? checkExpressionForMutableLocation(!inDestructuringPattern && memberDecl.objectAssignmentInitializer ? memberDecl.objectAssignmentInitializer : memberDecl.name, checkMode) :
73558 checkObjectLiteralMethod(memberDecl, checkMode);
73559 if (isInJavascript) {
73560 var jsDocType = getTypeForDeclarationFromJSDocComment(memberDecl);
73561 if (jsDocType) {
73562 checkTypeAssignableTo(type, jsDocType, memberDecl);
73563 type = jsDocType;
73564 }
73565 else if (enumTag && enumTag.typeExpression) {
73566 checkTypeAssignableTo(type, getTypeFromTypeNode(enumTag.typeExpression), memberDecl);
73567 }
73568 }
73569 objectFlags |= ts.getObjectFlags(type) & 458752 /* ObjectFlags.PropagatingFlags */;
73570 var nameType = computedNameType && isTypeUsableAsPropertyName(computedNameType) ? computedNameType : undefined;
73571 var prop = nameType ?

Callers 1

checkExpressionWorkerFunction · 0.85

Tested by

no test coverage detected