typescript 4.7.0-dev.20220224 → 4.7.0-dev.20220227
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 +36 -33
- package/lib/tsserver.js +73 -33
- package/lib/tsserverlibrary.d.ts +6 -0
- package/lib/tsserverlibrary.js +73 -33
- package/lib/typescript.d.ts +6 -0
- package/lib/typescript.js +73 -33
- package/lib/typescriptServices.d.ts +6 -0
- package/lib/typescriptServices.js +73 -33
- package/lib/typingsInstaller.js +50 -33
- package/package.json +1 -1
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.
|
|
72
|
+
ts.version = ts.versionMajorMinor + ".0-dev.20220227";
|
|
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.
|
|
103
|
+
ts.version = ts.versionMajorMinor + ".0-dev.20220227";
|
|
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
|
}
|
package/lib/tsserverlibrary.d.ts
CHANGED
|
@@ -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>;
|