typescript 4.7.0-dev.20220225 → 4.7.0-dev.20220228

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.
package/lib/tsc.js CHANGED
@@ -69,7 +69,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
69
69
  var ts;
70
70
  (function (ts) {
71
71
  ts.versionMajorMinor = "4.7";
72
- ts.version = ts.versionMajorMinor + ".0-dev.20220225";
72
+ ts.version = ts.versionMajorMinor + ".0-dev.20220228";
73
73
  var NativeCollections;
74
74
  (function (NativeCollections) {
75
75
  var globals = typeof globalThis !== "undefined" ? globalThis :
@@ -27016,10 +27016,10 @@ var ts;
27016
27016
  setDecoratorContext(false);
27017
27017
  }
27018
27018
  var pos = getNodePos();
27019
- var expr = parseAssignmentExpressionOrHigher();
27019
+ var expr = parseAssignmentExpressionOrHigher(false);
27020
27020
  var operatorToken;
27021
27021
  while ((operatorToken = parseOptionalToken(27))) {
27022
- expr = makeBinaryExpression(expr, operatorToken, parseAssignmentExpressionOrHigher(), pos);
27022
+ expr = makeBinaryExpression(expr, operatorToken, parseAssignmentExpressionOrHigher(false), pos);
27023
27023
  }
27024
27024
  if (saveDecoratorContext) {
27025
27025
  setDecoratorContext(true);
@@ -27027,23 +27027,23 @@ var ts;
27027
27027
  return expr;
27028
27028
  }
27029
27029
  function parseInitializer() {
27030
- return parseOptional(63) ? parseAssignmentExpressionOrHigher() : undefined;
27030
+ return parseOptional(63) ? parseAssignmentExpressionOrHigher(false) : undefined;
27031
27031
  }
27032
- function parseAssignmentExpressionOrHigher() {
27032
+ function parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction) {
27033
27033
  if (isYieldExpression()) {
27034
27034
  return parseYieldExpression();
27035
27035
  }
27036
- var arrowExpression = tryParseParenthesizedArrowFunctionExpression() || tryParseAsyncSimpleArrowFunctionExpression();
27036
+ var arrowExpression = tryParseParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction) || tryParseAsyncSimpleArrowFunctionExpression(disallowReturnTypeInArrowFunction);
27037
27037
  if (arrowExpression) {
27038
27038
  return arrowExpression;
27039
27039
  }
27040
27040
  var pos = getNodePos();
27041
27041
  var expr = parseBinaryExpressionOrHigher(0);
27042
27042
  if (expr.kind === 79 && token() === 38) {
27043
- return parseSimpleArrowFunctionExpression(pos, expr, undefined);
27043
+ return parseSimpleArrowFunctionExpression(pos, expr, disallowReturnTypeInArrowFunction, undefined);
27044
27044
  }
27045
27045
  if (ts.isLeftHandSideExpression(expr) && ts.isAssignmentOperator(reScanGreaterToken())) {
27046
- return makeBinaryExpression(expr, parseTokenNode(), parseAssignmentExpressionOrHigher(), pos);
27046
+ return makeBinaryExpression(expr, parseTokenNode(), parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction), pos);
27047
27047
  }
27048
27048
  return parseConditionalExpressionRest(expr, pos);
27049
27049
  }
@@ -27065,30 +27065,30 @@ var ts;
27065
27065
  nextToken();
27066
27066
  if (!scanner.hasPrecedingLineBreak() &&
27067
27067
  (token() === 41 || isStartOfExpression())) {
27068
- return finishNode(factory.createYieldExpression(parseOptionalToken(41), parseAssignmentExpressionOrHigher()), pos);
27068
+ return finishNode(factory.createYieldExpression(parseOptionalToken(41), parseAssignmentExpressionOrHigher(false)), pos);
27069
27069
  }
27070
27070
  else {
27071
27071
  return finishNode(factory.createYieldExpression(undefined, undefined), pos);
27072
27072
  }
27073
27073
  }
27074
- function parseSimpleArrowFunctionExpression(pos, identifier, asyncModifier) {
27074
+ function parseSimpleArrowFunctionExpression(pos, identifier, disallowReturnTypeInArrowFunction, asyncModifier) {
27075
27075
  ts.Debug.assert(token() === 38, "parseSimpleArrowFunctionExpression should only have been called if we had a =>");
27076
27076
  var parameter = factory.createParameterDeclaration(undefined, undefined, undefined, identifier, undefined, undefined, undefined);
27077
27077
  finishNode(parameter, identifier.pos);
27078
27078
  var parameters = createNodeArray([parameter], parameter.pos, parameter.end);
27079
27079
  var equalsGreaterThanToken = parseExpectedToken(38);
27080
- var body = parseArrowFunctionExpressionBody(!!asyncModifier);
27080
+ var body = parseArrowFunctionExpressionBody(!!asyncModifier, disallowReturnTypeInArrowFunction);
27081
27081
  var node = factory.createArrowFunction(asyncModifier, undefined, parameters, undefined, equalsGreaterThanToken, body);
27082
27082
  return addJSDocComment(finishNode(node, pos));
27083
27083
  }
27084
- function tryParseParenthesizedArrowFunctionExpression() {
27084
+ function tryParseParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction) {
27085
27085
  var triState = isParenthesizedArrowFunctionExpression();
27086
27086
  if (triState === 0) {
27087
27087
  return undefined;
27088
27088
  }
27089
27089
  return triState === 1 ?
27090
- parseParenthesizedArrowFunctionExpression(true) :
27091
- tryParse(parsePossibleParenthesizedArrowFunctionExpression);
27090
+ parseParenthesizedArrowFunctionExpression(true, false) :
27091
+ tryParse(function () { return parsePossibleParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction); });
27092
27092
  }
27093
27093
  function isParenthesizedArrowFunctionExpression() {
27094
27094
  if (token() === 20 || token() === 29 || token() === 131) {
@@ -27182,24 +27182,24 @@ var ts;
27182
27182
  return 2;
27183
27183
  }
27184
27184
  }
27185
- function parsePossibleParenthesizedArrowFunctionExpression() {
27185
+ function parsePossibleParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction) {
27186
27186
  var tokenPos = scanner.getTokenPos();
27187
27187
  if (notParenthesizedArrow === null || notParenthesizedArrow === void 0 ? void 0 : notParenthesizedArrow.has(tokenPos)) {
27188
27188
  return undefined;
27189
27189
  }
27190
- var result = parseParenthesizedArrowFunctionExpression(false);
27190
+ var result = parseParenthesizedArrowFunctionExpression(false, disallowReturnTypeInArrowFunction);
27191
27191
  if (!result) {
27192
27192
  (notParenthesizedArrow || (notParenthesizedArrow = new ts.Set())).add(tokenPos);
27193
27193
  }
27194
27194
  return result;
27195
27195
  }
27196
- function tryParseAsyncSimpleArrowFunctionExpression() {
27196
+ function tryParseAsyncSimpleArrowFunctionExpression(disallowReturnTypeInArrowFunction) {
27197
27197
  if (token() === 131) {
27198
27198
  if (lookAhead(isUnParenthesizedAsyncArrowFunctionWorker) === 1) {
27199
27199
  var pos = getNodePos();
27200
27200
  var asyncModifier = parseModifiersForArrowFunction();
27201
27201
  var expr = parseBinaryExpressionOrHigher(0);
27202
- return parseSimpleArrowFunctionExpression(pos, expr, asyncModifier);
27202
+ return parseSimpleArrowFunctionExpression(pos, expr, disallowReturnTypeInArrowFunction, asyncModifier);
27203
27203
  }
27204
27204
  }
27205
27205
  return undefined;
@@ -27217,7 +27217,7 @@ var ts;
27217
27217
  }
27218
27218
  return 0;
27219
27219
  }
27220
- function parseParenthesizedArrowFunctionExpression(allowAmbiguity) {
27220
+ function parseParenthesizedArrowFunctionExpression(allowAmbiguity, disallowReturnTypeInArrowFunction) {
27221
27221
  var pos = getNodePos();
27222
27222
  var hasJSDoc = hasPrecedingJSDocComment();
27223
27223
  var modifiers = parseModifiersForArrowFunction();
@@ -27236,6 +27236,9 @@ var ts;
27236
27236
  return undefined;
27237
27237
  }
27238
27238
  }
27239
+ if (disallowReturnTypeInArrowFunction && token() === 58) {
27240
+ return undefined;
27241
+ }
27239
27242
  var type = parseReturnType(58, false);
27240
27243
  if (type && !allowAmbiguity && typeHasArrowFunctionBlockingParseError(type)) {
27241
27244
  return undefined;
@@ -27251,12 +27254,12 @@ var ts;
27251
27254
  var lastToken = token();
27252
27255
  var equalsGreaterThanToken = parseExpectedToken(38);
27253
27256
  var body = (lastToken === 38 || lastToken === 18)
27254
- ? parseArrowFunctionExpressionBody(ts.some(modifiers, ts.isAsyncModifier))
27257
+ ? parseArrowFunctionExpressionBody(ts.some(modifiers, ts.isAsyncModifier), disallowReturnTypeInArrowFunction)
27255
27258
  : parseIdentifier();
27256
27259
  var node = factory.createArrowFunction(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body);
27257
27260
  return withJSDoc(finishNode(node, pos), hasJSDoc);
27258
27261
  }
27259
- function parseArrowFunctionExpressionBody(isAsync) {
27262
+ function parseArrowFunctionExpressionBody(isAsync, disallowReturnTypeInArrowFunction) {
27260
27263
  if (token() === 18) {
27261
27264
  return parseFunctionBlock(isAsync ? 2 : 0);
27262
27265
  }
@@ -27270,8 +27273,8 @@ var ts;
27270
27273
  var savedTopLevel = topLevel;
27271
27274
  topLevel = false;
27272
27275
  var node = isAsync
27273
- ? doInAwaitContext(parseAssignmentExpressionOrHigher)
27274
- : doOutsideOfAwaitContext(parseAssignmentExpressionOrHigher);
27276
+ ? doInAwaitContext(function () { return parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction); })
27277
+ : doOutsideOfAwaitContext(function () { return parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction); });
27275
27278
  topLevel = savedTopLevel;
27276
27279
  return node;
27277
27280
  }
@@ -27281,8 +27284,8 @@ var ts;
27281
27284
  return leftOperand;
27282
27285
  }
27283
27286
  var colonToken;
27284
- return finishNode(factory.createConditionalExpression(leftOperand, questionToken, doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher), colonToken = parseExpectedToken(58), ts.nodeIsPresent(colonToken)
27285
- ? parseAssignmentExpressionOrHigher()
27287
+ return finishNode(factory.createConditionalExpression(leftOperand, questionToken, doOutsideOfContext(disallowInAndDecoratorContext, function () { return parseAssignmentExpressionOrHigher(true); }), colonToken = parseExpectedToken(58), ts.nodeIsPresent(colonToken)
27288
+ ? parseAssignmentExpressionOrHigher(true)
27286
27289
  : createMissingNode(79, false, ts.Diagnostics._0_expected, ts.tokenToString(58))), pos);
27287
27290
  }
27288
27291
  function parseBinaryExpressionOrHigher(precedence) {
@@ -27953,13 +27956,13 @@ var ts;
27953
27956
  function parseSpreadElement() {
27954
27957
  var pos = getNodePos();
27955
27958
  parseExpected(25);
27956
- var expression = parseAssignmentExpressionOrHigher();
27959
+ var expression = parseAssignmentExpressionOrHigher(false);
27957
27960
  return finishNode(factory.createSpreadElement(expression), pos);
27958
27961
  }
27959
27962
  function parseArgumentOrArrayLiteralElement() {
27960
27963
  return token() === 25 ? parseSpreadElement() :
27961
27964
  token() === 27 ? finishNode(factory.createOmittedExpression(), getNodePos()) :
27962
- parseAssignmentExpressionOrHigher();
27965
+ parseAssignmentExpressionOrHigher(false);
27963
27966
  }
27964
27967
  function parseArgumentExpression() {
27965
27968
  return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement);
@@ -27976,7 +27979,7 @@ var ts;
27976
27979
  var pos = getNodePos();
27977
27980
  var hasJSDoc = hasPrecedingJSDocComment();
27978
27981
  if (parseOptionalToken(25)) {
27979
- var expression = parseAssignmentExpressionOrHigher();
27982
+ var expression = parseAssignmentExpressionOrHigher(false);
27980
27983
  return withJSDoc(finishNode(factory.createSpreadAssignment(expression), pos), hasJSDoc);
27981
27984
  }
27982
27985
  var decorators = parseDecorators();
@@ -27999,13 +28002,13 @@ var ts;
27999
28002
  var isShorthandPropertyAssignment = tokenIsIdentifier && (token() !== 58);
28000
28003
  if (isShorthandPropertyAssignment) {
28001
28004
  var equalsToken = parseOptionalToken(63);
28002
- var objectAssignmentInitializer = equalsToken ? allowInAnd(parseAssignmentExpressionOrHigher) : undefined;
28005
+ var objectAssignmentInitializer = equalsToken ? allowInAnd(function () { return parseAssignmentExpressionOrHigher(false); }) : undefined;
28003
28006
  node = factory.createShorthandPropertyAssignment(name, objectAssignmentInitializer);
28004
28007
  node.equalsToken = equalsToken;
28005
28008
  }
28006
28009
  else {
28007
28010
  parseExpected(58);
28008
- var initializer = allowInAnd(parseAssignmentExpressionOrHigher);
28011
+ var initializer = allowInAnd(function () { return parseAssignmentExpressionOrHigher(false); });
28009
28012
  node = factory.createPropertyAssignment(name, initializer);
28010
28013
  }
28011
28014
  node.decorators = decorators;
@@ -28171,7 +28174,7 @@ var ts;
28171
28174
  }
28172
28175
  var node;
28173
28176
  if (awaitToken ? parseExpected(159) : parseOptional(159)) {
28174
- var expression = allowInAnd(parseAssignmentExpressionOrHigher);
28177
+ var expression = allowInAnd(function () { return parseAssignmentExpressionOrHigher(false); });
28175
28178
  parseExpected(21);
28176
28179
  node = factory.createForOfStatement(awaitToken, initializer, expression, parseStatement());
28177
28180
  }
@@ -29208,7 +29211,7 @@ var ts;
29208
29211
  var pos = getNodePos();
29209
29212
  var name = ts.tokenIsIdentifierOrKeyword(token()) ? parseIdentifierName() : parseLiteralLikeNode(10);
29210
29213
  parseExpected(58);
29211
- var value = parseAssignmentExpressionOrHigher();
29214
+ var value = parseAssignmentExpressionOrHigher(false);
29212
29215
  return finishNode(factory.createAssertEntry(name, value), pos);
29213
29216
  }
29214
29217
  function parseAssertClause() {
@@ -29400,7 +29403,7 @@ var ts;
29400
29403
  else {
29401
29404
  parseExpected(88);
29402
29405
  }
29403
- var expression = parseAssignmentExpressionOrHigher();
29406
+ var expression = parseAssignmentExpressionOrHigher(false);
29404
29407
  parseSemicolon();
29405
29408
  setAwaitContext(savedAwaitContext);
29406
29409
  var node = factory.createExportAssignment(decorators, modifiers, isExportEquals, expression);
package/lib/tsserver.js CHANGED
@@ -100,7 +100,7 @@ var ts;
100
100
  // The following is baselined as a literal template type without intervention
101
101
  /** The version of the TypeScript compiler release */
102
102
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
103
- ts.version = ts.versionMajorMinor + ".0-dev.20220225";
103
+ ts.version = ts.versionMajorMinor + ".0-dev.20220228";
104
104
  /* @internal */
105
105
  var Comparison;
106
106
  (function (Comparison) {
@@ -33473,10 +33473,10 @@ var ts;
33473
33473
  setDecoratorContext(/*val*/ false);
33474
33474
  }
33475
33475
  var pos = getNodePos();
33476
- var expr = parseAssignmentExpressionOrHigher();
33476
+ var expr = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
33477
33477
  var operatorToken;
33478
33478
  while ((operatorToken = parseOptionalToken(27 /* CommaToken */))) {
33479
- expr = makeBinaryExpression(expr, operatorToken, parseAssignmentExpressionOrHigher(), pos);
33479
+ expr = makeBinaryExpression(expr, operatorToken, parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false), pos);
33480
33480
  }
33481
33481
  if (saveDecoratorContext) {
33482
33482
  setDecoratorContext(/*val*/ true);
@@ -33484,9 +33484,9 @@ var ts;
33484
33484
  return expr;
33485
33485
  }
33486
33486
  function parseInitializer() {
33487
- return parseOptional(63 /* EqualsToken */) ? parseAssignmentExpressionOrHigher() : undefined;
33487
+ return parseOptional(63 /* EqualsToken */) ? parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false) : undefined;
33488
33488
  }
33489
- function parseAssignmentExpressionOrHigher() {
33489
+ function parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction) {
33490
33490
  // AssignmentExpression[in,yield]:
33491
33491
  // 1) ConditionalExpression[?in,?yield]
33492
33492
  // 2) LeftHandSideExpression = AssignmentExpression[?in,?yield]
@@ -33512,7 +33512,7 @@ var ts;
33512
33512
  // If we do successfully parse arrow-function, we must *not* recurse for productions 1, 2 or 3. An ArrowFunction is
33513
33513
  // not a LeftHandSideExpression, nor does it start a ConditionalExpression. So we are done
33514
33514
  // with AssignmentExpression if we see one.
33515
- var arrowExpression = tryParseParenthesizedArrowFunctionExpression() || tryParseAsyncSimpleArrowFunctionExpression();
33515
+ var arrowExpression = tryParseParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction) || tryParseAsyncSimpleArrowFunctionExpression(disallowReturnTypeInArrowFunction);
33516
33516
  if (arrowExpression) {
33517
33517
  return arrowExpression;
33518
33518
  }
@@ -33531,7 +33531,7 @@ var ts;
33531
33531
  // parameter ('x => ...') above. We handle it here by checking if the parsed expression was a single
33532
33532
  // identifier and the current token is an arrow.
33533
33533
  if (expr.kind === 79 /* Identifier */ && token() === 38 /* EqualsGreaterThanToken */) {
33534
- return parseSimpleArrowFunctionExpression(pos, expr, /*asyncModifier*/ undefined);
33534
+ return parseSimpleArrowFunctionExpression(pos, expr, disallowReturnTypeInArrowFunction, /*asyncModifier*/ undefined);
33535
33535
  }
33536
33536
  // Now see if we might be in cases '2' or '3'.
33537
33537
  // If the expression was a LHS expression, and we have an assignment operator, then
@@ -33540,7 +33540,7 @@ var ts;
33540
33540
  // Note: we call reScanGreaterToken so that we get an appropriately merged token
33541
33541
  // for cases like `> > =` becoming `>>=`
33542
33542
  if (ts.isLeftHandSideExpression(expr) && ts.isAssignmentOperator(reScanGreaterToken())) {
33543
- return makeBinaryExpression(expr, parseTokenNode(), parseAssignmentExpressionOrHigher(), pos);
33543
+ return makeBinaryExpression(expr, parseTokenNode(), parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction), pos);
33544
33544
  }
33545
33545
  // It wasn't an assignment or a lambda. This is a conditional expression:
33546
33546
  return parseConditionalExpressionRest(expr, pos);
@@ -33583,7 +33583,7 @@ var ts;
33583
33583
  nextToken();
33584
33584
  if (!scanner.hasPrecedingLineBreak() &&
33585
33585
  (token() === 41 /* AsteriskToken */ || isStartOfExpression())) {
33586
- return finishNode(factory.createYieldExpression(parseOptionalToken(41 /* AsteriskToken */), parseAssignmentExpressionOrHigher()), pos);
33586
+ return finishNode(factory.createYieldExpression(parseOptionalToken(41 /* AsteriskToken */), parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false)), pos);
33587
33587
  }
33588
33588
  else {
33589
33589
  // if the next token is not on the same line as yield. or we don't have an '*' or
@@ -33591,7 +33591,7 @@ var ts;
33591
33591
  return finishNode(factory.createYieldExpression(/*asteriskToken*/ undefined, /*expression*/ undefined), pos);
33592
33592
  }
33593
33593
  }
33594
- function parseSimpleArrowFunctionExpression(pos, identifier, asyncModifier) {
33594
+ function parseSimpleArrowFunctionExpression(pos, identifier, disallowReturnTypeInArrowFunction, asyncModifier) {
33595
33595
  ts.Debug.assert(token() === 38 /* EqualsGreaterThanToken */, "parseSimpleArrowFunctionExpression should only have been called if we had a =>");
33596
33596
  var parameter = factory.createParameterDeclaration(
33597
33597
  /*decorators*/ undefined,
@@ -33603,11 +33603,11 @@ var ts;
33603
33603
  finishNode(parameter, identifier.pos);
33604
33604
  var parameters = createNodeArray([parameter], parameter.pos, parameter.end);
33605
33605
  var equalsGreaterThanToken = parseExpectedToken(38 /* EqualsGreaterThanToken */);
33606
- var body = parseArrowFunctionExpressionBody(/*isAsync*/ !!asyncModifier);
33606
+ var body = parseArrowFunctionExpressionBody(/*isAsync*/ !!asyncModifier, disallowReturnTypeInArrowFunction);
33607
33607
  var node = factory.createArrowFunction(asyncModifier, /*typeParameters*/ undefined, parameters, /*type*/ undefined, equalsGreaterThanToken, body);
33608
33608
  return addJSDocComment(finishNode(node, pos));
33609
33609
  }
33610
- function tryParseParenthesizedArrowFunctionExpression() {
33610
+ function tryParseParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction) {
33611
33611
  var triState = isParenthesizedArrowFunctionExpression();
33612
33612
  if (triState === 0 /* False */) {
33613
33613
  // It's definitely not a parenthesized arrow function expression.
@@ -33618,8 +33618,8 @@ var ts;
33618
33618
  // it out, but don't allow any ambiguity, and return 'undefined' if this could be an
33619
33619
  // expression instead.
33620
33620
  return triState === 1 /* True */ ?
33621
- parseParenthesizedArrowFunctionExpression(/*allowAmbiguity*/ true) :
33622
- tryParse(parsePossibleParenthesizedArrowFunctionExpression);
33621
+ parseParenthesizedArrowFunctionExpression(/*allowAmbiguity*/ true, /*disallowReturnTypeInArrowFunction*/ false) :
33622
+ tryParse(function () { return parsePossibleParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction); });
33623
33623
  }
33624
33624
  // True -> We definitely expect a parenthesized arrow function here.
33625
33625
  // False -> There *cannot* be a parenthesized arrow function here.
@@ -33749,25 +33749,25 @@ var ts;
33749
33749
  return 2 /* Unknown */;
33750
33750
  }
33751
33751
  }
33752
- function parsePossibleParenthesizedArrowFunctionExpression() {
33752
+ function parsePossibleParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction) {
33753
33753
  var tokenPos = scanner.getTokenPos();
33754
33754
  if (notParenthesizedArrow === null || notParenthesizedArrow === void 0 ? void 0 : notParenthesizedArrow.has(tokenPos)) {
33755
33755
  return undefined;
33756
33756
  }
33757
- var result = parseParenthesizedArrowFunctionExpression(/*allowAmbiguity*/ false);
33757
+ var result = parseParenthesizedArrowFunctionExpression(/*allowAmbiguity*/ false, disallowReturnTypeInArrowFunction);
33758
33758
  if (!result) {
33759
33759
  (notParenthesizedArrow || (notParenthesizedArrow = new ts.Set())).add(tokenPos);
33760
33760
  }
33761
33761
  return result;
33762
33762
  }
33763
- function tryParseAsyncSimpleArrowFunctionExpression() {
33763
+ function tryParseAsyncSimpleArrowFunctionExpression(disallowReturnTypeInArrowFunction) {
33764
33764
  // We do a check here so that we won't be doing unnecessarily call to "lookAhead"
33765
33765
  if (token() === 131 /* AsyncKeyword */) {
33766
33766
  if (lookAhead(isUnParenthesizedAsyncArrowFunctionWorker) === 1 /* True */) {
33767
33767
  var pos = getNodePos();
33768
33768
  var asyncModifier = parseModifiersForArrowFunction();
33769
33769
  var expr = parseBinaryExpressionOrHigher(0 /* Lowest */);
33770
- return parseSimpleArrowFunctionExpression(pos, expr, asyncModifier);
33770
+ return parseSimpleArrowFunctionExpression(pos, expr, disallowReturnTypeInArrowFunction, asyncModifier);
33771
33771
  }
33772
33772
  }
33773
33773
  return undefined;
@@ -33791,7 +33791,7 @@ var ts;
33791
33791
  }
33792
33792
  return 0 /* False */;
33793
33793
  }
33794
- function parseParenthesizedArrowFunctionExpression(allowAmbiguity) {
33794
+ function parseParenthesizedArrowFunctionExpression(allowAmbiguity, disallowReturnTypeInArrowFunction) {
33795
33795
  var pos = getNodePos();
33796
33796
  var hasJSDoc = hasPrecedingJSDocComment();
33797
33797
  var modifiers = parseModifiersForArrowFunction();
@@ -33817,6 +33817,23 @@ var ts;
33817
33817
  return undefined;
33818
33818
  }
33819
33819
  }
33820
+ // Given:
33821
+ // x ? y => ({ y }) : z => ({ z })
33822
+ // We try to parse the body of the first arrow function by looking at:
33823
+ // ({ y }) : z => ({ z })
33824
+ // This is a valid arrow function with "z" as the return type.
33825
+ //
33826
+ // But, if we're in the true side of a conditional expression, this colon
33827
+ // terminates the expression, so we cannot allow a return type if we aren't
33828
+ // certain whether or not the preceding text was parsed as a parameter list.
33829
+ //
33830
+ // For example,
33831
+ // a() ? (b: number, c?: string): void => d() : e
33832
+ // is determined by isParenthesizedArrowFunctionExpression to unambiguously
33833
+ // be an arrow expression, so we allow a return type.
33834
+ if (disallowReturnTypeInArrowFunction && token() === 58 /* ColonToken */) {
33835
+ return undefined;
33836
+ }
33820
33837
  var type = parseReturnType(58 /* ColonToken */, /*isType*/ false);
33821
33838
  if (type && !allowAmbiguity && typeHasArrowFunctionBlockingParseError(type)) {
33822
33839
  return undefined;
@@ -33845,12 +33862,12 @@ var ts;
33845
33862
  var lastToken = token();
33846
33863
  var equalsGreaterThanToken = parseExpectedToken(38 /* EqualsGreaterThanToken */);
33847
33864
  var body = (lastToken === 38 /* EqualsGreaterThanToken */ || lastToken === 18 /* OpenBraceToken */)
33848
- ? parseArrowFunctionExpressionBody(ts.some(modifiers, ts.isAsyncModifier))
33865
+ ? parseArrowFunctionExpressionBody(ts.some(modifiers, ts.isAsyncModifier), disallowReturnTypeInArrowFunction)
33849
33866
  : parseIdentifier();
33850
33867
  var node = factory.createArrowFunction(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body);
33851
33868
  return withJSDoc(finishNode(node, pos), hasJSDoc);
33852
33869
  }
33853
- function parseArrowFunctionExpressionBody(isAsync) {
33870
+ function parseArrowFunctionExpressionBody(isAsync, disallowReturnTypeInArrowFunction) {
33854
33871
  if (token() === 18 /* OpenBraceToken */) {
33855
33872
  return parseFunctionBlock(isAsync ? 2 /* Await */ : 0 /* None */);
33856
33873
  }
@@ -33878,8 +33895,8 @@ var ts;
33878
33895
  var savedTopLevel = topLevel;
33879
33896
  topLevel = false;
33880
33897
  var node = isAsync
33881
- ? doInAwaitContext(parseAssignmentExpressionOrHigher)
33882
- : doOutsideOfAwaitContext(parseAssignmentExpressionOrHigher);
33898
+ ? doInAwaitContext(function () { return parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction); })
33899
+ : doOutsideOfAwaitContext(function () { return parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction); });
33883
33900
  topLevel = savedTopLevel;
33884
33901
  return node;
33885
33902
  }
@@ -33892,8 +33909,8 @@ var ts;
33892
33909
  // Note: we explicitly 'allowIn' in the whenTrue part of the condition expression, and
33893
33910
  // we do not that for the 'whenFalse' part.
33894
33911
  var colonToken;
33895
- return finishNode(factory.createConditionalExpression(leftOperand, questionToken, doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher), colonToken = parseExpectedToken(58 /* ColonToken */), ts.nodeIsPresent(colonToken)
33896
- ? parseAssignmentExpressionOrHigher()
33912
+ return finishNode(factory.createConditionalExpression(leftOperand, questionToken, doOutsideOfContext(disallowInAndDecoratorContext, function () { return parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ true); }), colonToken = parseExpectedToken(58 /* ColonToken */), ts.nodeIsPresent(colonToken)
33913
+ ? parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ true)
33897
33914
  : createMissingNode(79 /* Identifier */, /*reportAtCurrentPosition*/ false, ts.Diagnostics._0_expected, ts.tokenToString(58 /* ColonToken */))), pos);
33898
33915
  }
33899
33916
  function parseBinaryExpressionOrHigher(precedence) {
@@ -34809,13 +34826,13 @@ var ts;
34809
34826
  function parseSpreadElement() {
34810
34827
  var pos = getNodePos();
34811
34828
  parseExpected(25 /* DotDotDotToken */);
34812
- var expression = parseAssignmentExpressionOrHigher();
34829
+ var expression = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
34813
34830
  return finishNode(factory.createSpreadElement(expression), pos);
34814
34831
  }
34815
34832
  function parseArgumentOrArrayLiteralElement() {
34816
34833
  return token() === 25 /* DotDotDotToken */ ? parseSpreadElement() :
34817
34834
  token() === 27 /* CommaToken */ ? finishNode(factory.createOmittedExpression(), getNodePos()) :
34818
- parseAssignmentExpressionOrHigher();
34835
+ parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
34819
34836
  }
34820
34837
  function parseArgumentExpression() {
34821
34838
  return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement);
@@ -34832,7 +34849,7 @@ var ts;
34832
34849
  var pos = getNodePos();
34833
34850
  var hasJSDoc = hasPrecedingJSDocComment();
34834
34851
  if (parseOptionalToken(25 /* DotDotDotToken */)) {
34835
- var expression = parseAssignmentExpressionOrHigher();
34852
+ var expression = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
34836
34853
  return withJSDoc(finishNode(factory.createSpreadAssignment(expression), pos), hasJSDoc);
34837
34854
  }
34838
34855
  var decorators = parseDecorators();
@@ -34861,7 +34878,7 @@ var ts;
34861
34878
  var isShorthandPropertyAssignment = tokenIsIdentifier && (token() !== 58 /* ColonToken */);
34862
34879
  if (isShorthandPropertyAssignment) {
34863
34880
  var equalsToken = parseOptionalToken(63 /* EqualsToken */);
34864
- var objectAssignmentInitializer = equalsToken ? allowInAnd(parseAssignmentExpressionOrHigher) : undefined;
34881
+ var objectAssignmentInitializer = equalsToken ? allowInAnd(function () { return parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false); }) : undefined;
34865
34882
  node = factory.createShorthandPropertyAssignment(name, objectAssignmentInitializer);
34866
34883
  // Save equals token for error reporting.
34867
34884
  // TODO(rbuckton): Consider manufacturing this when we need to report an error as it is otherwise not useful.
@@ -34869,7 +34886,7 @@ var ts;
34869
34886
  }
34870
34887
  else {
34871
34888
  parseExpected(58 /* ColonToken */);
34872
- var initializer = allowInAnd(parseAssignmentExpressionOrHigher);
34889
+ var initializer = allowInAnd(function () { return parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false); });
34873
34890
  node = factory.createPropertyAssignment(name, initializer);
34874
34891
  }
34875
34892
  // Decorators, Modifiers, questionToken, and exclamationToken are not supported by property assignments and are reported in the grammar checker
@@ -35049,7 +35066,7 @@ var ts;
35049
35066
  }
35050
35067
  var node;
35051
35068
  if (awaitToken ? parseExpected(159 /* OfKeyword */) : parseOptional(159 /* OfKeyword */)) {
35052
- var expression = allowInAnd(parseAssignmentExpressionOrHigher);
35069
+ var expression = allowInAnd(function () { return parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false); });
35053
35070
  parseExpected(21 /* CloseParenToken */);
35054
35071
  node = factory.createForOfStatement(awaitToken, initializer, expression, parseStatement());
35055
35072
  }
@@ -36216,7 +36233,7 @@ var ts;
36216
36233
  var pos = getNodePos();
36217
36234
  var name = ts.tokenIsIdentifierOrKeyword(token()) ? parseIdentifierName() : parseLiteralLikeNode(10 /* StringLiteral */);
36218
36235
  parseExpected(58 /* ColonToken */);
36219
- var value = parseAssignmentExpressionOrHigher();
36236
+ var value = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
36220
36237
  return finishNode(factory.createAssertEntry(name, value), pos);
36221
36238
  }
36222
36239
  function parseAssertClause() {
@@ -36453,7 +36470,7 @@ var ts;
36453
36470
  else {
36454
36471
  parseExpected(88 /* DefaultKeyword */);
36455
36472
  }
36456
- var expression = parseAssignmentExpressionOrHigher();
36473
+ var expression = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
36457
36474
  parseSemicolon();
36458
36475
  setAwaitContext(savedAwaitContext);
36459
36476
  var node = factory.createExportAssignment(decorators, modifiers, isExportEquals, expression);
@@ -134910,6 +134927,9 @@ var ts;
134910
134927
  // *don’t* include readonly member modifiers.
134911
134928
  return getAllReferencesForKeyword(sourceFiles, node.kind, cancellationToken, node.kind === 144 /* ReadonlyKeyword */ ? isReadonlyTypeOperator : undefined);
134912
134929
  }
134930
+ if (ts.isImportMeta(node.parent) && node.parent.name === node) {
134931
+ return getAllReferencesForImportMeta(sourceFiles, cancellationToken);
134932
+ }
134913
134933
  if (ts.isStaticModifier(node) && ts.isClassStaticBlockDeclaration(node.parent)) {
134914
134934
  return [{ definition: { type: 2 /* Keyword */, node: node }, references: [nodeEntry(node)] }];
134915
134935
  }
@@ -135391,6 +135411,18 @@ var ts;
135391
135411
  return false;
135392
135412
  }
135393
135413
  }
135414
+ function getAllReferencesForImportMeta(sourceFiles, cancellationToken) {
135415
+ var references = ts.flatMap(sourceFiles, function (sourceFile) {
135416
+ cancellationToken.throwIfCancellationRequested();
135417
+ return ts.mapDefined(getPossibleSymbolReferenceNodes(sourceFile, "meta", sourceFile), function (node) {
135418
+ var parent = node.parent;
135419
+ if (ts.isImportMeta(parent)) {
135420
+ return nodeEntry(parent);
135421
+ }
135422
+ });
135423
+ });
135424
+ return references.length ? [{ definition: { type: 2 /* Keyword */, node: references[0].node }, references: references }] : undefined;
135425
+ }
135394
135426
  function getAllReferencesForKeyword(sourceFiles, keywordKind, cancellationToken, filter) {
135395
135427
  var references = ts.flatMap(sourceFiles, function (sourceFile) {
135396
135428
  cancellationToken.throwIfCancellationRequested();
@@ -137103,6 +137135,9 @@ var ts;
137103
137135
  if (node === sourceFile) {
137104
137136
  return undefined;
137105
137137
  }
137138
+ if (ts.isImportMeta(node.parent) && node.parent.name === node) {
137139
+ return definitionFromType(typeChecker.getTypeAtLocation(node.parent), typeChecker, node.parent);
137140
+ }
137106
137141
  var symbol = getSymbol(node, typeChecker);
137107
137142
  if (!symbol)
137108
137143
  return undefined;
@@ -162231,6 +162266,9 @@ var ts;
162231
162266
  if (ts.isNamedTupleMember(node.parent) && node.pos === node.parent.pos) {
162232
162267
  return node.parent;
162233
162268
  }
162269
+ if (ts.isImportMeta(node.parent) && node.parent.name === node) {
162270
+ return node.parent;
162271
+ }
162234
162272
  return node;
162235
162273
  }
162236
162274
  function shouldGetType(sourceFile, node, position) {
@@ -162246,6 +162284,8 @@ var ts;
162246
162284
  case 106 /* SuperKeyword */:
162247
162285
  case 196 /* NamedTupleMember */:
162248
162286
  return true;
162287
+ case 230 /* MetaProperty */:
162288
+ return ts.isImportMeta(node);
162249
162289
  default:
162250
162290
  return false;
162251
162291
  }
@@ -2015,6 +2015,12 @@ declare namespace ts {
2015
2015
  path: string;
2016
2016
  name?: string;
2017
2017
  }
2018
+ /**
2019
+ * Subset of properties from SourceFile that are used in multiple utility functions
2020
+ */
2021
+ export interface SourceFileLike {
2022
+ readonly text: string;
2023
+ }
2018
2024
  export interface SourceFile extends Declaration {
2019
2025
  readonly kind: SyntaxKind.SourceFile;
2020
2026
  readonly statements: NodeArray<Statement>;