typescript 5.4.0-dev.20231128 → 5.4.0-dev.20231130
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/lib.es2018.intl.d.ts +4 -3
- package/lib/lib.es2020.intl.d.ts +36 -16
- package/lib/lib.es2020.string.d.ts +14 -0
- package/lib/lib.es2021.intl.d.ts +2 -2
- package/lib/lib.es2022.intl.d.ts +2 -2
- package/lib/lib.es5.d.ts +15 -6
- package/lib/lib.esnext.d.ts +1 -0
- package/lib/lib.esnext.promise.d.ts +35 -0
- package/lib/tsc.js +83 -48
- package/lib/tsserver.js +135 -50
- package/lib/typescript.js +134 -50
- package/lib/typingsInstaller.js +23 -14
- package/package.json +2 -2
package/lib/tsserver.js
CHANGED
|
@@ -545,6 +545,7 @@ __export(server_exports, {
|
|
|
545
545
|
escapeNonAsciiString: () => escapeNonAsciiString,
|
|
546
546
|
escapeSnippetText: () => escapeSnippetText,
|
|
547
547
|
escapeString: () => escapeString,
|
|
548
|
+
escapeTemplateSubstitution: () => escapeTemplateSubstitution,
|
|
548
549
|
every: () => every,
|
|
549
550
|
expandPreOrPostfixIncrementOrDecrementExpression: () => expandPreOrPostfixIncrementOrDecrementExpression,
|
|
550
551
|
explainFiles: () => explainFiles,
|
|
@@ -2331,7 +2332,7 @@ module.exports = __toCommonJS(server_exports);
|
|
|
2331
2332
|
|
|
2332
2333
|
// src/compiler/corePublic.ts
|
|
2333
2334
|
var versionMajorMinor = "5.4";
|
|
2334
|
-
var version = `${versionMajorMinor}.0-dev.
|
|
2335
|
+
var version = `${versionMajorMinor}.0-dev.20231130`;
|
|
2335
2336
|
var Comparison = /* @__PURE__ */ ((Comparison3) => {
|
|
2336
2337
|
Comparison3[Comparison3["LessThan"] = -1] = "LessThan";
|
|
2337
2338
|
Comparison3[Comparison3["EqualTo"] = 0] = "EqualTo";
|
|
@@ -37122,18 +37123,7 @@ var Parser;
|
|
|
37122
37123
|
}
|
|
37123
37124
|
nextTokenJSDoc();
|
|
37124
37125
|
skipWhitespace();
|
|
37125
|
-
const
|
|
37126
|
-
let name = tokenIsIdentifierOrKeyword(token()) ? parseEntityName(
|
|
37127
|
-
/*allowReservedWords*/
|
|
37128
|
-
true
|
|
37129
|
-
) : void 0;
|
|
37130
|
-
if (name) {
|
|
37131
|
-
while (token() === 81 /* PrivateIdentifier */) {
|
|
37132
|
-
reScanHashToken();
|
|
37133
|
-
nextTokenJSDoc();
|
|
37134
|
-
name = finishNode(factory2.createJSDocMemberName(name, parseIdentifier()), p2);
|
|
37135
|
-
}
|
|
37136
|
-
}
|
|
37126
|
+
const name = parseJSDocLinkName();
|
|
37137
37127
|
const text = [];
|
|
37138
37128
|
while (token() !== 20 /* CloseBraceToken */ && token() !== 4 /* NewLineTrivia */ && token() !== 1 /* EndOfFileToken */) {
|
|
37139
37129
|
text.push(scanner2.getTokenText());
|
|
@@ -37142,6 +37132,26 @@ var Parser;
|
|
|
37142
37132
|
const create = linkType === "link" ? factory2.createJSDocLink : linkType === "linkcode" ? factory2.createJSDocLinkCode : factory2.createJSDocLinkPlain;
|
|
37143
37133
|
return finishNode(create(name, text.join("")), start3, scanner2.getTokenEnd());
|
|
37144
37134
|
}
|
|
37135
|
+
function parseJSDocLinkName() {
|
|
37136
|
+
if (tokenIsIdentifierOrKeyword(token())) {
|
|
37137
|
+
const pos = getNodePos();
|
|
37138
|
+
let name = parseIdentifierName();
|
|
37139
|
+
while (parseOptional(25 /* DotToken */)) {
|
|
37140
|
+
name = finishNode(factory2.createQualifiedName(name, token() === 81 /* PrivateIdentifier */ ? createMissingNode(
|
|
37141
|
+
80 /* Identifier */,
|
|
37142
|
+
/*reportAtCurrentPosition*/
|
|
37143
|
+
false
|
|
37144
|
+
) : parseIdentifier()), pos);
|
|
37145
|
+
}
|
|
37146
|
+
while (token() === 81 /* PrivateIdentifier */) {
|
|
37147
|
+
reScanHashToken();
|
|
37148
|
+
nextTokenJSDoc();
|
|
37149
|
+
name = finishNode(factory2.createJSDocMemberName(name, parseIdentifier()), pos);
|
|
37150
|
+
}
|
|
37151
|
+
return name;
|
|
37152
|
+
}
|
|
37153
|
+
return void 0;
|
|
37154
|
+
}
|
|
37145
37155
|
function parseJSDocLinkPrefix() {
|
|
37146
37156
|
skipWhitespaceOrAsterisk();
|
|
37147
37157
|
if (token() === 19 /* OpenBraceToken */ && nextTokenJSDoc() === 60 /* AtToken */ && tokenIsIdentifierOrKeyword(nextTokenJSDoc())) {
|
|
@@ -38314,7 +38324,7 @@ var libEntries = [
|
|
|
38314
38324
|
["esnext.disposable", "lib.esnext.disposable.d.ts"],
|
|
38315
38325
|
["esnext.bigint", "lib.es2020.bigint.d.ts"],
|
|
38316
38326
|
["esnext.string", "lib.es2022.string.d.ts"],
|
|
38317
|
-
["esnext.promise", "lib.
|
|
38327
|
+
["esnext.promise", "lib.esnext.promise.d.ts"],
|
|
38318
38328
|
["esnext.weakref", "lib.es2021.weakref.d.ts"],
|
|
38319
38329
|
["esnext.decorators", "lib.esnext.decorators.d.ts"],
|
|
38320
38330
|
["decorators", "lib.decorators.d.ts"],
|
|
@@ -46457,7 +46467,7 @@ function createBinder() {
|
|
|
46457
46467
|
}
|
|
46458
46468
|
function bindSpecialPropertyAssignment(node) {
|
|
46459
46469
|
var _a;
|
|
46460
|
-
const parentSymbol = lookupSymbolForPropertyAccess(node.left.expression,
|
|
46470
|
+
const parentSymbol = lookupSymbolForPropertyAccess(node.left.expression, blockScopeContainer) || lookupSymbolForPropertyAccess(node.left.expression, container);
|
|
46461
46471
|
if (!isInJSFile(node) && !isFunctionSymbol(parentSymbol)) {
|
|
46462
46472
|
return;
|
|
46463
46473
|
}
|
|
@@ -46555,7 +46565,7 @@ function createBinder() {
|
|
|
46555
46565
|
return isBinaryExpression(propertyAccess.parent) ? getParentOfBinaryExpression(propertyAccess.parent).parent.kind === 312 /* SourceFile */ : propertyAccess.parent.parent.kind === 312 /* SourceFile */;
|
|
46556
46566
|
}
|
|
46557
46567
|
function bindPropertyAssignment(name, propertyAccess, isPrototypeProperty, containerIsClass) {
|
|
46558
|
-
let namespaceSymbol = lookupSymbolForPropertyAccess(name,
|
|
46568
|
+
let namespaceSymbol = lookupSymbolForPropertyAccess(name, blockScopeContainer) || lookupSymbolForPropertyAccess(name, container);
|
|
46559
46569
|
const isToplevel = isTopLevelNamespaceAssignment(propertyAccess);
|
|
46560
46570
|
namespaceSymbol = bindPotentiallyMissingNamespaces(namespaceSymbol, propertyAccess.expression, isToplevel, isPrototypeProperty, containerIsClass);
|
|
46561
46571
|
bindPotentiallyNewExpandoMemberToNamespace(propertyAccess, namespaceSymbol, isPrototypeProperty);
|
|
@@ -59188,7 +59198,12 @@ function createTypeChecker(host) {
|
|
|
59188
59198
|
for (const current of type.types) {
|
|
59189
59199
|
for (const prop of getPropertiesOfType(current)) {
|
|
59190
59200
|
if (!members.has(prop.escapedName)) {
|
|
59191
|
-
const combinedProp = getPropertyOfUnionOrIntersectionType(
|
|
59201
|
+
const combinedProp = getPropertyOfUnionOrIntersectionType(
|
|
59202
|
+
type,
|
|
59203
|
+
prop.escapedName,
|
|
59204
|
+
/*skipObjectFunctionPropertyAugment*/
|
|
59205
|
+
!!(type.flags & 2097152 /* Intersection */)
|
|
59206
|
+
);
|
|
59192
59207
|
if (combinedProp) {
|
|
59193
59208
|
members.set(prop.escapedName, combinedProp);
|
|
59194
59209
|
}
|
|
@@ -59678,13 +59693,17 @@ function createTypeChecker(host) {
|
|
|
59678
59693
|
return result;
|
|
59679
59694
|
}
|
|
59680
59695
|
function getUnionOrIntersectionProperty(type, name, skipObjectFunctionPropertyAugment) {
|
|
59681
|
-
var _a, _b;
|
|
59696
|
+
var _a, _b, _c;
|
|
59682
59697
|
let property = ((_a = type.propertyCacheWithoutObjectFunctionPropertyAugment) == null ? void 0 : _a.get(name)) || !skipObjectFunctionPropertyAugment ? (_b = type.propertyCache) == null ? void 0 : _b.get(name) : void 0;
|
|
59683
59698
|
if (!property) {
|
|
59684
59699
|
property = createUnionOrIntersectionProperty(type, name, skipObjectFunctionPropertyAugment);
|
|
59685
59700
|
if (property) {
|
|
59686
59701
|
const properties = skipObjectFunctionPropertyAugment ? type.propertyCacheWithoutObjectFunctionPropertyAugment || (type.propertyCacheWithoutObjectFunctionPropertyAugment = createSymbolTable()) : type.propertyCache || (type.propertyCache = createSymbolTable());
|
|
59687
59702
|
properties.set(name, property);
|
|
59703
|
+
if (skipObjectFunctionPropertyAugment && !((_c = type.propertyCache) == null ? void 0 : _c.get(name))) {
|
|
59704
|
+
const properties2 = type.propertyCache || (type.propertyCache = createSymbolTable());
|
|
59705
|
+
properties2.set(name, property);
|
|
59706
|
+
}
|
|
59688
59707
|
}
|
|
59689
59708
|
}
|
|
59690
59709
|
return property;
|
|
@@ -59794,7 +59813,22 @@ function createTypeChecker(host) {
|
|
|
59794
59813
|
}
|
|
59795
59814
|
return getPropertyOfObjectType(globalObjectType, name);
|
|
59796
59815
|
}
|
|
59797
|
-
if (type.flags &
|
|
59816
|
+
if (type.flags & 2097152 /* Intersection */) {
|
|
59817
|
+
const prop = getPropertyOfUnionOrIntersectionType(
|
|
59818
|
+
type,
|
|
59819
|
+
name,
|
|
59820
|
+
/*skipObjectFunctionPropertyAugment*/
|
|
59821
|
+
true
|
|
59822
|
+
);
|
|
59823
|
+
if (prop) {
|
|
59824
|
+
return prop;
|
|
59825
|
+
}
|
|
59826
|
+
if (!skipObjectFunctionPropertyAugment) {
|
|
59827
|
+
return getPropertyOfUnionOrIntersectionType(type, name, skipObjectFunctionPropertyAugment);
|
|
59828
|
+
}
|
|
59829
|
+
return void 0;
|
|
59830
|
+
}
|
|
59831
|
+
if (type.flags & 1048576 /* Union */) {
|
|
59798
59832
|
return getPropertyOfUnionOrIntersectionType(type, name, skipObjectFunctionPropertyAugment);
|
|
59799
59833
|
}
|
|
59800
59834
|
return void 0;
|
|
@@ -68647,12 +68681,12 @@ function createTypeChecker(host) {
|
|
|
68647
68681
|
return false;
|
|
68648
68682
|
}
|
|
68649
68683
|
function isValidTypeForTemplateLiteralPlaceholder(source, target) {
|
|
68650
|
-
if (source === target || target.flags & (1 /* Any */ | 4 /* String */)) {
|
|
68651
|
-
return true;
|
|
68652
|
-
}
|
|
68653
68684
|
if (target.flags & 2097152 /* Intersection */) {
|
|
68654
68685
|
return every(target.types, (t) => t === emptyTypeLiteralType || isValidTypeForTemplateLiteralPlaceholder(source, t));
|
|
68655
68686
|
}
|
|
68687
|
+
if (target.flags & 4 /* String */ || isTypeAssignableTo(source, target)) {
|
|
68688
|
+
return true;
|
|
68689
|
+
}
|
|
68656
68690
|
if (source.flags & 128 /* StringLiteral */) {
|
|
68657
68691
|
const value = source.value;
|
|
68658
68692
|
return !!(target.flags & 8 /* Number */ && isValidNumberString(
|
|
@@ -68669,7 +68703,7 @@ function createTypeChecker(host) {
|
|
|
68669
68703
|
const texts = source.texts;
|
|
68670
68704
|
return texts.length === 2 && texts[0] === "" && texts[1] === "" && isTypeAssignableTo(source.types[0], target);
|
|
68671
68705
|
}
|
|
68672
|
-
return
|
|
68706
|
+
return false;
|
|
68673
68707
|
}
|
|
68674
68708
|
function inferTypesFromTemplateLiteralType(source, target) {
|
|
68675
68709
|
return source.flags & 128 /* StringLiteral */ ? inferFromLiteralPartsToTemplateLiteral([source.value], emptyArray, target) : source.flags & 134217728 /* TemplateLiteral */ ? arraysEqual(source.texts, target.texts) ? map(source.types, getStringLikeTypeForType) : inferFromLiteralPartsToTemplateLiteral(source.texts, source.types, target) : void 0;
|
|
@@ -71627,14 +71661,15 @@ function createTypeChecker(host) {
|
|
|
71627
71661
|
if (declaration) {
|
|
71628
71662
|
if (isBindingElement(declaration) && !declaration.initializer && !declaration.dotDotDotToken && declaration.parent.elements.length >= 2) {
|
|
71629
71663
|
const parent2 = declaration.parent.parent;
|
|
71630
|
-
|
|
71664
|
+
const rootDeclaration = getRootDeclaration(parent2);
|
|
71665
|
+
if (rootDeclaration.kind === 260 /* VariableDeclaration */ && getCombinedNodeFlagsCached(rootDeclaration) & 6 /* Constant */ || rootDeclaration.kind === 169 /* Parameter */) {
|
|
71631
71666
|
const links = getNodeLinks(parent2);
|
|
71632
71667
|
if (!(links.flags & 4194304 /* InCheckIdentifier */)) {
|
|
71633
71668
|
links.flags |= 4194304 /* InCheckIdentifier */;
|
|
71634
71669
|
const parentType = getTypeForBindingElementParent(parent2, 0 /* Normal */);
|
|
71635
71670
|
const parentTypeConstraint = parentType && mapType(parentType, getBaseConstraintOrType);
|
|
71636
71671
|
links.flags &= ~4194304 /* InCheckIdentifier */;
|
|
71637
|
-
if (parentTypeConstraint && parentTypeConstraint.flags & 1048576 /* Union */ && !(
|
|
71672
|
+
if (parentTypeConstraint && parentTypeConstraint.flags & 1048576 /* Union */ && !(rootDeclaration.kind === 169 /* Parameter */ && isSymbolAssigned(symbol))) {
|
|
71638
71673
|
const pattern = declaration.parent;
|
|
71639
71674
|
const narrowedType = getFlowTypeOfReference(
|
|
71640
71675
|
pattern,
|
|
@@ -75807,19 +75842,9 @@ function createTypeChecker(host) {
|
|
|
75807
75842
|
return Debug.fail();
|
|
75808
75843
|
}
|
|
75809
75844
|
}
|
|
75810
|
-
function getDiagnosticSpanForCallNode(node
|
|
75811
|
-
let start2;
|
|
75812
|
-
let length2;
|
|
75845
|
+
function getDiagnosticSpanForCallNode(node) {
|
|
75813
75846
|
const sourceFile = getSourceFileOfNode(node);
|
|
75814
|
-
|
|
75815
|
-
const nameSpan = getErrorSpanForNode(sourceFile, node.expression.name);
|
|
75816
|
-
start2 = nameSpan.start;
|
|
75817
|
-
length2 = doNotIncludeArguments ? nameSpan.length : node.end - start2;
|
|
75818
|
-
} else {
|
|
75819
|
-
const expressionSpan = getErrorSpanForNode(sourceFile, node.expression);
|
|
75820
|
-
start2 = expressionSpan.start;
|
|
75821
|
-
length2 = doNotIncludeArguments ? expressionSpan.length : node.end - start2;
|
|
75822
|
-
}
|
|
75847
|
+
const { start: start2, length: length2 } = getErrorSpanForNode(sourceFile, isPropertyAccessExpression(node.expression) ? node.expression.name : node.expression);
|
|
75823
75848
|
return { start: start2, length: length2, sourceFile };
|
|
75824
75849
|
}
|
|
75825
75850
|
function getDiagnosticForCallNode(node, message, ...args) {
|
|
@@ -75836,6 +75861,18 @@ function createTypeChecker(host) {
|
|
|
75836
75861
|
return createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(node), node, message);
|
|
75837
75862
|
}
|
|
75838
75863
|
}
|
|
75864
|
+
function getErrorNodeForCallNode(callLike) {
|
|
75865
|
+
if (isCallOrNewExpression(callLike)) {
|
|
75866
|
+
return isPropertyAccessExpression(callLike.expression) ? callLike.expression.name : callLike.expression;
|
|
75867
|
+
}
|
|
75868
|
+
if (isTaggedTemplateExpression(callLike)) {
|
|
75869
|
+
return isPropertyAccessExpression(callLike.tag) ? callLike.tag.name : callLike.tag;
|
|
75870
|
+
}
|
|
75871
|
+
if (isJsxOpeningLikeElement(callLike)) {
|
|
75872
|
+
return callLike.tagName;
|
|
75873
|
+
}
|
|
75874
|
+
return callLike;
|
|
75875
|
+
}
|
|
75839
75876
|
function isPromiseResolveArityError(node) {
|
|
75840
75877
|
if (!isCallExpression(node) || !isIdentifier(node.expression))
|
|
75841
75878
|
return false;
|
|
@@ -76137,7 +76174,7 @@ function createTypeChecker(host) {
|
|
|
76137
76174
|
const { file, start: start2, length: length2 } = diags[0];
|
|
76138
76175
|
diag2 = { file, start: start2, length: length2, code: chain.code, category: chain.category, messageText: chain, relatedInformation: related };
|
|
76139
76176
|
} else {
|
|
76140
|
-
diag2 = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(node), node, chain, related);
|
|
76177
|
+
diag2 = createDiagnosticForNodeFromMessageChain(getSourceFileOfNode(node), getErrorNodeForCallNode(node), chain, related);
|
|
76141
76178
|
}
|
|
76142
76179
|
addImplementationSuccessElaboration(candidatesForArgumentError[0], diag2);
|
|
76143
76180
|
diagnostics.add(diag2);
|
|
@@ -76665,11 +76702,7 @@ function createTypeChecker(host) {
|
|
|
76665
76702
|
addRelatedInfo(diagnostic, createDiagnosticForNode(errorTarget, relatedInfo));
|
|
76666
76703
|
}
|
|
76667
76704
|
if (isCallExpression(errorTarget.parent)) {
|
|
76668
|
-
const { start: start2, length: length2 } = getDiagnosticSpanForCallNode(
|
|
76669
|
-
errorTarget.parent,
|
|
76670
|
-
/*doNotIncludeArguments*/
|
|
76671
|
-
true
|
|
76672
|
-
);
|
|
76705
|
+
const { start: start2, length: length2 } = getDiagnosticSpanForCallNode(errorTarget.parent);
|
|
76673
76706
|
diagnostic.start = start2;
|
|
76674
76707
|
diagnostic.length = length2;
|
|
76675
76708
|
}
|
|
@@ -80039,16 +80072,19 @@ function createTypeChecker(host) {
|
|
|
80039
80072
|
}
|
|
80040
80073
|
}
|
|
80041
80074
|
}
|
|
80042
|
-
function
|
|
80075
|
+
function getNonGenericReturnTypeOfSingleCallSignature(funcType) {
|
|
80043
80076
|
const signature = getSingleCallSignature(funcType);
|
|
80044
|
-
if (signature
|
|
80045
|
-
|
|
80077
|
+
if (signature) {
|
|
80078
|
+
const returnType = getReturnTypeOfSignature(signature);
|
|
80079
|
+
if (!signature.typeParameters || !couldContainTypeVariables(returnType)) {
|
|
80080
|
+
return returnType;
|
|
80081
|
+
}
|
|
80046
80082
|
}
|
|
80047
80083
|
}
|
|
80048
80084
|
function getReturnTypeOfSingleNonGenericSignatureOfCallChain(expr) {
|
|
80049
80085
|
const funcType = checkExpression(expr.expression);
|
|
80050
80086
|
const nonOptionalType = getOptionalExpressionType(funcType, expr.expression);
|
|
80051
|
-
const returnType =
|
|
80087
|
+
const returnType = getNonGenericReturnTypeOfSingleCallSignature(funcType);
|
|
80052
80088
|
return returnType && propagateOptionalTypeMarker(returnType, expr, nonOptionalType !== funcType);
|
|
80053
80089
|
}
|
|
80054
80090
|
function getTypeOfExpression(node) {
|
|
@@ -80093,7 +80129,7 @@ function createTypeChecker(host) {
|
|
|
80093
80129
|
/*requireStringLiteralLikeArgument*/
|
|
80094
80130
|
true
|
|
80095
80131
|
) && !isSymbolOrSymbolForCall(expr)) {
|
|
80096
|
-
return isCallChain(expr) ? getReturnTypeOfSingleNonGenericSignatureOfCallChain(expr) :
|
|
80132
|
+
return isCallChain(expr) ? getReturnTypeOfSingleNonGenericSignatureOfCallChain(expr) : getNonGenericReturnTypeOfSingleCallSignature(checkNonNullExpression(expr.expression));
|
|
80097
80133
|
} else if (isAssertionExpression(expr) && !isConstTypeReference(expr.type)) {
|
|
80098
80134
|
return getTypeFromTypeNode(expr.type);
|
|
80099
80135
|
} else if (isLiteralExpression(node) || isBooleanLiteral(node)) {
|
|
@@ -165794,6 +165830,17 @@ function provideInlayHints(context) {
|
|
|
165794
165830
|
visitForDisplayParts(node.type);
|
|
165795
165831
|
}
|
|
165796
165832
|
break;
|
|
165833
|
+
case 181 /* IndexSignature */:
|
|
165834
|
+
Debug.assertNode(node, isIndexSignatureDeclaration);
|
|
165835
|
+
Debug.assertEqual(node.parameters.length, 1);
|
|
165836
|
+
parts.push({ text: "[" });
|
|
165837
|
+
visitForDisplayParts(node.parameters[0]);
|
|
165838
|
+
parts.push({ text: "]" });
|
|
165839
|
+
if (node.type) {
|
|
165840
|
+
parts.push({ text: ": " });
|
|
165841
|
+
visitForDisplayParts(node.type);
|
|
165842
|
+
}
|
|
165843
|
+
break;
|
|
165797
165844
|
case 173 /* MethodSignature */:
|
|
165798
165845
|
Debug.assertNode(node, isMethodSignature);
|
|
165799
165846
|
if ((_b = node.modifiers) == null ? void 0 : _b.length) {
|
|
@@ -165843,6 +165890,28 @@ function provideInlayHints(context) {
|
|
|
165843
165890
|
parts.push({ text: tokenToString(node.operator) });
|
|
165844
165891
|
visitForDisplayParts(node.operand);
|
|
165845
165892
|
break;
|
|
165893
|
+
case 203 /* TemplateLiteralType */:
|
|
165894
|
+
Debug.assertNode(node, isTemplateLiteralTypeNode);
|
|
165895
|
+
visitForDisplayParts(node.head);
|
|
165896
|
+
node.templateSpans.forEach(visitForDisplayParts);
|
|
165897
|
+
break;
|
|
165898
|
+
case 16 /* TemplateHead */:
|
|
165899
|
+
Debug.assertNode(node, isTemplateHead);
|
|
165900
|
+
parts.push({ text: getLiteralText2(node) });
|
|
165901
|
+
break;
|
|
165902
|
+
case 204 /* TemplateLiteralTypeSpan */:
|
|
165903
|
+
Debug.assertNode(node, isTemplateLiteralTypeSpan);
|
|
165904
|
+
visitForDisplayParts(node.type);
|
|
165905
|
+
visitForDisplayParts(node.literal);
|
|
165906
|
+
break;
|
|
165907
|
+
case 17 /* TemplateMiddle */:
|
|
165908
|
+
Debug.assertNode(node, isTemplateMiddle);
|
|
165909
|
+
parts.push({ text: getLiteralText2(node) });
|
|
165910
|
+
break;
|
|
165911
|
+
case 18 /* TemplateTail */:
|
|
165912
|
+
Debug.assertNode(node, isTemplateTail);
|
|
165913
|
+
parts.push({ text: getLiteralText2(node) });
|
|
165914
|
+
break;
|
|
165846
165915
|
case 197 /* ThisType */:
|
|
165847
165916
|
Debug.assertNode(node, isThisTypeNode);
|
|
165848
165917
|
parts.push({ text: "this" });
|
|
@@ -165870,8 +165939,22 @@ function provideInlayHints(context) {
|
|
|
165870
165939
|
});
|
|
165871
165940
|
}
|
|
165872
165941
|
function getLiteralText2(node) {
|
|
165873
|
-
|
|
165874
|
-
|
|
165942
|
+
switch (node.kind) {
|
|
165943
|
+
case 11 /* StringLiteral */:
|
|
165944
|
+
return quotePreference === 0 /* Single */ ? `'${escapeString(node.text, 39 /* singleQuote */)}'` : `"${escapeString(node.text, 34 /* doubleQuote */)}"`;
|
|
165945
|
+
case 16 /* TemplateHead */:
|
|
165946
|
+
case 17 /* TemplateMiddle */:
|
|
165947
|
+
case 18 /* TemplateTail */: {
|
|
165948
|
+
const rawText = node.rawText ?? escapeTemplateSubstitution(escapeString(node.text, 96 /* backtick */));
|
|
165949
|
+
switch (node.kind) {
|
|
165950
|
+
case 16 /* TemplateHead */:
|
|
165951
|
+
return "`" + rawText + "${";
|
|
165952
|
+
case 17 /* TemplateMiddle */:
|
|
165953
|
+
return "}" + rawText + "${";
|
|
165954
|
+
case 18 /* TemplateTail */:
|
|
165955
|
+
return "}" + rawText + "`";
|
|
165956
|
+
}
|
|
165957
|
+
}
|
|
165875
165958
|
}
|
|
165876
165959
|
return node.text;
|
|
165877
165960
|
}
|
|
@@ -173436,6 +173519,7 @@ __export(ts_exports2, {
|
|
|
173436
173519
|
escapeNonAsciiString: () => escapeNonAsciiString,
|
|
173437
173520
|
escapeSnippetText: () => escapeSnippetText,
|
|
173438
173521
|
escapeString: () => escapeString,
|
|
173522
|
+
escapeTemplateSubstitution: () => escapeTemplateSubstitution,
|
|
173439
173523
|
every: () => every,
|
|
173440
173524
|
expandPreOrPostfixIncrementOrDecrementExpression: () => expandPreOrPostfixIncrementOrDecrementExpression,
|
|
173441
173525
|
explainFiles: () => explainFiles,
|
|
@@ -188227,6 +188311,7 @@ start(initializeNodeSystem(), require("os").platform());
|
|
|
188227
188311
|
escapeNonAsciiString,
|
|
188228
188312
|
escapeSnippetText,
|
|
188229
188313
|
escapeString,
|
|
188314
|
+
escapeTemplateSubstitution,
|
|
188230
188315
|
every,
|
|
188231
188316
|
expandPreOrPostfixIncrementOrDecrementExpression,
|
|
188232
188317
|
explainFiles,
|