typescript 4.7.0-dev.20220223 → 4.7.0-dev.20220226

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -294,7 +294,7 @@ var ts;
294
294
  // The following is baselined as a literal template type without intervention
295
295
  /** The version of the TypeScript compiler release */
296
296
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
297
- ts.version = ts.versionMajorMinor + ".0-dev.20220223";
297
+ ts.version = ts.versionMajorMinor + ".0-dev.20220226";
298
298
  /* @internal */
299
299
  var Comparison;
300
300
  (function (Comparison) {
@@ -27384,6 +27384,19 @@ var ts;
27384
27384
  return node;
27385
27385
  }
27386
27386
  ts.ignoreSourceNewlines = ignoreSourceNewlines;
27387
+ /* @internal */
27388
+ function setTypeNode(node, type) {
27389
+ var emitNode = getOrCreateEmitNode(node);
27390
+ emitNode.typeNode = type;
27391
+ return node;
27392
+ }
27393
+ ts.setTypeNode = setTypeNode;
27394
+ /* @internal */
27395
+ function getTypeNode(node) {
27396
+ var _a;
27397
+ return (_a = node.emitNode) === null || _a === void 0 ? void 0 : _a.typeNode;
27398
+ }
27399
+ ts.getTypeNode = getTypeNode;
27387
27400
  })(ts || (ts = {}));
27388
27401
  /* @internal */
27389
27402
  var ts;
@@ -33654,10 +33667,10 @@ var ts;
33654
33667
  setDecoratorContext(/*val*/ false);
33655
33668
  }
33656
33669
  var pos = getNodePos();
33657
- var expr = parseAssignmentExpressionOrHigher();
33670
+ var expr = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
33658
33671
  var operatorToken;
33659
33672
  while ((operatorToken = parseOptionalToken(27 /* CommaToken */))) {
33660
- expr = makeBinaryExpression(expr, operatorToken, parseAssignmentExpressionOrHigher(), pos);
33673
+ expr = makeBinaryExpression(expr, operatorToken, parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false), pos);
33661
33674
  }
33662
33675
  if (saveDecoratorContext) {
33663
33676
  setDecoratorContext(/*val*/ true);
@@ -33665,9 +33678,9 @@ var ts;
33665
33678
  return expr;
33666
33679
  }
33667
33680
  function parseInitializer() {
33668
- return parseOptional(63 /* EqualsToken */) ? parseAssignmentExpressionOrHigher() : undefined;
33681
+ return parseOptional(63 /* EqualsToken */) ? parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false) : undefined;
33669
33682
  }
33670
- function parseAssignmentExpressionOrHigher() {
33683
+ function parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction) {
33671
33684
  // AssignmentExpression[in,yield]:
33672
33685
  // 1) ConditionalExpression[?in,?yield]
33673
33686
  // 2) LeftHandSideExpression = AssignmentExpression[?in,?yield]
@@ -33693,7 +33706,7 @@ var ts;
33693
33706
  // If we do successfully parse arrow-function, we must *not* recurse for productions 1, 2 or 3. An ArrowFunction is
33694
33707
  // not a LeftHandSideExpression, nor does it start a ConditionalExpression. So we are done
33695
33708
  // with AssignmentExpression if we see one.
33696
- var arrowExpression = tryParseParenthesizedArrowFunctionExpression() || tryParseAsyncSimpleArrowFunctionExpression();
33709
+ var arrowExpression = tryParseParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction) || tryParseAsyncSimpleArrowFunctionExpression(disallowReturnTypeInArrowFunction);
33697
33710
  if (arrowExpression) {
33698
33711
  return arrowExpression;
33699
33712
  }
@@ -33712,7 +33725,7 @@ var ts;
33712
33725
  // parameter ('x => ...') above. We handle it here by checking if the parsed expression was a single
33713
33726
  // identifier and the current token is an arrow.
33714
33727
  if (expr.kind === 79 /* Identifier */ && token() === 38 /* EqualsGreaterThanToken */) {
33715
- return parseSimpleArrowFunctionExpression(pos, expr, /*asyncModifier*/ undefined);
33728
+ return parseSimpleArrowFunctionExpression(pos, expr, disallowReturnTypeInArrowFunction, /*asyncModifier*/ undefined);
33716
33729
  }
33717
33730
  // Now see if we might be in cases '2' or '3'.
33718
33731
  // If the expression was a LHS expression, and we have an assignment operator, then
@@ -33721,7 +33734,7 @@ var ts;
33721
33734
  // Note: we call reScanGreaterToken so that we get an appropriately merged token
33722
33735
  // for cases like `> > =` becoming `>>=`
33723
33736
  if (ts.isLeftHandSideExpression(expr) && ts.isAssignmentOperator(reScanGreaterToken())) {
33724
- return makeBinaryExpression(expr, parseTokenNode(), parseAssignmentExpressionOrHigher(), pos);
33737
+ return makeBinaryExpression(expr, parseTokenNode(), parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction), pos);
33725
33738
  }
33726
33739
  // It wasn't an assignment or a lambda. This is a conditional expression:
33727
33740
  return parseConditionalExpressionRest(expr, pos);
@@ -33764,7 +33777,7 @@ var ts;
33764
33777
  nextToken();
33765
33778
  if (!scanner.hasPrecedingLineBreak() &&
33766
33779
  (token() === 41 /* AsteriskToken */ || isStartOfExpression())) {
33767
- return finishNode(factory.createYieldExpression(parseOptionalToken(41 /* AsteriskToken */), parseAssignmentExpressionOrHigher()), pos);
33780
+ return finishNode(factory.createYieldExpression(parseOptionalToken(41 /* AsteriskToken */), parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false)), pos);
33768
33781
  }
33769
33782
  else {
33770
33783
  // if the next token is not on the same line as yield. or we don't have an '*' or
@@ -33772,7 +33785,7 @@ var ts;
33772
33785
  return finishNode(factory.createYieldExpression(/*asteriskToken*/ undefined, /*expression*/ undefined), pos);
33773
33786
  }
33774
33787
  }
33775
- function parseSimpleArrowFunctionExpression(pos, identifier, asyncModifier) {
33788
+ function parseSimpleArrowFunctionExpression(pos, identifier, disallowReturnTypeInArrowFunction, asyncModifier) {
33776
33789
  ts.Debug.assert(token() === 38 /* EqualsGreaterThanToken */, "parseSimpleArrowFunctionExpression should only have been called if we had a =>");
33777
33790
  var parameter = factory.createParameterDeclaration(
33778
33791
  /*decorators*/ undefined,
@@ -33784,11 +33797,11 @@ var ts;
33784
33797
  finishNode(parameter, identifier.pos);
33785
33798
  var parameters = createNodeArray([parameter], parameter.pos, parameter.end);
33786
33799
  var equalsGreaterThanToken = parseExpectedToken(38 /* EqualsGreaterThanToken */);
33787
- var body = parseArrowFunctionExpressionBody(/*isAsync*/ !!asyncModifier);
33800
+ var body = parseArrowFunctionExpressionBody(/*isAsync*/ !!asyncModifier, disallowReturnTypeInArrowFunction);
33788
33801
  var node = factory.createArrowFunction(asyncModifier, /*typeParameters*/ undefined, parameters, /*type*/ undefined, equalsGreaterThanToken, body);
33789
33802
  return addJSDocComment(finishNode(node, pos));
33790
33803
  }
33791
- function tryParseParenthesizedArrowFunctionExpression() {
33804
+ function tryParseParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction) {
33792
33805
  var triState = isParenthesizedArrowFunctionExpression();
33793
33806
  if (triState === 0 /* False */) {
33794
33807
  // It's definitely not a parenthesized arrow function expression.
@@ -33799,8 +33812,8 @@ var ts;
33799
33812
  // it out, but don't allow any ambiguity, and return 'undefined' if this could be an
33800
33813
  // expression instead.
33801
33814
  return triState === 1 /* True */ ?
33802
- parseParenthesizedArrowFunctionExpression(/*allowAmbiguity*/ true) :
33803
- tryParse(parsePossibleParenthesizedArrowFunctionExpression);
33815
+ parseParenthesizedArrowFunctionExpression(/*allowAmbiguity*/ true, /*disallowReturnTypeInArrowFunction*/ false) :
33816
+ tryParse(function () { return parsePossibleParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction); });
33804
33817
  }
33805
33818
  // True -> We definitely expect a parenthesized arrow function here.
33806
33819
  // False -> There *cannot* be a parenthesized arrow function here.
@@ -33930,25 +33943,25 @@ var ts;
33930
33943
  return 2 /* Unknown */;
33931
33944
  }
33932
33945
  }
33933
- function parsePossibleParenthesizedArrowFunctionExpression() {
33946
+ function parsePossibleParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction) {
33934
33947
  var tokenPos = scanner.getTokenPos();
33935
33948
  if (notParenthesizedArrow === null || notParenthesizedArrow === void 0 ? void 0 : notParenthesizedArrow.has(tokenPos)) {
33936
33949
  return undefined;
33937
33950
  }
33938
- var result = parseParenthesizedArrowFunctionExpression(/*allowAmbiguity*/ false);
33951
+ var result = parseParenthesizedArrowFunctionExpression(/*allowAmbiguity*/ false, disallowReturnTypeInArrowFunction);
33939
33952
  if (!result) {
33940
33953
  (notParenthesizedArrow || (notParenthesizedArrow = new ts.Set())).add(tokenPos);
33941
33954
  }
33942
33955
  return result;
33943
33956
  }
33944
- function tryParseAsyncSimpleArrowFunctionExpression() {
33957
+ function tryParseAsyncSimpleArrowFunctionExpression(disallowReturnTypeInArrowFunction) {
33945
33958
  // We do a check here so that we won't be doing unnecessarily call to "lookAhead"
33946
33959
  if (token() === 131 /* AsyncKeyword */) {
33947
33960
  if (lookAhead(isUnParenthesizedAsyncArrowFunctionWorker) === 1 /* True */) {
33948
33961
  var pos = getNodePos();
33949
33962
  var asyncModifier = parseModifiersForArrowFunction();
33950
33963
  var expr = parseBinaryExpressionOrHigher(0 /* Lowest */);
33951
- return parseSimpleArrowFunctionExpression(pos, expr, asyncModifier);
33964
+ return parseSimpleArrowFunctionExpression(pos, expr, disallowReturnTypeInArrowFunction, asyncModifier);
33952
33965
  }
33953
33966
  }
33954
33967
  return undefined;
@@ -33972,7 +33985,7 @@ var ts;
33972
33985
  }
33973
33986
  return 0 /* False */;
33974
33987
  }
33975
- function parseParenthesizedArrowFunctionExpression(allowAmbiguity) {
33988
+ function parseParenthesizedArrowFunctionExpression(allowAmbiguity, disallowReturnTypeInArrowFunction) {
33976
33989
  var pos = getNodePos();
33977
33990
  var hasJSDoc = hasPrecedingJSDocComment();
33978
33991
  var modifiers = parseModifiersForArrowFunction();
@@ -33998,6 +34011,23 @@ var ts;
33998
34011
  return undefined;
33999
34012
  }
34000
34013
  }
34014
+ // Given:
34015
+ // x ? y => ({ y }) : z => ({ z })
34016
+ // We try to parse the body of the first arrow function by looking at:
34017
+ // ({ y }) : z => ({ z })
34018
+ // This is a valid arrow function with "z" as the return type.
34019
+ //
34020
+ // But, if we're in the true side of a conditional expression, this colon
34021
+ // terminates the expression, so we cannot allow a return type if we aren't
34022
+ // certain whether or not the preceding text was parsed as a parameter list.
34023
+ //
34024
+ // For example,
34025
+ // a() ? (b: number, c?: string): void => d() : e
34026
+ // is determined by isParenthesizedArrowFunctionExpression to unambiguously
34027
+ // be an arrow expression, so we allow a return type.
34028
+ if (disallowReturnTypeInArrowFunction && token() === 58 /* ColonToken */) {
34029
+ return undefined;
34030
+ }
34001
34031
  var type = parseReturnType(58 /* ColonToken */, /*isType*/ false);
34002
34032
  if (type && !allowAmbiguity && typeHasArrowFunctionBlockingParseError(type)) {
34003
34033
  return undefined;
@@ -34026,12 +34056,12 @@ var ts;
34026
34056
  var lastToken = token();
34027
34057
  var equalsGreaterThanToken = parseExpectedToken(38 /* EqualsGreaterThanToken */);
34028
34058
  var body = (lastToken === 38 /* EqualsGreaterThanToken */ || lastToken === 18 /* OpenBraceToken */)
34029
- ? parseArrowFunctionExpressionBody(ts.some(modifiers, ts.isAsyncModifier))
34059
+ ? parseArrowFunctionExpressionBody(ts.some(modifiers, ts.isAsyncModifier), disallowReturnTypeInArrowFunction)
34030
34060
  : parseIdentifier();
34031
34061
  var node = factory.createArrowFunction(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body);
34032
34062
  return withJSDoc(finishNode(node, pos), hasJSDoc);
34033
34063
  }
34034
- function parseArrowFunctionExpressionBody(isAsync) {
34064
+ function parseArrowFunctionExpressionBody(isAsync, disallowReturnTypeInArrowFunction) {
34035
34065
  if (token() === 18 /* OpenBraceToken */) {
34036
34066
  return parseFunctionBlock(isAsync ? 2 /* Await */ : 0 /* None */);
34037
34067
  }
@@ -34059,8 +34089,8 @@ var ts;
34059
34089
  var savedTopLevel = topLevel;
34060
34090
  topLevel = false;
34061
34091
  var node = isAsync
34062
- ? doInAwaitContext(parseAssignmentExpressionOrHigher)
34063
- : doOutsideOfAwaitContext(parseAssignmentExpressionOrHigher);
34092
+ ? doInAwaitContext(function () { return parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction); })
34093
+ : doOutsideOfAwaitContext(function () { return parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction); });
34064
34094
  topLevel = savedTopLevel;
34065
34095
  return node;
34066
34096
  }
@@ -34073,8 +34103,8 @@ var ts;
34073
34103
  // Note: we explicitly 'allowIn' in the whenTrue part of the condition expression, and
34074
34104
  // we do not that for the 'whenFalse' part.
34075
34105
  var colonToken;
34076
- return finishNode(factory.createConditionalExpression(leftOperand, questionToken, doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher), colonToken = parseExpectedToken(58 /* ColonToken */), ts.nodeIsPresent(colonToken)
34077
- ? parseAssignmentExpressionOrHigher()
34106
+ return finishNode(factory.createConditionalExpression(leftOperand, questionToken, doOutsideOfContext(disallowInAndDecoratorContext, function () { return parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ true); }), colonToken = parseExpectedToken(58 /* ColonToken */), ts.nodeIsPresent(colonToken)
34107
+ ? parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ true)
34078
34108
  : createMissingNode(79 /* Identifier */, /*reportAtCurrentPosition*/ false, ts.Diagnostics._0_expected, ts.tokenToString(58 /* ColonToken */))), pos);
34079
34109
  }
34080
34110
  function parseBinaryExpressionOrHigher(precedence) {
@@ -34990,13 +35020,13 @@ var ts;
34990
35020
  function parseSpreadElement() {
34991
35021
  var pos = getNodePos();
34992
35022
  parseExpected(25 /* DotDotDotToken */);
34993
- var expression = parseAssignmentExpressionOrHigher();
35023
+ var expression = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
34994
35024
  return finishNode(factory.createSpreadElement(expression), pos);
34995
35025
  }
34996
35026
  function parseArgumentOrArrayLiteralElement() {
34997
35027
  return token() === 25 /* DotDotDotToken */ ? parseSpreadElement() :
34998
35028
  token() === 27 /* CommaToken */ ? finishNode(factory.createOmittedExpression(), getNodePos()) :
34999
- parseAssignmentExpressionOrHigher();
35029
+ parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
35000
35030
  }
35001
35031
  function parseArgumentExpression() {
35002
35032
  return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement);
@@ -35013,7 +35043,7 @@ var ts;
35013
35043
  var pos = getNodePos();
35014
35044
  var hasJSDoc = hasPrecedingJSDocComment();
35015
35045
  if (parseOptionalToken(25 /* DotDotDotToken */)) {
35016
- var expression = parseAssignmentExpressionOrHigher();
35046
+ var expression = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
35017
35047
  return withJSDoc(finishNode(factory.createSpreadAssignment(expression), pos), hasJSDoc);
35018
35048
  }
35019
35049
  var decorators = parseDecorators();
@@ -35042,7 +35072,7 @@ var ts;
35042
35072
  var isShorthandPropertyAssignment = tokenIsIdentifier && (token() !== 58 /* ColonToken */);
35043
35073
  if (isShorthandPropertyAssignment) {
35044
35074
  var equalsToken = parseOptionalToken(63 /* EqualsToken */);
35045
- var objectAssignmentInitializer = equalsToken ? allowInAnd(parseAssignmentExpressionOrHigher) : undefined;
35075
+ var objectAssignmentInitializer = equalsToken ? allowInAnd(function () { return parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false); }) : undefined;
35046
35076
  node = factory.createShorthandPropertyAssignment(name, objectAssignmentInitializer);
35047
35077
  // Save equals token for error reporting.
35048
35078
  // TODO(rbuckton): Consider manufacturing this when we need to report an error as it is otherwise not useful.
@@ -35050,7 +35080,7 @@ var ts;
35050
35080
  }
35051
35081
  else {
35052
35082
  parseExpected(58 /* ColonToken */);
35053
- var initializer = allowInAnd(parseAssignmentExpressionOrHigher);
35083
+ var initializer = allowInAnd(function () { return parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false); });
35054
35084
  node = factory.createPropertyAssignment(name, initializer);
35055
35085
  }
35056
35086
  // Decorators, Modifiers, questionToken, and exclamationToken are not supported by property assignments and are reported in the grammar checker
@@ -35230,7 +35260,7 @@ var ts;
35230
35260
  }
35231
35261
  var node;
35232
35262
  if (awaitToken ? parseExpected(159 /* OfKeyword */) : parseOptional(159 /* OfKeyword */)) {
35233
- var expression = allowInAnd(parseAssignmentExpressionOrHigher);
35263
+ var expression = allowInAnd(function () { return parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false); });
35234
35264
  parseExpected(21 /* CloseParenToken */);
35235
35265
  node = factory.createForOfStatement(awaitToken, initializer, expression, parseStatement());
35236
35266
  }
@@ -36397,7 +36427,7 @@ var ts;
36397
36427
  var pos = getNodePos();
36398
36428
  var name = ts.tokenIsIdentifierOrKeyword(token()) ? parseIdentifierName() : parseLiteralLikeNode(10 /* StringLiteral */);
36399
36429
  parseExpected(58 /* ColonToken */);
36400
- var value = parseAssignmentExpressionOrHigher();
36430
+ var value = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
36401
36431
  return finishNode(factory.createAssertEntry(name, value), pos);
36402
36432
  }
36403
36433
  function parseAssertClause() {
@@ -36634,7 +36664,7 @@ var ts;
36634
36664
  else {
36635
36665
  parseExpected(88 /* DefaultKeyword */);
36636
36666
  }
36637
- var expression = parseAssignmentExpressionOrHigher();
36667
+ var expression = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
36638
36668
  parseSemicolon();
36639
36669
  setAwaitContext(savedAwaitContext);
36640
36670
  var node = factory.createExportAssignment(decorators, modifiers, isExportEquals, expression);
@@ -91814,9 +91844,13 @@ var ts;
91814
91844
  }
91815
91845
  }
91816
91846
  function visitVariableDeclaration(node) {
91817
- return factory.updateVariableDeclaration(node, ts.visitNode(node.name, visitor, ts.isBindingName),
91847
+ var updated = factory.updateVariableDeclaration(node, ts.visitNode(node.name, visitor, ts.isBindingName),
91818
91848
  /*exclamationToken*/ undefined,
91819
91849
  /*type*/ undefined, ts.visitNode(node.initializer, visitor, ts.isExpression));
91850
+ if (node.type) {
91851
+ ts.setTypeNode(updated.name, node.type);
91852
+ }
91853
+ return updated;
91820
91854
  }
91821
91855
  function visitParenthesizedExpression(node) {
91822
91856
  var innerExpression = ts.skipOuterExpressions(node.expression, ~6 /* Assertions */);
@@ -111148,10 +111182,11 @@ var ts;
111148
111182
  // Declarations
111149
111183
  //
111150
111184
  function emitVariableDeclaration(node) {
111185
+ var _a, _b, _c, _d, _e;
111151
111186
  emit(node.name);
111152
111187
  emit(node.exclamationToken);
111153
111188
  emitTypeAnnotation(node.type);
111154
- emitInitializer(node.initializer, node.type ? node.type.end : node.name.end, node, parenthesizer.parenthesizeExpressionForDisallowedComma);
111189
+ emitInitializer(node.initializer, (_e = (_b = (_a = node.type) === null || _a === void 0 ? void 0 : _a.end) !== null && _b !== void 0 ? _b : (_d = (_c = node.name.emitNode) === null || _c === void 0 ? void 0 : _c.typeNode) === null || _d === void 0 ? void 0 : _d.end) !== null && _e !== void 0 ? _e : node.name.end, node, parenthesizer.parenthesizeExpressionForDisallowedComma);
111155
111190
  }
111156
111191
  function emitVariableDeclarationList(node) {
111157
111192
  writeKeyword(ts.isLet(node) ? "let" : ts.isVarConst(node) ? "const" : "var");
@@ -113133,6 +113168,10 @@ var ts;
113133
113168
  commentsDisabled = false;
113134
113169
  }
113135
113170
  emitTrailingCommentsOfNode(node, emitFlags, commentRange.pos, commentRange.end, savedContainerPos, savedContainerEnd, savedDeclarationListContainerEnd);
113171
+ var typeNode = ts.getTypeNode(node);
113172
+ if (typeNode) {
113173
+ emitTrailingCommentsOfNode(node, emitFlags, typeNode.pos, typeNode.end, savedContainerPos, savedContainerEnd, savedDeclarationListContainerEnd);
113174
+ }
113136
113175
  }
113137
113176
  function emitLeadingCommentsOfNode(node, emitFlags, pos, end) {
113138
113177
  enterComment();
@@ -135499,6 +135538,9 @@ var ts;
135499
135538
  // *don’t* include readonly member modifiers.
135500
135539
  return getAllReferencesForKeyword(sourceFiles, node.kind, cancellationToken, node.kind === 144 /* ReadonlyKeyword */ ? isReadonlyTypeOperator : undefined);
135501
135540
  }
135541
+ if (ts.isImportMeta(node.parent) && node.parent.name === node) {
135542
+ return getAllReferencesForImportMeta(sourceFiles, cancellationToken);
135543
+ }
135502
135544
  if (ts.isStaticModifier(node) && ts.isClassStaticBlockDeclaration(node.parent)) {
135503
135545
  return [{ definition: { type: 2 /* Keyword */, node: node }, references: [nodeEntry(node)] }];
135504
135546
  }
@@ -135980,6 +136022,18 @@ var ts;
135980
136022
  return false;
135981
136023
  }
135982
136024
  }
136025
+ function getAllReferencesForImportMeta(sourceFiles, cancellationToken) {
136026
+ var references = ts.flatMap(sourceFiles, function (sourceFile) {
136027
+ cancellationToken.throwIfCancellationRequested();
136028
+ return ts.mapDefined(getPossibleSymbolReferenceNodes(sourceFile, "meta", sourceFile), function (node) {
136029
+ var parent = node.parent;
136030
+ if (ts.isImportMeta(parent)) {
136031
+ return nodeEntry(parent);
136032
+ }
136033
+ });
136034
+ });
136035
+ return references.length ? [{ definition: { type: 2 /* Keyword */, node: references[0].node }, references: references }] : undefined;
136036
+ }
135983
136037
  function getAllReferencesForKeyword(sourceFiles, keywordKind, cancellationToken, filter) {
135984
136038
  var references = ts.flatMap(sourceFiles, function (sourceFile) {
135985
136039
  cancellationToken.throwIfCancellationRequested();
@@ -137692,6 +137746,9 @@ var ts;
137692
137746
  if (node === sourceFile) {
137693
137747
  return undefined;
137694
137748
  }
137749
+ if (ts.isImportMeta(node.parent) && node.parent.name === node) {
137750
+ return definitionFromType(typeChecker.getTypeAtLocation(node.parent), typeChecker, node.parent);
137751
+ }
137695
137752
  var symbol = getSymbol(node, typeChecker);
137696
137753
  if (!symbol)
137697
137754
  return undefined;
@@ -162820,6 +162877,9 @@ var ts;
162820
162877
  if (ts.isNamedTupleMember(node.parent) && node.pos === node.parent.pos) {
162821
162878
  return node.parent;
162822
162879
  }
162880
+ if (ts.isImportMeta(node.parent) && node.parent.name === node) {
162881
+ return node.parent;
162882
+ }
162823
162883
  return node;
162824
162884
  }
162825
162885
  function shouldGetType(sourceFile, node, position) {
@@ -162835,6 +162895,8 @@ var ts;
162835
162895
  case 106 /* SuperKeyword */:
162836
162896
  case 196 /* NamedTupleMember */:
162837
162897
  return true;
162898
+ case 230 /* MetaProperty */:
162899
+ return ts.isImportMeta(node);
162838
162900
  default:
162839
162901
  return false;
162840
162902
  }