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.
- package/lib/tsc.js +58 -35
- package/lib/tsserver.js +97 -35
- package/lib/tsserverlibrary.d.ts +6 -0
- package/lib/tsserverlibrary.js +97 -35
- package/lib/typescript.d.ts +6 -0
- package/lib/typescript.js +97 -35
- package/lib/typescriptServices.d.ts +6 -0
- package/lib/typescriptServices.js +97 -35
- package/lib/typingsInstaller.js +74 -35
- package/package.json +1 -1
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.20220226";
|
|
104
104
|
/* @internal */
|
|
105
105
|
var Comparison;
|
|
106
106
|
(function (Comparison) {
|
|
@@ -27190,6 +27190,19 @@ var ts;
|
|
|
27190
27190
|
return node;
|
|
27191
27191
|
}
|
|
27192
27192
|
ts.ignoreSourceNewlines = ignoreSourceNewlines;
|
|
27193
|
+
/* @internal */
|
|
27194
|
+
function setTypeNode(node, type) {
|
|
27195
|
+
var emitNode = getOrCreateEmitNode(node);
|
|
27196
|
+
emitNode.typeNode = type;
|
|
27197
|
+
return node;
|
|
27198
|
+
}
|
|
27199
|
+
ts.setTypeNode = setTypeNode;
|
|
27200
|
+
/* @internal */
|
|
27201
|
+
function getTypeNode(node) {
|
|
27202
|
+
var _a;
|
|
27203
|
+
return (_a = node.emitNode) === null || _a === void 0 ? void 0 : _a.typeNode;
|
|
27204
|
+
}
|
|
27205
|
+
ts.getTypeNode = getTypeNode;
|
|
27193
27206
|
})(ts || (ts = {}));
|
|
27194
27207
|
/* @internal */
|
|
27195
27208
|
var ts;
|
|
@@ -33460,10 +33473,10 @@ var ts;
|
|
|
33460
33473
|
setDecoratorContext(/*val*/ false);
|
|
33461
33474
|
}
|
|
33462
33475
|
var pos = getNodePos();
|
|
33463
|
-
var expr = parseAssignmentExpressionOrHigher();
|
|
33476
|
+
var expr = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
|
|
33464
33477
|
var operatorToken;
|
|
33465
33478
|
while ((operatorToken = parseOptionalToken(27 /* CommaToken */))) {
|
|
33466
|
-
expr = makeBinaryExpression(expr, operatorToken, parseAssignmentExpressionOrHigher(), pos);
|
|
33479
|
+
expr = makeBinaryExpression(expr, operatorToken, parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false), pos);
|
|
33467
33480
|
}
|
|
33468
33481
|
if (saveDecoratorContext) {
|
|
33469
33482
|
setDecoratorContext(/*val*/ true);
|
|
@@ -33471,9 +33484,9 @@ var ts;
|
|
|
33471
33484
|
return expr;
|
|
33472
33485
|
}
|
|
33473
33486
|
function parseInitializer() {
|
|
33474
|
-
return parseOptional(63 /* EqualsToken */) ? parseAssignmentExpressionOrHigher() : undefined;
|
|
33487
|
+
return parseOptional(63 /* EqualsToken */) ? parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false) : undefined;
|
|
33475
33488
|
}
|
|
33476
|
-
function parseAssignmentExpressionOrHigher() {
|
|
33489
|
+
function parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction) {
|
|
33477
33490
|
// AssignmentExpression[in,yield]:
|
|
33478
33491
|
// 1) ConditionalExpression[?in,?yield]
|
|
33479
33492
|
// 2) LeftHandSideExpression = AssignmentExpression[?in,?yield]
|
|
@@ -33499,7 +33512,7 @@ var ts;
|
|
|
33499
33512
|
// If we do successfully parse arrow-function, we must *not* recurse for productions 1, 2 or 3. An ArrowFunction is
|
|
33500
33513
|
// not a LeftHandSideExpression, nor does it start a ConditionalExpression. So we are done
|
|
33501
33514
|
// with AssignmentExpression if we see one.
|
|
33502
|
-
var arrowExpression = tryParseParenthesizedArrowFunctionExpression() || tryParseAsyncSimpleArrowFunctionExpression();
|
|
33515
|
+
var arrowExpression = tryParseParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction) || tryParseAsyncSimpleArrowFunctionExpression(disallowReturnTypeInArrowFunction);
|
|
33503
33516
|
if (arrowExpression) {
|
|
33504
33517
|
return arrowExpression;
|
|
33505
33518
|
}
|
|
@@ -33518,7 +33531,7 @@ var ts;
|
|
|
33518
33531
|
// parameter ('x => ...') above. We handle it here by checking if the parsed expression was a single
|
|
33519
33532
|
// identifier and the current token is an arrow.
|
|
33520
33533
|
if (expr.kind === 79 /* Identifier */ && token() === 38 /* EqualsGreaterThanToken */) {
|
|
33521
|
-
return parseSimpleArrowFunctionExpression(pos, expr, /*asyncModifier*/ undefined);
|
|
33534
|
+
return parseSimpleArrowFunctionExpression(pos, expr, disallowReturnTypeInArrowFunction, /*asyncModifier*/ undefined);
|
|
33522
33535
|
}
|
|
33523
33536
|
// Now see if we might be in cases '2' or '3'.
|
|
33524
33537
|
// If the expression was a LHS expression, and we have an assignment operator, then
|
|
@@ -33527,7 +33540,7 @@ var ts;
|
|
|
33527
33540
|
// Note: we call reScanGreaterToken so that we get an appropriately merged token
|
|
33528
33541
|
// for cases like `> > =` becoming `>>=`
|
|
33529
33542
|
if (ts.isLeftHandSideExpression(expr) && ts.isAssignmentOperator(reScanGreaterToken())) {
|
|
33530
|
-
return makeBinaryExpression(expr, parseTokenNode(), parseAssignmentExpressionOrHigher(), pos);
|
|
33543
|
+
return makeBinaryExpression(expr, parseTokenNode(), parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction), pos);
|
|
33531
33544
|
}
|
|
33532
33545
|
// It wasn't an assignment or a lambda. This is a conditional expression:
|
|
33533
33546
|
return parseConditionalExpressionRest(expr, pos);
|
|
@@ -33570,7 +33583,7 @@ var ts;
|
|
|
33570
33583
|
nextToken();
|
|
33571
33584
|
if (!scanner.hasPrecedingLineBreak() &&
|
|
33572
33585
|
(token() === 41 /* AsteriskToken */ || isStartOfExpression())) {
|
|
33573
|
-
return finishNode(factory.createYieldExpression(parseOptionalToken(41 /* AsteriskToken */), parseAssignmentExpressionOrHigher()), pos);
|
|
33586
|
+
return finishNode(factory.createYieldExpression(parseOptionalToken(41 /* AsteriskToken */), parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false)), pos);
|
|
33574
33587
|
}
|
|
33575
33588
|
else {
|
|
33576
33589
|
// if the next token is not on the same line as yield. or we don't have an '*' or
|
|
@@ -33578,7 +33591,7 @@ var ts;
|
|
|
33578
33591
|
return finishNode(factory.createYieldExpression(/*asteriskToken*/ undefined, /*expression*/ undefined), pos);
|
|
33579
33592
|
}
|
|
33580
33593
|
}
|
|
33581
|
-
function parseSimpleArrowFunctionExpression(pos, identifier, asyncModifier) {
|
|
33594
|
+
function parseSimpleArrowFunctionExpression(pos, identifier, disallowReturnTypeInArrowFunction, asyncModifier) {
|
|
33582
33595
|
ts.Debug.assert(token() === 38 /* EqualsGreaterThanToken */, "parseSimpleArrowFunctionExpression should only have been called if we had a =>");
|
|
33583
33596
|
var parameter = factory.createParameterDeclaration(
|
|
33584
33597
|
/*decorators*/ undefined,
|
|
@@ -33590,11 +33603,11 @@ var ts;
|
|
|
33590
33603
|
finishNode(parameter, identifier.pos);
|
|
33591
33604
|
var parameters = createNodeArray([parameter], parameter.pos, parameter.end);
|
|
33592
33605
|
var equalsGreaterThanToken = parseExpectedToken(38 /* EqualsGreaterThanToken */);
|
|
33593
|
-
var body = parseArrowFunctionExpressionBody(/*isAsync*/ !!asyncModifier);
|
|
33606
|
+
var body = parseArrowFunctionExpressionBody(/*isAsync*/ !!asyncModifier, disallowReturnTypeInArrowFunction);
|
|
33594
33607
|
var node = factory.createArrowFunction(asyncModifier, /*typeParameters*/ undefined, parameters, /*type*/ undefined, equalsGreaterThanToken, body);
|
|
33595
33608
|
return addJSDocComment(finishNode(node, pos));
|
|
33596
33609
|
}
|
|
33597
|
-
function tryParseParenthesizedArrowFunctionExpression() {
|
|
33610
|
+
function tryParseParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction) {
|
|
33598
33611
|
var triState = isParenthesizedArrowFunctionExpression();
|
|
33599
33612
|
if (triState === 0 /* False */) {
|
|
33600
33613
|
// It's definitely not a parenthesized arrow function expression.
|
|
@@ -33605,8 +33618,8 @@ var ts;
|
|
|
33605
33618
|
// it out, but don't allow any ambiguity, and return 'undefined' if this could be an
|
|
33606
33619
|
// expression instead.
|
|
33607
33620
|
return triState === 1 /* True */ ?
|
|
33608
|
-
parseParenthesizedArrowFunctionExpression(/*allowAmbiguity*/ true) :
|
|
33609
|
-
tryParse(parsePossibleParenthesizedArrowFunctionExpression);
|
|
33621
|
+
parseParenthesizedArrowFunctionExpression(/*allowAmbiguity*/ true, /*disallowReturnTypeInArrowFunction*/ false) :
|
|
33622
|
+
tryParse(function () { return parsePossibleParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction); });
|
|
33610
33623
|
}
|
|
33611
33624
|
// True -> We definitely expect a parenthesized arrow function here.
|
|
33612
33625
|
// False -> There *cannot* be a parenthesized arrow function here.
|
|
@@ -33736,25 +33749,25 @@ var ts;
|
|
|
33736
33749
|
return 2 /* Unknown */;
|
|
33737
33750
|
}
|
|
33738
33751
|
}
|
|
33739
|
-
function parsePossibleParenthesizedArrowFunctionExpression() {
|
|
33752
|
+
function parsePossibleParenthesizedArrowFunctionExpression(disallowReturnTypeInArrowFunction) {
|
|
33740
33753
|
var tokenPos = scanner.getTokenPos();
|
|
33741
33754
|
if (notParenthesizedArrow === null || notParenthesizedArrow === void 0 ? void 0 : notParenthesizedArrow.has(tokenPos)) {
|
|
33742
33755
|
return undefined;
|
|
33743
33756
|
}
|
|
33744
|
-
var result = parseParenthesizedArrowFunctionExpression(/*allowAmbiguity*/ false);
|
|
33757
|
+
var result = parseParenthesizedArrowFunctionExpression(/*allowAmbiguity*/ false, disallowReturnTypeInArrowFunction);
|
|
33745
33758
|
if (!result) {
|
|
33746
33759
|
(notParenthesizedArrow || (notParenthesizedArrow = new ts.Set())).add(tokenPos);
|
|
33747
33760
|
}
|
|
33748
33761
|
return result;
|
|
33749
33762
|
}
|
|
33750
|
-
function tryParseAsyncSimpleArrowFunctionExpression() {
|
|
33763
|
+
function tryParseAsyncSimpleArrowFunctionExpression(disallowReturnTypeInArrowFunction) {
|
|
33751
33764
|
// We do a check here so that we won't be doing unnecessarily call to "lookAhead"
|
|
33752
33765
|
if (token() === 131 /* AsyncKeyword */) {
|
|
33753
33766
|
if (lookAhead(isUnParenthesizedAsyncArrowFunctionWorker) === 1 /* True */) {
|
|
33754
33767
|
var pos = getNodePos();
|
|
33755
33768
|
var asyncModifier = parseModifiersForArrowFunction();
|
|
33756
33769
|
var expr = parseBinaryExpressionOrHigher(0 /* Lowest */);
|
|
33757
|
-
return parseSimpleArrowFunctionExpression(pos, expr, asyncModifier);
|
|
33770
|
+
return parseSimpleArrowFunctionExpression(pos, expr, disallowReturnTypeInArrowFunction, asyncModifier);
|
|
33758
33771
|
}
|
|
33759
33772
|
}
|
|
33760
33773
|
return undefined;
|
|
@@ -33778,7 +33791,7 @@ var ts;
|
|
|
33778
33791
|
}
|
|
33779
33792
|
return 0 /* False */;
|
|
33780
33793
|
}
|
|
33781
|
-
function parseParenthesizedArrowFunctionExpression(allowAmbiguity) {
|
|
33794
|
+
function parseParenthesizedArrowFunctionExpression(allowAmbiguity, disallowReturnTypeInArrowFunction) {
|
|
33782
33795
|
var pos = getNodePos();
|
|
33783
33796
|
var hasJSDoc = hasPrecedingJSDocComment();
|
|
33784
33797
|
var modifiers = parseModifiersForArrowFunction();
|
|
@@ -33804,6 +33817,23 @@ var ts;
|
|
|
33804
33817
|
return undefined;
|
|
33805
33818
|
}
|
|
33806
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
|
+
}
|
|
33807
33837
|
var type = parseReturnType(58 /* ColonToken */, /*isType*/ false);
|
|
33808
33838
|
if (type && !allowAmbiguity && typeHasArrowFunctionBlockingParseError(type)) {
|
|
33809
33839
|
return undefined;
|
|
@@ -33832,12 +33862,12 @@ var ts;
|
|
|
33832
33862
|
var lastToken = token();
|
|
33833
33863
|
var equalsGreaterThanToken = parseExpectedToken(38 /* EqualsGreaterThanToken */);
|
|
33834
33864
|
var body = (lastToken === 38 /* EqualsGreaterThanToken */ || lastToken === 18 /* OpenBraceToken */)
|
|
33835
|
-
? parseArrowFunctionExpressionBody(ts.some(modifiers, ts.isAsyncModifier))
|
|
33865
|
+
? parseArrowFunctionExpressionBody(ts.some(modifiers, ts.isAsyncModifier), disallowReturnTypeInArrowFunction)
|
|
33836
33866
|
: parseIdentifier();
|
|
33837
33867
|
var node = factory.createArrowFunction(modifiers, typeParameters, parameters, type, equalsGreaterThanToken, body);
|
|
33838
33868
|
return withJSDoc(finishNode(node, pos), hasJSDoc);
|
|
33839
33869
|
}
|
|
33840
|
-
function parseArrowFunctionExpressionBody(isAsync) {
|
|
33870
|
+
function parseArrowFunctionExpressionBody(isAsync, disallowReturnTypeInArrowFunction) {
|
|
33841
33871
|
if (token() === 18 /* OpenBraceToken */) {
|
|
33842
33872
|
return parseFunctionBlock(isAsync ? 2 /* Await */ : 0 /* None */);
|
|
33843
33873
|
}
|
|
@@ -33865,8 +33895,8 @@ var ts;
|
|
|
33865
33895
|
var savedTopLevel = topLevel;
|
|
33866
33896
|
topLevel = false;
|
|
33867
33897
|
var node = isAsync
|
|
33868
|
-
? doInAwaitContext(parseAssignmentExpressionOrHigher)
|
|
33869
|
-
: doOutsideOfAwaitContext(parseAssignmentExpressionOrHigher);
|
|
33898
|
+
? doInAwaitContext(function () { return parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction); })
|
|
33899
|
+
: doOutsideOfAwaitContext(function () { return parseAssignmentExpressionOrHigher(disallowReturnTypeInArrowFunction); });
|
|
33870
33900
|
topLevel = savedTopLevel;
|
|
33871
33901
|
return node;
|
|
33872
33902
|
}
|
|
@@ -33879,8 +33909,8 @@ var ts;
|
|
|
33879
33909
|
// Note: we explicitly 'allowIn' in the whenTrue part of the condition expression, and
|
|
33880
33910
|
// we do not that for the 'whenFalse' part.
|
|
33881
33911
|
var colonToken;
|
|
33882
|
-
return finishNode(factory.createConditionalExpression(leftOperand, questionToken, doOutsideOfContext(disallowInAndDecoratorContext, parseAssignmentExpressionOrHigher), colonToken = parseExpectedToken(58 /* ColonToken */), ts.nodeIsPresent(colonToken)
|
|
33883
|
-
? 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)
|
|
33884
33914
|
: createMissingNode(79 /* Identifier */, /*reportAtCurrentPosition*/ false, ts.Diagnostics._0_expected, ts.tokenToString(58 /* ColonToken */))), pos);
|
|
33885
33915
|
}
|
|
33886
33916
|
function parseBinaryExpressionOrHigher(precedence) {
|
|
@@ -34796,13 +34826,13 @@ var ts;
|
|
|
34796
34826
|
function parseSpreadElement() {
|
|
34797
34827
|
var pos = getNodePos();
|
|
34798
34828
|
parseExpected(25 /* DotDotDotToken */);
|
|
34799
|
-
var expression = parseAssignmentExpressionOrHigher();
|
|
34829
|
+
var expression = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
|
|
34800
34830
|
return finishNode(factory.createSpreadElement(expression), pos);
|
|
34801
34831
|
}
|
|
34802
34832
|
function parseArgumentOrArrayLiteralElement() {
|
|
34803
34833
|
return token() === 25 /* DotDotDotToken */ ? parseSpreadElement() :
|
|
34804
34834
|
token() === 27 /* CommaToken */ ? finishNode(factory.createOmittedExpression(), getNodePos()) :
|
|
34805
|
-
parseAssignmentExpressionOrHigher();
|
|
34835
|
+
parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
|
|
34806
34836
|
}
|
|
34807
34837
|
function parseArgumentExpression() {
|
|
34808
34838
|
return doOutsideOfContext(disallowInAndDecoratorContext, parseArgumentOrArrayLiteralElement);
|
|
@@ -34819,7 +34849,7 @@ var ts;
|
|
|
34819
34849
|
var pos = getNodePos();
|
|
34820
34850
|
var hasJSDoc = hasPrecedingJSDocComment();
|
|
34821
34851
|
if (parseOptionalToken(25 /* DotDotDotToken */)) {
|
|
34822
|
-
var expression = parseAssignmentExpressionOrHigher();
|
|
34852
|
+
var expression = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
|
|
34823
34853
|
return withJSDoc(finishNode(factory.createSpreadAssignment(expression), pos), hasJSDoc);
|
|
34824
34854
|
}
|
|
34825
34855
|
var decorators = parseDecorators();
|
|
@@ -34848,7 +34878,7 @@ var ts;
|
|
|
34848
34878
|
var isShorthandPropertyAssignment = tokenIsIdentifier && (token() !== 58 /* ColonToken */);
|
|
34849
34879
|
if (isShorthandPropertyAssignment) {
|
|
34850
34880
|
var equalsToken = parseOptionalToken(63 /* EqualsToken */);
|
|
34851
|
-
var objectAssignmentInitializer = equalsToken ? allowInAnd(parseAssignmentExpressionOrHigher) : undefined;
|
|
34881
|
+
var objectAssignmentInitializer = equalsToken ? allowInAnd(function () { return parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false); }) : undefined;
|
|
34852
34882
|
node = factory.createShorthandPropertyAssignment(name, objectAssignmentInitializer);
|
|
34853
34883
|
// Save equals token for error reporting.
|
|
34854
34884
|
// TODO(rbuckton): Consider manufacturing this when we need to report an error as it is otherwise not useful.
|
|
@@ -34856,7 +34886,7 @@ var ts;
|
|
|
34856
34886
|
}
|
|
34857
34887
|
else {
|
|
34858
34888
|
parseExpected(58 /* ColonToken */);
|
|
34859
|
-
var initializer = allowInAnd(parseAssignmentExpressionOrHigher);
|
|
34889
|
+
var initializer = allowInAnd(function () { return parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false); });
|
|
34860
34890
|
node = factory.createPropertyAssignment(name, initializer);
|
|
34861
34891
|
}
|
|
34862
34892
|
// Decorators, Modifiers, questionToken, and exclamationToken are not supported by property assignments and are reported in the grammar checker
|
|
@@ -35036,7 +35066,7 @@ var ts;
|
|
|
35036
35066
|
}
|
|
35037
35067
|
var node;
|
|
35038
35068
|
if (awaitToken ? parseExpected(159 /* OfKeyword */) : parseOptional(159 /* OfKeyword */)) {
|
|
35039
|
-
var expression = allowInAnd(parseAssignmentExpressionOrHigher);
|
|
35069
|
+
var expression = allowInAnd(function () { return parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false); });
|
|
35040
35070
|
parseExpected(21 /* CloseParenToken */);
|
|
35041
35071
|
node = factory.createForOfStatement(awaitToken, initializer, expression, parseStatement());
|
|
35042
35072
|
}
|
|
@@ -36203,7 +36233,7 @@ var ts;
|
|
|
36203
36233
|
var pos = getNodePos();
|
|
36204
36234
|
var name = ts.tokenIsIdentifierOrKeyword(token()) ? parseIdentifierName() : parseLiteralLikeNode(10 /* StringLiteral */);
|
|
36205
36235
|
parseExpected(58 /* ColonToken */);
|
|
36206
|
-
var value = parseAssignmentExpressionOrHigher();
|
|
36236
|
+
var value = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
|
|
36207
36237
|
return finishNode(factory.createAssertEntry(name, value), pos);
|
|
36208
36238
|
}
|
|
36209
36239
|
function parseAssertClause() {
|
|
@@ -36440,7 +36470,7 @@ var ts;
|
|
|
36440
36470
|
else {
|
|
36441
36471
|
parseExpected(88 /* DefaultKeyword */);
|
|
36442
36472
|
}
|
|
36443
|
-
var expression = parseAssignmentExpressionOrHigher();
|
|
36473
|
+
var expression = parseAssignmentExpressionOrHigher(/*disallowReturnTypeInArrowFunction*/ false);
|
|
36444
36474
|
parseSemicolon();
|
|
36445
36475
|
setAwaitContext(savedAwaitContext);
|
|
36446
36476
|
var node = factory.createExportAssignment(decorators, modifiers, isExportEquals, expression);
|
|
@@ -91620,9 +91650,13 @@ var ts;
|
|
|
91620
91650
|
}
|
|
91621
91651
|
}
|
|
91622
91652
|
function visitVariableDeclaration(node) {
|
|
91623
|
-
|
|
91653
|
+
var updated = factory.updateVariableDeclaration(node, ts.visitNode(node.name, visitor, ts.isBindingName),
|
|
91624
91654
|
/*exclamationToken*/ undefined,
|
|
91625
91655
|
/*type*/ undefined, ts.visitNode(node.initializer, visitor, ts.isExpression));
|
|
91656
|
+
if (node.type) {
|
|
91657
|
+
ts.setTypeNode(updated.name, node.type);
|
|
91658
|
+
}
|
|
91659
|
+
return updated;
|
|
91626
91660
|
}
|
|
91627
91661
|
function visitParenthesizedExpression(node) {
|
|
91628
91662
|
var innerExpression = ts.skipOuterExpressions(node.expression, ~6 /* Assertions */);
|
|
@@ -110954,10 +110988,11 @@ var ts;
|
|
|
110954
110988
|
// Declarations
|
|
110955
110989
|
//
|
|
110956
110990
|
function emitVariableDeclaration(node) {
|
|
110991
|
+
var _a, _b, _c, _d, _e;
|
|
110957
110992
|
emit(node.name);
|
|
110958
110993
|
emit(node.exclamationToken);
|
|
110959
110994
|
emitTypeAnnotation(node.type);
|
|
110960
|
-
emitInitializer(node.initializer, node.type ? node.
|
|
110995
|
+
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);
|
|
110961
110996
|
}
|
|
110962
110997
|
function emitVariableDeclarationList(node) {
|
|
110963
110998
|
writeKeyword(ts.isLet(node) ? "let" : ts.isVarConst(node) ? "const" : "var");
|
|
@@ -112939,6 +112974,10 @@ var ts;
|
|
|
112939
112974
|
commentsDisabled = false;
|
|
112940
112975
|
}
|
|
112941
112976
|
emitTrailingCommentsOfNode(node, emitFlags, commentRange.pos, commentRange.end, savedContainerPos, savedContainerEnd, savedDeclarationListContainerEnd);
|
|
112977
|
+
var typeNode = ts.getTypeNode(node);
|
|
112978
|
+
if (typeNode) {
|
|
112979
|
+
emitTrailingCommentsOfNode(node, emitFlags, typeNode.pos, typeNode.end, savedContainerPos, savedContainerEnd, savedDeclarationListContainerEnd);
|
|
112980
|
+
}
|
|
112942
112981
|
}
|
|
112943
112982
|
function emitLeadingCommentsOfNode(node, emitFlags, pos, end) {
|
|
112944
112983
|
enterComment();
|
|
@@ -134888,6 +134927,9 @@ var ts;
|
|
|
134888
134927
|
// *don’t* include readonly member modifiers.
|
|
134889
134928
|
return getAllReferencesForKeyword(sourceFiles, node.kind, cancellationToken, node.kind === 144 /* ReadonlyKeyword */ ? isReadonlyTypeOperator : undefined);
|
|
134890
134929
|
}
|
|
134930
|
+
if (ts.isImportMeta(node.parent) && node.parent.name === node) {
|
|
134931
|
+
return getAllReferencesForImportMeta(sourceFiles, cancellationToken);
|
|
134932
|
+
}
|
|
134891
134933
|
if (ts.isStaticModifier(node) && ts.isClassStaticBlockDeclaration(node.parent)) {
|
|
134892
134934
|
return [{ definition: { type: 2 /* Keyword */, node: node }, references: [nodeEntry(node)] }];
|
|
134893
134935
|
}
|
|
@@ -135369,6 +135411,18 @@ var ts;
|
|
|
135369
135411
|
return false;
|
|
135370
135412
|
}
|
|
135371
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
|
+
}
|
|
135372
135426
|
function getAllReferencesForKeyword(sourceFiles, keywordKind, cancellationToken, filter) {
|
|
135373
135427
|
var references = ts.flatMap(sourceFiles, function (sourceFile) {
|
|
135374
135428
|
cancellationToken.throwIfCancellationRequested();
|
|
@@ -137081,6 +137135,9 @@ var ts;
|
|
|
137081
137135
|
if (node === sourceFile) {
|
|
137082
137136
|
return undefined;
|
|
137083
137137
|
}
|
|
137138
|
+
if (ts.isImportMeta(node.parent) && node.parent.name === node) {
|
|
137139
|
+
return definitionFromType(typeChecker.getTypeAtLocation(node.parent), typeChecker, node.parent);
|
|
137140
|
+
}
|
|
137084
137141
|
var symbol = getSymbol(node, typeChecker);
|
|
137085
137142
|
if (!symbol)
|
|
137086
137143
|
return undefined;
|
|
@@ -162209,6 +162266,9 @@ var ts;
|
|
|
162209
162266
|
if (ts.isNamedTupleMember(node.parent) && node.pos === node.parent.pos) {
|
|
162210
162267
|
return node.parent;
|
|
162211
162268
|
}
|
|
162269
|
+
if (ts.isImportMeta(node.parent) && node.parent.name === node) {
|
|
162270
|
+
return node.parent;
|
|
162271
|
+
}
|
|
162212
162272
|
return node;
|
|
162213
162273
|
}
|
|
162214
162274
|
function shouldGetType(sourceFile, node, position) {
|
|
@@ -162224,6 +162284,8 @@ var ts;
|
|
|
162224
162284
|
case 106 /* SuperKeyword */:
|
|
162225
162285
|
case 196 /* NamedTupleMember */:
|
|
162226
162286
|
return true;
|
|
162287
|
+
case 230 /* MetaProperty */:
|
|
162288
|
+
return ts.isImportMeta(node);
|
|
162227
162289
|
default:
|
|
162228
162290
|
return false;
|
|
162229
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>;
|