(node, checkMode)
| 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 ? |
no test coverage detected