typescript 4.6.0-dev.20220114 → 4.6.0-dev.20220118
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 +1 -1
- package/lib/tsserver.js +65 -40
- package/lib/tsserverlibrary.js +65 -40
- package/lib/typescript.js +65 -40
- package/lib/typescriptServices.js +65 -40
- package/lib/typingsInstaller.js +1 -1
- 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.6";
|
|
72
|
-
ts.version = ts.versionMajorMinor + ".0-dev.
|
|
72
|
+
ts.version = ts.versionMajorMinor + ".0-dev.20220118";
|
|
73
73
|
var NativeCollections;
|
|
74
74
|
(function (NativeCollections) {
|
|
75
75
|
function tryGetNativeMap() {
|
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.20220118";
|
|
104
104
|
/* @internal */
|
|
105
105
|
var Comparison;
|
|
106
106
|
(function (Comparison) {
|
|
@@ -129113,7 +129113,7 @@ var ts;
|
|
|
129113
129113
|
return (location === null || location === void 0 ? void 0 : location.kind) === 79 /* Identifier */ ? ts.createTextSpanFromNode(location) : undefined;
|
|
129114
129114
|
}
|
|
129115
129115
|
function completionInfoFromData(sourceFile, host, program, compilerOptions, log, completionData, preferences, formatContext) {
|
|
129116
|
-
var symbols = completionData.symbols, contextToken = completionData.contextToken, completionKind = completionData.completionKind, isInSnippetScope = completionData.isInSnippetScope, isNewIdentifierLocation = completionData.isNewIdentifierLocation, location = completionData.location, propertyAccessToConvert = completionData.propertyAccessToConvert, keywordFilters = completionData.keywordFilters, literals = completionData.literals, symbolToOriginInfoMap = completionData.symbolToOriginInfoMap, recommendedCompletion = completionData.recommendedCompletion, isJsxInitializer = completionData.isJsxInitializer, isTypeOnlyLocation = completionData.isTypeOnlyLocation, isJsxIdentifierExpected = completionData.isJsxIdentifierExpected, importCompletionNode = completionData.importCompletionNode, insideJsDocTagTypeExpression = completionData.insideJsDocTagTypeExpression, symbolToSortTextIdMap = completionData.symbolToSortTextIdMap, hasUnresolvedAutoImports = completionData.hasUnresolvedAutoImports;
|
|
129116
|
+
var symbols = completionData.symbols, contextToken = completionData.contextToken, completionKind = completionData.completionKind, isInSnippetScope = completionData.isInSnippetScope, isNewIdentifierLocation = completionData.isNewIdentifierLocation, location = completionData.location, propertyAccessToConvert = completionData.propertyAccessToConvert, keywordFilters = completionData.keywordFilters, literals = completionData.literals, symbolToOriginInfoMap = completionData.symbolToOriginInfoMap, recommendedCompletion = completionData.recommendedCompletion, isJsxInitializer = completionData.isJsxInitializer, isTypeOnlyLocation = completionData.isTypeOnlyLocation, isJsxIdentifierExpected = completionData.isJsxIdentifierExpected, isRightOfOpenTag = completionData.isRightOfOpenTag, importCompletionNode = completionData.importCompletionNode, insideJsDocTagTypeExpression = completionData.insideJsDocTagTypeExpression, symbolToSortTextIdMap = completionData.symbolToSortTextIdMap, hasUnresolvedAutoImports = completionData.hasUnresolvedAutoImports;
|
|
129117
129117
|
// Verify if the file is JSX language variant
|
|
129118
129118
|
if (ts.getLanguageVariant(sourceFile.scriptKind) === 1 /* JSX */) {
|
|
129119
129119
|
var completionInfo = getJsxClosingTagCompletion(location, sourceFile);
|
|
@@ -129124,7 +129124,7 @@ var ts;
|
|
|
129124
129124
|
var entries = ts.createSortedArray();
|
|
129125
129125
|
if (isUncheckedFile(sourceFile, compilerOptions)) {
|
|
129126
129126
|
var uniqueNames = getCompletionEntriesFromSymbols(symbols, entries,
|
|
129127
|
-
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap);
|
|
129127
|
+
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap, isJsxIdentifierExpected, isRightOfOpenTag);
|
|
129128
129128
|
getJSCompletionEntries(sourceFile, location.pos, uniqueNames, ts.getEmitScriptTarget(compilerOptions), entries); // TODO: GH#18217
|
|
129129
129129
|
}
|
|
129130
129130
|
else {
|
|
@@ -129132,7 +129132,7 @@ var ts;
|
|
|
129132
129132
|
return undefined;
|
|
129133
129133
|
}
|
|
129134
129134
|
getCompletionEntriesFromSymbols(symbols, entries,
|
|
129135
|
-
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap);
|
|
129135
|
+
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap, isJsxIdentifierExpected, isRightOfOpenTag);
|
|
129136
129136
|
}
|
|
129137
129137
|
if (keywordFilters !== 0 /* None */) {
|
|
129138
129138
|
var entryNames = new ts.Set(entries.map(function (e) { return e.name; }));
|
|
@@ -129238,7 +129238,7 @@ var ts;
|
|
|
129238
129238
|
function createCompletionEntryForLiteral(sourceFile, preferences, literal) {
|
|
129239
129239
|
return { name: completionNameForLiteral(sourceFile, preferences, literal), kind: "string" /* string */, kindModifiers: "" /* none */, sortText: SortText.LocationPriority };
|
|
129240
129240
|
}
|
|
129241
|
-
function createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importCompletionNode, useSemicolons, options, preferences, completionKind, formatContext) {
|
|
129241
|
+
function createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importCompletionNode, useSemicolons, options, preferences, completionKind, formatContext, isJsxIdentifierExpected, isRightOfOpenTag) {
|
|
129242
129242
|
var _a, _b;
|
|
129243
129243
|
var insertText;
|
|
129244
129244
|
var replacementSpan = ts.getReplacementSpanForContextToken(replacementToken);
|
|
@@ -129309,8 +129309,7 @@ var ts;
|
|
|
129309
129309
|
source = CompletionSource.ClassMemberSnippet;
|
|
129310
129310
|
}
|
|
129311
129311
|
}
|
|
129312
|
-
|
|
129313
|
-
if (kind === "JSX attribute" /* jsxAttribute */ && preferences.includeCompletionsWithSnippetText && preferences.jsxAttributeCompletionStyle && preferences.jsxAttributeCompletionStyle !== "none") {
|
|
129312
|
+
if (isJsxIdentifierExpected && !isRightOfOpenTag && preferences.includeCompletionsWithSnippetText && preferences.jsxAttributeCompletionStyle && preferences.jsxAttributeCompletionStyle !== "none") {
|
|
129314
129313
|
var useBraces_1 = preferences.jsxAttributeCompletionStyle === "braces";
|
|
129315
129314
|
var type = typeChecker.getTypeOfSymbolAtLocation(symbol, location);
|
|
129316
129315
|
// If is boolean like or undefined, don't return a snippet we want just to return the completion.
|
|
@@ -129348,7 +129347,7 @@ var ts;
|
|
|
129348
129347
|
// entries (like JavaScript identifier entries).
|
|
129349
129348
|
return {
|
|
129350
129349
|
name: name,
|
|
129351
|
-
kind:
|
|
129350
|
+
kind: ts.SymbolDisplay.getSymbolKind(typeChecker, symbol, location),
|
|
129352
129351
|
kindModifiers: ts.SymbolDisplay.getSymbolModifiers(typeChecker, symbol),
|
|
129353
129352
|
sortText: sortText,
|
|
129354
129353
|
source: source,
|
|
@@ -129644,7 +129643,7 @@ var ts;
|
|
|
129644
129643
|
return CompletionSource.ThisProperty;
|
|
129645
129644
|
}
|
|
129646
129645
|
}
|
|
129647
|
-
function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, contextToken, location, sourceFile, host, program, target, log, kind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, jsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap) {
|
|
129646
|
+
function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, contextToken, location, sourceFile, host, program, target, log, kind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, jsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap, isJsxIdentifierExpected, isRightOfOpenTag) {
|
|
129648
129647
|
var _a;
|
|
129649
129648
|
var start = ts.timestamp();
|
|
129650
129649
|
var variableDeclaration = getVariableDeclaration(location);
|
|
@@ -129665,7 +129664,7 @@ var ts;
|
|
|
129665
129664
|
var name = info.name, needsConvertPropertyAccess = info.needsConvertPropertyAccess;
|
|
129666
129665
|
var sortTextId = (_a = symbolToSortTextIdMap === null || symbolToSortTextIdMap === void 0 ? void 0 : symbolToSortTextIdMap[ts.getSymbolId(symbol)]) !== null && _a !== void 0 ? _a : 11 /* LocationPriority */;
|
|
129667
129666
|
var sortText = (isDeprecated(symbol, typeChecker) ? 8 /* DeprecatedOffset */ + sortTextId : sortTextId).toString();
|
|
129668
|
-
var entry = createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importCompletionNode, useSemicolons, compilerOptions, preferences, kind, formatContext);
|
|
129667
|
+
var entry = createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importCompletionNode, useSemicolons, compilerOptions, preferences, kind, formatContext, isJsxIdentifierExpected, isRightOfOpenTag);
|
|
129669
129668
|
if (!entry) {
|
|
129670
129669
|
continue;
|
|
129671
129670
|
}
|
|
@@ -130259,6 +130258,7 @@ var ts;
|
|
|
130259
130258
|
symbolToSortTextIdMap: symbolToSortTextIdMap,
|
|
130260
130259
|
isTypeOnlyLocation: isTypeOnlyLocation,
|
|
130261
130260
|
isJsxIdentifierExpected: isJsxIdentifierExpected,
|
|
130261
|
+
isRightOfOpenTag: isRightOfOpenTag,
|
|
130262
130262
|
importCompletionNode: importCompletionNode,
|
|
130263
130263
|
hasUnresolvedAutoImports: hasUnresolvedAutoImports,
|
|
130264
130264
|
};
|
|
@@ -145238,7 +145238,11 @@ var ts;
|
|
|
145238
145238
|
oldTags[i] = merged;
|
|
145239
145239
|
return !!merged;
|
|
145240
145240
|
}); });
|
|
145241
|
-
var
|
|
145241
|
+
var tags = __spreadArray(__spreadArray([], oldTags, true), unmergedNewTags, true);
|
|
145242
|
+
var jsDoc = ts.singleOrUndefined(parent.jsDoc);
|
|
145243
|
+
var comment = jsDoc && ts.positionsAreOnSameLine(jsDoc.pos, jsDoc.end, sourceFile) && !ts.length(comments) ? undefined :
|
|
145244
|
+
ts.factory.createNodeArray(ts.intersperse(comments, ts.factory.createJSDocText("\n")));
|
|
145245
|
+
var tag = ts.factory.createJSDocComment(comment, ts.factory.createNodeArray(tags));
|
|
145242
145246
|
var host = updateJSDocHost(parent);
|
|
145243
145247
|
this.insertJsdocCommentBefore(sourceFile, host, tag);
|
|
145244
145248
|
};
|
|
@@ -145668,6 +145672,8 @@ var ts;
|
|
|
145668
145672
|
}
|
|
145669
145673
|
case 339 /* JSDocReturnTag */:
|
|
145670
145674
|
return ts.factory.createJSDocReturnTag(/*tagName*/ undefined, newTag.typeExpression, oldTag.comment);
|
|
145675
|
+
case 341 /* JSDocTypeTag */:
|
|
145676
|
+
return ts.factory.createJSDocTypeTag(/*tagName*/ undefined, newTag.typeExpression, oldTag.comment);
|
|
145671
145677
|
}
|
|
145672
145678
|
}
|
|
145673
145679
|
// find first non-whitespace position in the leading trivia of the node
|
|
@@ -149510,10 +149516,15 @@ var ts;
|
|
|
149510
149516
|
if (a.kind !== 0 /* UseNamespace */ && b.kind !== 0 /* UseNamespace */) {
|
|
149511
149517
|
return ts.compareBooleans(allowsImportingSpecifier(b.moduleSpecifier), allowsImportingSpecifier(a.moduleSpecifier))
|
|
149512
149518
|
|| compareNodeCoreModuleSpecifiers(a.moduleSpecifier, b.moduleSpecifier, importingFile, program)
|
|
149519
|
+
|| ts.compareBooleans(isOnlyDotsAndSlashes(a.moduleSpecifier), isOnlyDotsAndSlashes(b.moduleSpecifier))
|
|
149513
149520
|
|| ts.compareNumberOfDirectorySeparators(a.moduleSpecifier, b.moduleSpecifier);
|
|
149514
149521
|
}
|
|
149515
149522
|
return 0 /* EqualTo */;
|
|
149516
149523
|
}
|
|
149524
|
+
var notDotOrSlashPattern = /[^.\/]/;
|
|
149525
|
+
function isOnlyDotsAndSlashes(path) {
|
|
149526
|
+
return !notDotOrSlashPattern.test(path);
|
|
149527
|
+
}
|
|
149517
149528
|
function compareNodeCoreModuleSpecifiers(a, b, importingFile, program) {
|
|
149518
149529
|
if (ts.startsWith(a, "node:") && !ts.startsWith(b, "node:"))
|
|
149519
149530
|
return ts.shouldUseUriStyleNodeCoreModules(importingFile, program) ? -1 /* LessThan */ : 1 /* GreaterThan */;
|
|
@@ -154126,35 +154137,34 @@ var ts;
|
|
|
154126
154137
|
codefix.registerCodeFix({
|
|
154127
154138
|
errorCodes: errorCodes,
|
|
154128
154139
|
getCodeActions: function getCodeActionsForStrictClassInitializationErrors(context) {
|
|
154129
|
-
var
|
|
154130
|
-
if (!
|
|
154140
|
+
var info = getInfo(context.sourceFile, context.span.start);
|
|
154141
|
+
if (!info)
|
|
154131
154142
|
return;
|
|
154132
|
-
var result = [
|
|
154133
|
-
|
|
154134
|
-
|
|
154135
|
-
|
|
154136
|
-
ts.append(result, getActionForAddMissingInitializer(context, propertyDeclaration));
|
|
154143
|
+
var result = [];
|
|
154144
|
+
ts.append(result, getActionForAddMissingUndefinedType(context, info));
|
|
154145
|
+
ts.append(result, getActionForAddMissingDefiniteAssignmentAssertion(context, info));
|
|
154146
|
+
ts.append(result, getActionForAddMissingInitializer(context, info));
|
|
154137
154147
|
return result;
|
|
154138
154148
|
},
|
|
154139
154149
|
fixIds: [fixIdAddDefiniteAssignmentAssertions, fixIdAddUndefinedType, fixIdAddInitializer],
|
|
154140
154150
|
getAllCodeActions: function (context) {
|
|
154141
154151
|
return codefix.codeFixAll(context, errorCodes, function (changes, diag) {
|
|
154142
|
-
var
|
|
154143
|
-
if (!
|
|
154152
|
+
var info = getInfo(diag.file, diag.start);
|
|
154153
|
+
if (!info)
|
|
154144
154154
|
return;
|
|
154145
154155
|
switch (context.fixId) {
|
|
154146
154156
|
case fixIdAddDefiniteAssignmentAssertions:
|
|
154147
|
-
addDefiniteAssignmentAssertion(changes, diag.file,
|
|
154157
|
+
addDefiniteAssignmentAssertion(changes, diag.file, info.prop);
|
|
154148
154158
|
break;
|
|
154149
154159
|
case fixIdAddUndefinedType:
|
|
154150
|
-
addUndefinedType(changes, diag.file,
|
|
154160
|
+
addUndefinedType(changes, diag.file, info);
|
|
154151
154161
|
break;
|
|
154152
154162
|
case fixIdAddInitializer:
|
|
154153
154163
|
var checker = context.program.getTypeChecker();
|
|
154154
|
-
var initializer = getInitializer(checker,
|
|
154164
|
+
var initializer = getInitializer(checker, info.prop);
|
|
154155
154165
|
if (!initializer)
|
|
154156
154166
|
return;
|
|
154157
|
-
addInitializer(changes, diag.file,
|
|
154167
|
+
addInitializer(changes, diag.file, info.prop, initializer);
|
|
154158
154168
|
break;
|
|
154159
154169
|
default:
|
|
154160
154170
|
ts.Debug.fail(JSON.stringify(context.fixId));
|
|
@@ -154162,35 +154172,50 @@ var ts;
|
|
|
154162
154172
|
});
|
|
154163
154173
|
},
|
|
154164
154174
|
});
|
|
154165
|
-
function
|
|
154175
|
+
function getInfo(sourceFile, pos) {
|
|
154166
154176
|
var token = ts.getTokenAtPosition(sourceFile, pos);
|
|
154167
|
-
|
|
154177
|
+
if (ts.isIdentifier(token) && ts.isPropertyDeclaration(token.parent)) {
|
|
154178
|
+
var type = ts.getEffectiveTypeAnnotationNode(token.parent);
|
|
154179
|
+
if (type) {
|
|
154180
|
+
return { type: type, prop: token.parent, isJs: ts.isInJSFile(token.parent) };
|
|
154181
|
+
}
|
|
154182
|
+
}
|
|
154183
|
+
return undefined;
|
|
154168
154184
|
}
|
|
154169
|
-
function getActionForAddMissingDefiniteAssignmentAssertion(context,
|
|
154170
|
-
|
|
154171
|
-
|
|
154185
|
+
function getActionForAddMissingDefiniteAssignmentAssertion(context, info) {
|
|
154186
|
+
if (info.isJs)
|
|
154187
|
+
return undefined;
|
|
154188
|
+
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addDefiniteAssignmentAssertion(t, context.sourceFile, info.prop); });
|
|
154189
|
+
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_definite_assignment_assertion_to_property_0, info.prop.getText()], fixIdAddDefiniteAssignmentAssertions, ts.Diagnostics.Add_definite_assignment_assertions_to_all_uninitialized_properties);
|
|
154172
154190
|
}
|
|
154173
154191
|
function addDefiniteAssignmentAssertion(changeTracker, propertyDeclarationSourceFile, propertyDeclaration) {
|
|
154174
154192
|
var property = ts.factory.updatePropertyDeclaration(propertyDeclaration, propertyDeclaration.decorators, propertyDeclaration.modifiers, propertyDeclaration.name, ts.factory.createToken(53 /* ExclamationToken */), propertyDeclaration.type, propertyDeclaration.initializer);
|
|
154175
154193
|
changeTracker.replaceNode(propertyDeclarationSourceFile, propertyDeclaration, property);
|
|
154176
154194
|
}
|
|
154177
|
-
function getActionForAddMissingUndefinedType(context,
|
|
154178
|
-
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addUndefinedType(t, context.sourceFile,
|
|
154179
|
-
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_undefined_type_to_property_0,
|
|
154195
|
+
function getActionForAddMissingUndefinedType(context, info) {
|
|
154196
|
+
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addUndefinedType(t, context.sourceFile, info); });
|
|
154197
|
+
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_undefined_type_to_property_0, info.prop.name.getText()], fixIdAddUndefinedType, ts.Diagnostics.Add_undefined_type_to_all_uninitialized_properties);
|
|
154180
154198
|
}
|
|
154181
|
-
function addUndefinedType(changeTracker,
|
|
154199
|
+
function addUndefinedType(changeTracker, sourceFile, info) {
|
|
154182
154200
|
var undefinedTypeNode = ts.factory.createKeywordTypeNode(152 /* UndefinedKeyword */);
|
|
154183
|
-
var
|
|
154184
|
-
var
|
|
154185
|
-
|
|
154201
|
+
var types = ts.isUnionTypeNode(info.type) ? info.type.types.concat(undefinedTypeNode) : [info.type, undefinedTypeNode];
|
|
154202
|
+
var unionTypeNode = ts.factory.createUnionTypeNode(types);
|
|
154203
|
+
if (info.isJs) {
|
|
154204
|
+
changeTracker.addJSDocTags(sourceFile, info.prop, [ts.factory.createJSDocTypeTag(/*tagName*/ undefined, ts.factory.createJSDocTypeExpression(unionTypeNode))]);
|
|
154205
|
+
}
|
|
154206
|
+
else {
|
|
154207
|
+
changeTracker.replaceNode(sourceFile, info.type, unionTypeNode);
|
|
154208
|
+
}
|
|
154186
154209
|
}
|
|
154187
|
-
function getActionForAddMissingInitializer(context,
|
|
154210
|
+
function getActionForAddMissingInitializer(context, info) {
|
|
154211
|
+
if (info.isJs)
|
|
154212
|
+
return undefined;
|
|
154188
154213
|
var checker = context.program.getTypeChecker();
|
|
154189
|
-
var initializer = getInitializer(checker,
|
|
154214
|
+
var initializer = getInitializer(checker, info.prop);
|
|
154190
154215
|
if (!initializer)
|
|
154191
154216
|
return undefined;
|
|
154192
|
-
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addInitializer(t, context.sourceFile,
|
|
154193
|
-
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_initializer_to_property_0,
|
|
154217
|
+
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addInitializer(t, context.sourceFile, info.prop, initializer); });
|
|
154218
|
+
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_initializer_to_property_0, info.prop.name.getText()], fixIdAddInitializer, ts.Diagnostics.Add_initializers_to_all_uninitialized_properties);
|
|
154194
154219
|
}
|
|
154195
154220
|
function addInitializer(changeTracker, propertyDeclarationSourceFile, propertyDeclaration, initializer) {
|
|
154196
154221
|
var property = ts.factory.updatePropertyDeclaration(propertyDeclaration, propertyDeclaration.decorators, propertyDeclaration.modifiers, propertyDeclaration.name, propertyDeclaration.questionToken, propertyDeclaration.type, initializer);
|
package/lib/tsserverlibrary.js
CHANGED
|
@@ -294,7 +294,7 @@ var ts;
|
|
|
294
294
|
// The following is baselined as a literal template type without intervention
|
|
295
295
|
/** The version of the TypeScript compiler release */
|
|
296
296
|
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
|
|
297
|
-
ts.version = ts.versionMajorMinor + ".0-dev.
|
|
297
|
+
ts.version = ts.versionMajorMinor + ".0-dev.20220118";
|
|
298
298
|
/* @internal */
|
|
299
299
|
var Comparison;
|
|
300
300
|
(function (Comparison) {
|
|
@@ -129724,7 +129724,7 @@ var ts;
|
|
|
129724
129724
|
return (location === null || location === void 0 ? void 0 : location.kind) === 79 /* Identifier */ ? ts.createTextSpanFromNode(location) : undefined;
|
|
129725
129725
|
}
|
|
129726
129726
|
function completionInfoFromData(sourceFile, host, program, compilerOptions, log, completionData, preferences, formatContext) {
|
|
129727
|
-
var symbols = completionData.symbols, contextToken = completionData.contextToken, completionKind = completionData.completionKind, isInSnippetScope = completionData.isInSnippetScope, isNewIdentifierLocation = completionData.isNewIdentifierLocation, location = completionData.location, propertyAccessToConvert = completionData.propertyAccessToConvert, keywordFilters = completionData.keywordFilters, literals = completionData.literals, symbolToOriginInfoMap = completionData.symbolToOriginInfoMap, recommendedCompletion = completionData.recommendedCompletion, isJsxInitializer = completionData.isJsxInitializer, isTypeOnlyLocation = completionData.isTypeOnlyLocation, isJsxIdentifierExpected = completionData.isJsxIdentifierExpected, importCompletionNode = completionData.importCompletionNode, insideJsDocTagTypeExpression = completionData.insideJsDocTagTypeExpression, symbolToSortTextIdMap = completionData.symbolToSortTextIdMap, hasUnresolvedAutoImports = completionData.hasUnresolvedAutoImports;
|
|
129727
|
+
var symbols = completionData.symbols, contextToken = completionData.contextToken, completionKind = completionData.completionKind, isInSnippetScope = completionData.isInSnippetScope, isNewIdentifierLocation = completionData.isNewIdentifierLocation, location = completionData.location, propertyAccessToConvert = completionData.propertyAccessToConvert, keywordFilters = completionData.keywordFilters, literals = completionData.literals, symbolToOriginInfoMap = completionData.symbolToOriginInfoMap, recommendedCompletion = completionData.recommendedCompletion, isJsxInitializer = completionData.isJsxInitializer, isTypeOnlyLocation = completionData.isTypeOnlyLocation, isJsxIdentifierExpected = completionData.isJsxIdentifierExpected, isRightOfOpenTag = completionData.isRightOfOpenTag, importCompletionNode = completionData.importCompletionNode, insideJsDocTagTypeExpression = completionData.insideJsDocTagTypeExpression, symbolToSortTextIdMap = completionData.symbolToSortTextIdMap, hasUnresolvedAutoImports = completionData.hasUnresolvedAutoImports;
|
|
129728
129728
|
// Verify if the file is JSX language variant
|
|
129729
129729
|
if (ts.getLanguageVariant(sourceFile.scriptKind) === 1 /* JSX */) {
|
|
129730
129730
|
var completionInfo = getJsxClosingTagCompletion(location, sourceFile);
|
|
@@ -129735,7 +129735,7 @@ var ts;
|
|
|
129735
129735
|
var entries = ts.createSortedArray();
|
|
129736
129736
|
if (isUncheckedFile(sourceFile, compilerOptions)) {
|
|
129737
129737
|
var uniqueNames = getCompletionEntriesFromSymbols(symbols, entries,
|
|
129738
|
-
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap);
|
|
129738
|
+
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap, isJsxIdentifierExpected, isRightOfOpenTag);
|
|
129739
129739
|
getJSCompletionEntries(sourceFile, location.pos, uniqueNames, ts.getEmitScriptTarget(compilerOptions), entries); // TODO: GH#18217
|
|
129740
129740
|
}
|
|
129741
129741
|
else {
|
|
@@ -129743,7 +129743,7 @@ var ts;
|
|
|
129743
129743
|
return undefined;
|
|
129744
129744
|
}
|
|
129745
129745
|
getCompletionEntriesFromSymbols(symbols, entries,
|
|
129746
|
-
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap);
|
|
129746
|
+
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap, isJsxIdentifierExpected, isRightOfOpenTag);
|
|
129747
129747
|
}
|
|
129748
129748
|
if (keywordFilters !== 0 /* None */) {
|
|
129749
129749
|
var entryNames = new ts.Set(entries.map(function (e) { return e.name; }));
|
|
@@ -129849,7 +129849,7 @@ var ts;
|
|
|
129849
129849
|
function createCompletionEntryForLiteral(sourceFile, preferences, literal) {
|
|
129850
129850
|
return { name: completionNameForLiteral(sourceFile, preferences, literal), kind: "string" /* string */, kindModifiers: "" /* none */, sortText: SortText.LocationPriority };
|
|
129851
129851
|
}
|
|
129852
|
-
function createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importCompletionNode, useSemicolons, options, preferences, completionKind, formatContext) {
|
|
129852
|
+
function createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importCompletionNode, useSemicolons, options, preferences, completionKind, formatContext, isJsxIdentifierExpected, isRightOfOpenTag) {
|
|
129853
129853
|
var _a, _b;
|
|
129854
129854
|
var insertText;
|
|
129855
129855
|
var replacementSpan = ts.getReplacementSpanForContextToken(replacementToken);
|
|
@@ -129920,8 +129920,7 @@ var ts;
|
|
|
129920
129920
|
source = CompletionSource.ClassMemberSnippet;
|
|
129921
129921
|
}
|
|
129922
129922
|
}
|
|
129923
|
-
|
|
129924
|
-
if (kind === "JSX attribute" /* jsxAttribute */ && preferences.includeCompletionsWithSnippetText && preferences.jsxAttributeCompletionStyle && preferences.jsxAttributeCompletionStyle !== "none") {
|
|
129923
|
+
if (isJsxIdentifierExpected && !isRightOfOpenTag && preferences.includeCompletionsWithSnippetText && preferences.jsxAttributeCompletionStyle && preferences.jsxAttributeCompletionStyle !== "none") {
|
|
129925
129924
|
var useBraces_1 = preferences.jsxAttributeCompletionStyle === "braces";
|
|
129926
129925
|
var type = typeChecker.getTypeOfSymbolAtLocation(symbol, location);
|
|
129927
129926
|
// If is boolean like or undefined, don't return a snippet we want just to return the completion.
|
|
@@ -129959,7 +129958,7 @@ var ts;
|
|
|
129959
129958
|
// entries (like JavaScript identifier entries).
|
|
129960
129959
|
return {
|
|
129961
129960
|
name: name,
|
|
129962
|
-
kind:
|
|
129961
|
+
kind: ts.SymbolDisplay.getSymbolKind(typeChecker, symbol, location),
|
|
129963
129962
|
kindModifiers: ts.SymbolDisplay.getSymbolModifiers(typeChecker, symbol),
|
|
129964
129963
|
sortText: sortText,
|
|
129965
129964
|
source: source,
|
|
@@ -130255,7 +130254,7 @@ var ts;
|
|
|
130255
130254
|
return CompletionSource.ThisProperty;
|
|
130256
130255
|
}
|
|
130257
130256
|
}
|
|
130258
|
-
function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, contextToken, location, sourceFile, host, program, target, log, kind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, jsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap) {
|
|
130257
|
+
function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, contextToken, location, sourceFile, host, program, target, log, kind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, jsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap, isJsxIdentifierExpected, isRightOfOpenTag) {
|
|
130259
130258
|
var _a;
|
|
130260
130259
|
var start = ts.timestamp();
|
|
130261
130260
|
var variableDeclaration = getVariableDeclaration(location);
|
|
@@ -130276,7 +130275,7 @@ var ts;
|
|
|
130276
130275
|
var name = info.name, needsConvertPropertyAccess = info.needsConvertPropertyAccess;
|
|
130277
130276
|
var sortTextId = (_a = symbolToSortTextIdMap === null || symbolToSortTextIdMap === void 0 ? void 0 : symbolToSortTextIdMap[ts.getSymbolId(symbol)]) !== null && _a !== void 0 ? _a : 11 /* LocationPriority */;
|
|
130278
130277
|
var sortText = (isDeprecated(symbol, typeChecker) ? 8 /* DeprecatedOffset */ + sortTextId : sortTextId).toString();
|
|
130279
|
-
var entry = createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importCompletionNode, useSemicolons, compilerOptions, preferences, kind, formatContext);
|
|
130278
|
+
var entry = createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importCompletionNode, useSemicolons, compilerOptions, preferences, kind, formatContext, isJsxIdentifierExpected, isRightOfOpenTag);
|
|
130280
130279
|
if (!entry) {
|
|
130281
130280
|
continue;
|
|
130282
130281
|
}
|
|
@@ -130870,6 +130869,7 @@ var ts;
|
|
|
130870
130869
|
symbolToSortTextIdMap: symbolToSortTextIdMap,
|
|
130871
130870
|
isTypeOnlyLocation: isTypeOnlyLocation,
|
|
130872
130871
|
isJsxIdentifierExpected: isJsxIdentifierExpected,
|
|
130872
|
+
isRightOfOpenTag: isRightOfOpenTag,
|
|
130873
130873
|
importCompletionNode: importCompletionNode,
|
|
130874
130874
|
hasUnresolvedAutoImports: hasUnresolvedAutoImports,
|
|
130875
130875
|
};
|
|
@@ -145849,7 +145849,11 @@ var ts;
|
|
|
145849
145849
|
oldTags[i] = merged;
|
|
145850
145850
|
return !!merged;
|
|
145851
145851
|
}); });
|
|
145852
|
-
var
|
|
145852
|
+
var tags = __spreadArray(__spreadArray([], oldTags, true), unmergedNewTags, true);
|
|
145853
|
+
var jsDoc = ts.singleOrUndefined(parent.jsDoc);
|
|
145854
|
+
var comment = jsDoc && ts.positionsAreOnSameLine(jsDoc.pos, jsDoc.end, sourceFile) && !ts.length(comments) ? undefined :
|
|
145855
|
+
ts.factory.createNodeArray(ts.intersperse(comments, ts.factory.createJSDocText("\n")));
|
|
145856
|
+
var tag = ts.factory.createJSDocComment(comment, ts.factory.createNodeArray(tags));
|
|
145853
145857
|
var host = updateJSDocHost(parent);
|
|
145854
145858
|
this.insertJsdocCommentBefore(sourceFile, host, tag);
|
|
145855
145859
|
};
|
|
@@ -146279,6 +146283,8 @@ var ts;
|
|
|
146279
146283
|
}
|
|
146280
146284
|
case 339 /* JSDocReturnTag */:
|
|
146281
146285
|
return ts.factory.createJSDocReturnTag(/*tagName*/ undefined, newTag.typeExpression, oldTag.comment);
|
|
146286
|
+
case 341 /* JSDocTypeTag */:
|
|
146287
|
+
return ts.factory.createJSDocTypeTag(/*tagName*/ undefined, newTag.typeExpression, oldTag.comment);
|
|
146282
146288
|
}
|
|
146283
146289
|
}
|
|
146284
146290
|
// find first non-whitespace position in the leading trivia of the node
|
|
@@ -150121,10 +150127,15 @@ var ts;
|
|
|
150121
150127
|
if (a.kind !== 0 /* UseNamespace */ && b.kind !== 0 /* UseNamespace */) {
|
|
150122
150128
|
return ts.compareBooleans(allowsImportingSpecifier(b.moduleSpecifier), allowsImportingSpecifier(a.moduleSpecifier))
|
|
150123
150129
|
|| compareNodeCoreModuleSpecifiers(a.moduleSpecifier, b.moduleSpecifier, importingFile, program)
|
|
150130
|
+
|| ts.compareBooleans(isOnlyDotsAndSlashes(a.moduleSpecifier), isOnlyDotsAndSlashes(b.moduleSpecifier))
|
|
150124
150131
|
|| ts.compareNumberOfDirectorySeparators(a.moduleSpecifier, b.moduleSpecifier);
|
|
150125
150132
|
}
|
|
150126
150133
|
return 0 /* EqualTo */;
|
|
150127
150134
|
}
|
|
150135
|
+
var notDotOrSlashPattern = /[^.\/]/;
|
|
150136
|
+
function isOnlyDotsAndSlashes(path) {
|
|
150137
|
+
return !notDotOrSlashPattern.test(path);
|
|
150138
|
+
}
|
|
150128
150139
|
function compareNodeCoreModuleSpecifiers(a, b, importingFile, program) {
|
|
150129
150140
|
if (ts.startsWith(a, "node:") && !ts.startsWith(b, "node:"))
|
|
150130
150141
|
return ts.shouldUseUriStyleNodeCoreModules(importingFile, program) ? -1 /* LessThan */ : 1 /* GreaterThan */;
|
|
@@ -154737,35 +154748,34 @@ var ts;
|
|
|
154737
154748
|
codefix.registerCodeFix({
|
|
154738
154749
|
errorCodes: errorCodes,
|
|
154739
154750
|
getCodeActions: function getCodeActionsForStrictClassInitializationErrors(context) {
|
|
154740
|
-
var
|
|
154741
|
-
if (!
|
|
154751
|
+
var info = getInfo(context.sourceFile, context.span.start);
|
|
154752
|
+
if (!info)
|
|
154742
154753
|
return;
|
|
154743
|
-
var result = [
|
|
154744
|
-
|
|
154745
|
-
|
|
154746
|
-
|
|
154747
|
-
ts.append(result, getActionForAddMissingInitializer(context, propertyDeclaration));
|
|
154754
|
+
var result = [];
|
|
154755
|
+
ts.append(result, getActionForAddMissingUndefinedType(context, info));
|
|
154756
|
+
ts.append(result, getActionForAddMissingDefiniteAssignmentAssertion(context, info));
|
|
154757
|
+
ts.append(result, getActionForAddMissingInitializer(context, info));
|
|
154748
154758
|
return result;
|
|
154749
154759
|
},
|
|
154750
154760
|
fixIds: [fixIdAddDefiniteAssignmentAssertions, fixIdAddUndefinedType, fixIdAddInitializer],
|
|
154751
154761
|
getAllCodeActions: function (context) {
|
|
154752
154762
|
return codefix.codeFixAll(context, errorCodes, function (changes, diag) {
|
|
154753
|
-
var
|
|
154754
|
-
if (!
|
|
154763
|
+
var info = getInfo(diag.file, diag.start);
|
|
154764
|
+
if (!info)
|
|
154755
154765
|
return;
|
|
154756
154766
|
switch (context.fixId) {
|
|
154757
154767
|
case fixIdAddDefiniteAssignmentAssertions:
|
|
154758
|
-
addDefiniteAssignmentAssertion(changes, diag.file,
|
|
154768
|
+
addDefiniteAssignmentAssertion(changes, diag.file, info.prop);
|
|
154759
154769
|
break;
|
|
154760
154770
|
case fixIdAddUndefinedType:
|
|
154761
|
-
addUndefinedType(changes, diag.file,
|
|
154771
|
+
addUndefinedType(changes, diag.file, info);
|
|
154762
154772
|
break;
|
|
154763
154773
|
case fixIdAddInitializer:
|
|
154764
154774
|
var checker = context.program.getTypeChecker();
|
|
154765
|
-
var initializer = getInitializer(checker,
|
|
154775
|
+
var initializer = getInitializer(checker, info.prop);
|
|
154766
154776
|
if (!initializer)
|
|
154767
154777
|
return;
|
|
154768
|
-
addInitializer(changes, diag.file,
|
|
154778
|
+
addInitializer(changes, diag.file, info.prop, initializer);
|
|
154769
154779
|
break;
|
|
154770
154780
|
default:
|
|
154771
154781
|
ts.Debug.fail(JSON.stringify(context.fixId));
|
|
@@ -154773,35 +154783,50 @@ var ts;
|
|
|
154773
154783
|
});
|
|
154774
154784
|
},
|
|
154775
154785
|
});
|
|
154776
|
-
function
|
|
154786
|
+
function getInfo(sourceFile, pos) {
|
|
154777
154787
|
var token = ts.getTokenAtPosition(sourceFile, pos);
|
|
154778
|
-
|
|
154788
|
+
if (ts.isIdentifier(token) && ts.isPropertyDeclaration(token.parent)) {
|
|
154789
|
+
var type = ts.getEffectiveTypeAnnotationNode(token.parent);
|
|
154790
|
+
if (type) {
|
|
154791
|
+
return { type: type, prop: token.parent, isJs: ts.isInJSFile(token.parent) };
|
|
154792
|
+
}
|
|
154793
|
+
}
|
|
154794
|
+
return undefined;
|
|
154779
154795
|
}
|
|
154780
|
-
function getActionForAddMissingDefiniteAssignmentAssertion(context,
|
|
154781
|
-
|
|
154782
|
-
|
|
154796
|
+
function getActionForAddMissingDefiniteAssignmentAssertion(context, info) {
|
|
154797
|
+
if (info.isJs)
|
|
154798
|
+
return undefined;
|
|
154799
|
+
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addDefiniteAssignmentAssertion(t, context.sourceFile, info.prop); });
|
|
154800
|
+
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_definite_assignment_assertion_to_property_0, info.prop.getText()], fixIdAddDefiniteAssignmentAssertions, ts.Diagnostics.Add_definite_assignment_assertions_to_all_uninitialized_properties);
|
|
154783
154801
|
}
|
|
154784
154802
|
function addDefiniteAssignmentAssertion(changeTracker, propertyDeclarationSourceFile, propertyDeclaration) {
|
|
154785
154803
|
var property = ts.factory.updatePropertyDeclaration(propertyDeclaration, propertyDeclaration.decorators, propertyDeclaration.modifiers, propertyDeclaration.name, ts.factory.createToken(53 /* ExclamationToken */), propertyDeclaration.type, propertyDeclaration.initializer);
|
|
154786
154804
|
changeTracker.replaceNode(propertyDeclarationSourceFile, propertyDeclaration, property);
|
|
154787
154805
|
}
|
|
154788
|
-
function getActionForAddMissingUndefinedType(context,
|
|
154789
|
-
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addUndefinedType(t, context.sourceFile,
|
|
154790
|
-
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_undefined_type_to_property_0,
|
|
154806
|
+
function getActionForAddMissingUndefinedType(context, info) {
|
|
154807
|
+
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addUndefinedType(t, context.sourceFile, info); });
|
|
154808
|
+
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_undefined_type_to_property_0, info.prop.name.getText()], fixIdAddUndefinedType, ts.Diagnostics.Add_undefined_type_to_all_uninitialized_properties);
|
|
154791
154809
|
}
|
|
154792
|
-
function addUndefinedType(changeTracker,
|
|
154810
|
+
function addUndefinedType(changeTracker, sourceFile, info) {
|
|
154793
154811
|
var undefinedTypeNode = ts.factory.createKeywordTypeNode(152 /* UndefinedKeyword */);
|
|
154794
|
-
var
|
|
154795
|
-
var
|
|
154796
|
-
|
|
154812
|
+
var types = ts.isUnionTypeNode(info.type) ? info.type.types.concat(undefinedTypeNode) : [info.type, undefinedTypeNode];
|
|
154813
|
+
var unionTypeNode = ts.factory.createUnionTypeNode(types);
|
|
154814
|
+
if (info.isJs) {
|
|
154815
|
+
changeTracker.addJSDocTags(sourceFile, info.prop, [ts.factory.createJSDocTypeTag(/*tagName*/ undefined, ts.factory.createJSDocTypeExpression(unionTypeNode))]);
|
|
154816
|
+
}
|
|
154817
|
+
else {
|
|
154818
|
+
changeTracker.replaceNode(sourceFile, info.type, unionTypeNode);
|
|
154819
|
+
}
|
|
154797
154820
|
}
|
|
154798
|
-
function getActionForAddMissingInitializer(context,
|
|
154821
|
+
function getActionForAddMissingInitializer(context, info) {
|
|
154822
|
+
if (info.isJs)
|
|
154823
|
+
return undefined;
|
|
154799
154824
|
var checker = context.program.getTypeChecker();
|
|
154800
|
-
var initializer = getInitializer(checker,
|
|
154825
|
+
var initializer = getInitializer(checker, info.prop);
|
|
154801
154826
|
if (!initializer)
|
|
154802
154827
|
return undefined;
|
|
154803
|
-
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addInitializer(t, context.sourceFile,
|
|
154804
|
-
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_initializer_to_property_0,
|
|
154828
|
+
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addInitializer(t, context.sourceFile, info.prop, initializer); });
|
|
154829
|
+
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_initializer_to_property_0, info.prop.name.getText()], fixIdAddInitializer, ts.Diagnostics.Add_initializers_to_all_uninitialized_properties);
|
|
154805
154830
|
}
|
|
154806
154831
|
function addInitializer(changeTracker, propertyDeclarationSourceFile, propertyDeclaration, initializer) {
|
|
154807
154832
|
var property = ts.factory.updatePropertyDeclaration(propertyDeclaration, propertyDeclaration.decorators, propertyDeclaration.modifiers, propertyDeclaration.name, propertyDeclaration.questionToken, propertyDeclaration.type, initializer);
|
package/lib/typescript.js
CHANGED
|
@@ -294,7 +294,7 @@ var ts;
|
|
|
294
294
|
// The following is baselined as a literal template type without intervention
|
|
295
295
|
/** The version of the TypeScript compiler release */
|
|
296
296
|
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
|
|
297
|
-
ts.version = ts.versionMajorMinor + ".0-dev.
|
|
297
|
+
ts.version = ts.versionMajorMinor + ".0-dev.20220118";
|
|
298
298
|
/* @internal */
|
|
299
299
|
var Comparison;
|
|
300
300
|
(function (Comparison) {
|
|
@@ -129724,7 +129724,7 @@ var ts;
|
|
|
129724
129724
|
return (location === null || location === void 0 ? void 0 : location.kind) === 79 /* Identifier */ ? ts.createTextSpanFromNode(location) : undefined;
|
|
129725
129725
|
}
|
|
129726
129726
|
function completionInfoFromData(sourceFile, host, program, compilerOptions, log, completionData, preferences, formatContext) {
|
|
129727
|
-
var symbols = completionData.symbols, contextToken = completionData.contextToken, completionKind = completionData.completionKind, isInSnippetScope = completionData.isInSnippetScope, isNewIdentifierLocation = completionData.isNewIdentifierLocation, location = completionData.location, propertyAccessToConvert = completionData.propertyAccessToConvert, keywordFilters = completionData.keywordFilters, literals = completionData.literals, symbolToOriginInfoMap = completionData.symbolToOriginInfoMap, recommendedCompletion = completionData.recommendedCompletion, isJsxInitializer = completionData.isJsxInitializer, isTypeOnlyLocation = completionData.isTypeOnlyLocation, isJsxIdentifierExpected = completionData.isJsxIdentifierExpected, importCompletionNode = completionData.importCompletionNode, insideJsDocTagTypeExpression = completionData.insideJsDocTagTypeExpression, symbolToSortTextIdMap = completionData.symbolToSortTextIdMap, hasUnresolvedAutoImports = completionData.hasUnresolvedAutoImports;
|
|
129727
|
+
var symbols = completionData.symbols, contextToken = completionData.contextToken, completionKind = completionData.completionKind, isInSnippetScope = completionData.isInSnippetScope, isNewIdentifierLocation = completionData.isNewIdentifierLocation, location = completionData.location, propertyAccessToConvert = completionData.propertyAccessToConvert, keywordFilters = completionData.keywordFilters, literals = completionData.literals, symbolToOriginInfoMap = completionData.symbolToOriginInfoMap, recommendedCompletion = completionData.recommendedCompletion, isJsxInitializer = completionData.isJsxInitializer, isTypeOnlyLocation = completionData.isTypeOnlyLocation, isJsxIdentifierExpected = completionData.isJsxIdentifierExpected, isRightOfOpenTag = completionData.isRightOfOpenTag, importCompletionNode = completionData.importCompletionNode, insideJsDocTagTypeExpression = completionData.insideJsDocTagTypeExpression, symbolToSortTextIdMap = completionData.symbolToSortTextIdMap, hasUnresolvedAutoImports = completionData.hasUnresolvedAutoImports;
|
|
129728
129728
|
// Verify if the file is JSX language variant
|
|
129729
129729
|
if (ts.getLanguageVariant(sourceFile.scriptKind) === 1 /* JSX */) {
|
|
129730
129730
|
var completionInfo = getJsxClosingTagCompletion(location, sourceFile);
|
|
@@ -129735,7 +129735,7 @@ var ts;
|
|
|
129735
129735
|
var entries = ts.createSortedArray();
|
|
129736
129736
|
if (isUncheckedFile(sourceFile, compilerOptions)) {
|
|
129737
129737
|
var uniqueNames = getCompletionEntriesFromSymbols(symbols, entries,
|
|
129738
|
-
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap);
|
|
129738
|
+
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap, isJsxIdentifierExpected, isRightOfOpenTag);
|
|
129739
129739
|
getJSCompletionEntries(sourceFile, location.pos, uniqueNames, ts.getEmitScriptTarget(compilerOptions), entries); // TODO: GH#18217
|
|
129740
129740
|
}
|
|
129741
129741
|
else {
|
|
@@ -129743,7 +129743,7 @@ var ts;
|
|
|
129743
129743
|
return undefined;
|
|
129744
129744
|
}
|
|
129745
129745
|
getCompletionEntriesFromSymbols(symbols, entries,
|
|
129746
|
-
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap);
|
|
129746
|
+
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap, isJsxIdentifierExpected, isRightOfOpenTag);
|
|
129747
129747
|
}
|
|
129748
129748
|
if (keywordFilters !== 0 /* None */) {
|
|
129749
129749
|
var entryNames = new ts.Set(entries.map(function (e) { return e.name; }));
|
|
@@ -129849,7 +129849,7 @@ var ts;
|
|
|
129849
129849
|
function createCompletionEntryForLiteral(sourceFile, preferences, literal) {
|
|
129850
129850
|
return { name: completionNameForLiteral(sourceFile, preferences, literal), kind: "string" /* string */, kindModifiers: "" /* none */, sortText: SortText.LocationPriority };
|
|
129851
129851
|
}
|
|
129852
|
-
function createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importCompletionNode, useSemicolons, options, preferences, completionKind, formatContext) {
|
|
129852
|
+
function createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importCompletionNode, useSemicolons, options, preferences, completionKind, formatContext, isJsxIdentifierExpected, isRightOfOpenTag) {
|
|
129853
129853
|
var _a, _b;
|
|
129854
129854
|
var insertText;
|
|
129855
129855
|
var replacementSpan = ts.getReplacementSpanForContextToken(replacementToken);
|
|
@@ -129920,8 +129920,7 @@ var ts;
|
|
|
129920
129920
|
source = CompletionSource.ClassMemberSnippet;
|
|
129921
129921
|
}
|
|
129922
129922
|
}
|
|
129923
|
-
|
|
129924
|
-
if (kind === "JSX attribute" /* jsxAttribute */ && preferences.includeCompletionsWithSnippetText && preferences.jsxAttributeCompletionStyle && preferences.jsxAttributeCompletionStyle !== "none") {
|
|
129923
|
+
if (isJsxIdentifierExpected && !isRightOfOpenTag && preferences.includeCompletionsWithSnippetText && preferences.jsxAttributeCompletionStyle && preferences.jsxAttributeCompletionStyle !== "none") {
|
|
129925
129924
|
var useBraces_1 = preferences.jsxAttributeCompletionStyle === "braces";
|
|
129926
129925
|
var type = typeChecker.getTypeOfSymbolAtLocation(symbol, location);
|
|
129927
129926
|
// If is boolean like or undefined, don't return a snippet we want just to return the completion.
|
|
@@ -129959,7 +129958,7 @@ var ts;
|
|
|
129959
129958
|
// entries (like JavaScript identifier entries).
|
|
129960
129959
|
return {
|
|
129961
129960
|
name: name,
|
|
129962
|
-
kind:
|
|
129961
|
+
kind: ts.SymbolDisplay.getSymbolKind(typeChecker, symbol, location),
|
|
129963
129962
|
kindModifiers: ts.SymbolDisplay.getSymbolModifiers(typeChecker, symbol),
|
|
129964
129963
|
sortText: sortText,
|
|
129965
129964
|
source: source,
|
|
@@ -130255,7 +130254,7 @@ var ts;
|
|
|
130255
130254
|
return CompletionSource.ThisProperty;
|
|
130256
130255
|
}
|
|
130257
130256
|
}
|
|
130258
|
-
function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, contextToken, location, sourceFile, host, program, target, log, kind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, jsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap) {
|
|
130257
|
+
function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, contextToken, location, sourceFile, host, program, target, log, kind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, jsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap, isJsxIdentifierExpected, isRightOfOpenTag) {
|
|
130259
130258
|
var _a;
|
|
130260
130259
|
var start = ts.timestamp();
|
|
130261
130260
|
var variableDeclaration = getVariableDeclaration(location);
|
|
@@ -130276,7 +130275,7 @@ var ts;
|
|
|
130276
130275
|
var name = info.name, needsConvertPropertyAccess = info.needsConvertPropertyAccess;
|
|
130277
130276
|
var sortTextId = (_a = symbolToSortTextIdMap === null || symbolToSortTextIdMap === void 0 ? void 0 : symbolToSortTextIdMap[ts.getSymbolId(symbol)]) !== null && _a !== void 0 ? _a : 11 /* LocationPriority */;
|
|
130278
130277
|
var sortText = (isDeprecated(symbol, typeChecker) ? 8 /* DeprecatedOffset */ + sortTextId : sortTextId).toString();
|
|
130279
|
-
var entry = createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importCompletionNode, useSemicolons, compilerOptions, preferences, kind, formatContext);
|
|
130278
|
+
var entry = createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importCompletionNode, useSemicolons, compilerOptions, preferences, kind, formatContext, isJsxIdentifierExpected, isRightOfOpenTag);
|
|
130280
130279
|
if (!entry) {
|
|
130281
130280
|
continue;
|
|
130282
130281
|
}
|
|
@@ -130870,6 +130869,7 @@ var ts;
|
|
|
130870
130869
|
symbolToSortTextIdMap: symbolToSortTextIdMap,
|
|
130871
130870
|
isTypeOnlyLocation: isTypeOnlyLocation,
|
|
130872
130871
|
isJsxIdentifierExpected: isJsxIdentifierExpected,
|
|
130872
|
+
isRightOfOpenTag: isRightOfOpenTag,
|
|
130873
130873
|
importCompletionNode: importCompletionNode,
|
|
130874
130874
|
hasUnresolvedAutoImports: hasUnresolvedAutoImports,
|
|
130875
130875
|
};
|
|
@@ -145849,7 +145849,11 @@ var ts;
|
|
|
145849
145849
|
oldTags[i] = merged;
|
|
145850
145850
|
return !!merged;
|
|
145851
145851
|
}); });
|
|
145852
|
-
var
|
|
145852
|
+
var tags = __spreadArray(__spreadArray([], oldTags, true), unmergedNewTags, true);
|
|
145853
|
+
var jsDoc = ts.singleOrUndefined(parent.jsDoc);
|
|
145854
|
+
var comment = jsDoc && ts.positionsAreOnSameLine(jsDoc.pos, jsDoc.end, sourceFile) && !ts.length(comments) ? undefined :
|
|
145855
|
+
ts.factory.createNodeArray(ts.intersperse(comments, ts.factory.createJSDocText("\n")));
|
|
145856
|
+
var tag = ts.factory.createJSDocComment(comment, ts.factory.createNodeArray(tags));
|
|
145853
145857
|
var host = updateJSDocHost(parent);
|
|
145854
145858
|
this.insertJsdocCommentBefore(sourceFile, host, tag);
|
|
145855
145859
|
};
|
|
@@ -146279,6 +146283,8 @@ var ts;
|
|
|
146279
146283
|
}
|
|
146280
146284
|
case 339 /* JSDocReturnTag */:
|
|
146281
146285
|
return ts.factory.createJSDocReturnTag(/*tagName*/ undefined, newTag.typeExpression, oldTag.comment);
|
|
146286
|
+
case 341 /* JSDocTypeTag */:
|
|
146287
|
+
return ts.factory.createJSDocTypeTag(/*tagName*/ undefined, newTag.typeExpression, oldTag.comment);
|
|
146282
146288
|
}
|
|
146283
146289
|
}
|
|
146284
146290
|
// find first non-whitespace position in the leading trivia of the node
|
|
@@ -150121,10 +150127,15 @@ var ts;
|
|
|
150121
150127
|
if (a.kind !== 0 /* UseNamespace */ && b.kind !== 0 /* UseNamespace */) {
|
|
150122
150128
|
return ts.compareBooleans(allowsImportingSpecifier(b.moduleSpecifier), allowsImportingSpecifier(a.moduleSpecifier))
|
|
150123
150129
|
|| compareNodeCoreModuleSpecifiers(a.moduleSpecifier, b.moduleSpecifier, importingFile, program)
|
|
150130
|
+
|| ts.compareBooleans(isOnlyDotsAndSlashes(a.moduleSpecifier), isOnlyDotsAndSlashes(b.moduleSpecifier))
|
|
150124
150131
|
|| ts.compareNumberOfDirectorySeparators(a.moduleSpecifier, b.moduleSpecifier);
|
|
150125
150132
|
}
|
|
150126
150133
|
return 0 /* EqualTo */;
|
|
150127
150134
|
}
|
|
150135
|
+
var notDotOrSlashPattern = /[^.\/]/;
|
|
150136
|
+
function isOnlyDotsAndSlashes(path) {
|
|
150137
|
+
return !notDotOrSlashPattern.test(path);
|
|
150138
|
+
}
|
|
150128
150139
|
function compareNodeCoreModuleSpecifiers(a, b, importingFile, program) {
|
|
150129
150140
|
if (ts.startsWith(a, "node:") && !ts.startsWith(b, "node:"))
|
|
150130
150141
|
return ts.shouldUseUriStyleNodeCoreModules(importingFile, program) ? -1 /* LessThan */ : 1 /* GreaterThan */;
|
|
@@ -154737,35 +154748,34 @@ var ts;
|
|
|
154737
154748
|
codefix.registerCodeFix({
|
|
154738
154749
|
errorCodes: errorCodes,
|
|
154739
154750
|
getCodeActions: function getCodeActionsForStrictClassInitializationErrors(context) {
|
|
154740
|
-
var
|
|
154741
|
-
if (!
|
|
154751
|
+
var info = getInfo(context.sourceFile, context.span.start);
|
|
154752
|
+
if (!info)
|
|
154742
154753
|
return;
|
|
154743
|
-
var result = [
|
|
154744
|
-
|
|
154745
|
-
|
|
154746
|
-
|
|
154747
|
-
ts.append(result, getActionForAddMissingInitializer(context, propertyDeclaration));
|
|
154754
|
+
var result = [];
|
|
154755
|
+
ts.append(result, getActionForAddMissingUndefinedType(context, info));
|
|
154756
|
+
ts.append(result, getActionForAddMissingDefiniteAssignmentAssertion(context, info));
|
|
154757
|
+
ts.append(result, getActionForAddMissingInitializer(context, info));
|
|
154748
154758
|
return result;
|
|
154749
154759
|
},
|
|
154750
154760
|
fixIds: [fixIdAddDefiniteAssignmentAssertions, fixIdAddUndefinedType, fixIdAddInitializer],
|
|
154751
154761
|
getAllCodeActions: function (context) {
|
|
154752
154762
|
return codefix.codeFixAll(context, errorCodes, function (changes, diag) {
|
|
154753
|
-
var
|
|
154754
|
-
if (!
|
|
154763
|
+
var info = getInfo(diag.file, diag.start);
|
|
154764
|
+
if (!info)
|
|
154755
154765
|
return;
|
|
154756
154766
|
switch (context.fixId) {
|
|
154757
154767
|
case fixIdAddDefiniteAssignmentAssertions:
|
|
154758
|
-
addDefiniteAssignmentAssertion(changes, diag.file,
|
|
154768
|
+
addDefiniteAssignmentAssertion(changes, diag.file, info.prop);
|
|
154759
154769
|
break;
|
|
154760
154770
|
case fixIdAddUndefinedType:
|
|
154761
|
-
addUndefinedType(changes, diag.file,
|
|
154771
|
+
addUndefinedType(changes, diag.file, info);
|
|
154762
154772
|
break;
|
|
154763
154773
|
case fixIdAddInitializer:
|
|
154764
154774
|
var checker = context.program.getTypeChecker();
|
|
154765
|
-
var initializer = getInitializer(checker,
|
|
154775
|
+
var initializer = getInitializer(checker, info.prop);
|
|
154766
154776
|
if (!initializer)
|
|
154767
154777
|
return;
|
|
154768
|
-
addInitializer(changes, diag.file,
|
|
154778
|
+
addInitializer(changes, diag.file, info.prop, initializer);
|
|
154769
154779
|
break;
|
|
154770
154780
|
default:
|
|
154771
154781
|
ts.Debug.fail(JSON.stringify(context.fixId));
|
|
@@ -154773,35 +154783,50 @@ var ts;
|
|
|
154773
154783
|
});
|
|
154774
154784
|
},
|
|
154775
154785
|
});
|
|
154776
|
-
function
|
|
154786
|
+
function getInfo(sourceFile, pos) {
|
|
154777
154787
|
var token = ts.getTokenAtPosition(sourceFile, pos);
|
|
154778
|
-
|
|
154788
|
+
if (ts.isIdentifier(token) && ts.isPropertyDeclaration(token.parent)) {
|
|
154789
|
+
var type = ts.getEffectiveTypeAnnotationNode(token.parent);
|
|
154790
|
+
if (type) {
|
|
154791
|
+
return { type: type, prop: token.parent, isJs: ts.isInJSFile(token.parent) };
|
|
154792
|
+
}
|
|
154793
|
+
}
|
|
154794
|
+
return undefined;
|
|
154779
154795
|
}
|
|
154780
|
-
function getActionForAddMissingDefiniteAssignmentAssertion(context,
|
|
154781
|
-
|
|
154782
|
-
|
|
154796
|
+
function getActionForAddMissingDefiniteAssignmentAssertion(context, info) {
|
|
154797
|
+
if (info.isJs)
|
|
154798
|
+
return undefined;
|
|
154799
|
+
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addDefiniteAssignmentAssertion(t, context.sourceFile, info.prop); });
|
|
154800
|
+
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_definite_assignment_assertion_to_property_0, info.prop.getText()], fixIdAddDefiniteAssignmentAssertions, ts.Diagnostics.Add_definite_assignment_assertions_to_all_uninitialized_properties);
|
|
154783
154801
|
}
|
|
154784
154802
|
function addDefiniteAssignmentAssertion(changeTracker, propertyDeclarationSourceFile, propertyDeclaration) {
|
|
154785
154803
|
var property = ts.factory.updatePropertyDeclaration(propertyDeclaration, propertyDeclaration.decorators, propertyDeclaration.modifiers, propertyDeclaration.name, ts.factory.createToken(53 /* ExclamationToken */), propertyDeclaration.type, propertyDeclaration.initializer);
|
|
154786
154804
|
changeTracker.replaceNode(propertyDeclarationSourceFile, propertyDeclaration, property);
|
|
154787
154805
|
}
|
|
154788
|
-
function getActionForAddMissingUndefinedType(context,
|
|
154789
|
-
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addUndefinedType(t, context.sourceFile,
|
|
154790
|
-
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_undefined_type_to_property_0,
|
|
154806
|
+
function getActionForAddMissingUndefinedType(context, info) {
|
|
154807
|
+
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addUndefinedType(t, context.sourceFile, info); });
|
|
154808
|
+
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_undefined_type_to_property_0, info.prop.name.getText()], fixIdAddUndefinedType, ts.Diagnostics.Add_undefined_type_to_all_uninitialized_properties);
|
|
154791
154809
|
}
|
|
154792
|
-
function addUndefinedType(changeTracker,
|
|
154810
|
+
function addUndefinedType(changeTracker, sourceFile, info) {
|
|
154793
154811
|
var undefinedTypeNode = ts.factory.createKeywordTypeNode(152 /* UndefinedKeyword */);
|
|
154794
|
-
var
|
|
154795
|
-
var
|
|
154796
|
-
|
|
154812
|
+
var types = ts.isUnionTypeNode(info.type) ? info.type.types.concat(undefinedTypeNode) : [info.type, undefinedTypeNode];
|
|
154813
|
+
var unionTypeNode = ts.factory.createUnionTypeNode(types);
|
|
154814
|
+
if (info.isJs) {
|
|
154815
|
+
changeTracker.addJSDocTags(sourceFile, info.prop, [ts.factory.createJSDocTypeTag(/*tagName*/ undefined, ts.factory.createJSDocTypeExpression(unionTypeNode))]);
|
|
154816
|
+
}
|
|
154817
|
+
else {
|
|
154818
|
+
changeTracker.replaceNode(sourceFile, info.type, unionTypeNode);
|
|
154819
|
+
}
|
|
154797
154820
|
}
|
|
154798
|
-
function getActionForAddMissingInitializer(context,
|
|
154821
|
+
function getActionForAddMissingInitializer(context, info) {
|
|
154822
|
+
if (info.isJs)
|
|
154823
|
+
return undefined;
|
|
154799
154824
|
var checker = context.program.getTypeChecker();
|
|
154800
|
-
var initializer = getInitializer(checker,
|
|
154825
|
+
var initializer = getInitializer(checker, info.prop);
|
|
154801
154826
|
if (!initializer)
|
|
154802
154827
|
return undefined;
|
|
154803
|
-
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addInitializer(t, context.sourceFile,
|
|
154804
|
-
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_initializer_to_property_0,
|
|
154828
|
+
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addInitializer(t, context.sourceFile, info.prop, initializer); });
|
|
154829
|
+
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_initializer_to_property_0, info.prop.name.getText()], fixIdAddInitializer, ts.Diagnostics.Add_initializers_to_all_uninitialized_properties);
|
|
154805
154830
|
}
|
|
154806
154831
|
function addInitializer(changeTracker, propertyDeclarationSourceFile, propertyDeclaration, initializer) {
|
|
154807
154832
|
var property = ts.factory.updatePropertyDeclaration(propertyDeclaration, propertyDeclaration.decorators, propertyDeclaration.modifiers, propertyDeclaration.name, propertyDeclaration.questionToken, propertyDeclaration.type, initializer);
|
|
@@ -294,7 +294,7 @@ var ts;
|
|
|
294
294
|
// The following is baselined as a literal template type without intervention
|
|
295
295
|
/** The version of the TypeScript compiler release */
|
|
296
296
|
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
|
|
297
|
-
ts.version = ts.versionMajorMinor + ".0-dev.
|
|
297
|
+
ts.version = ts.versionMajorMinor + ".0-dev.20220118";
|
|
298
298
|
/* @internal */
|
|
299
299
|
var Comparison;
|
|
300
300
|
(function (Comparison) {
|
|
@@ -129724,7 +129724,7 @@ var ts;
|
|
|
129724
129724
|
return (location === null || location === void 0 ? void 0 : location.kind) === 79 /* Identifier */ ? ts.createTextSpanFromNode(location) : undefined;
|
|
129725
129725
|
}
|
|
129726
129726
|
function completionInfoFromData(sourceFile, host, program, compilerOptions, log, completionData, preferences, formatContext) {
|
|
129727
|
-
var symbols = completionData.symbols, contextToken = completionData.contextToken, completionKind = completionData.completionKind, isInSnippetScope = completionData.isInSnippetScope, isNewIdentifierLocation = completionData.isNewIdentifierLocation, location = completionData.location, propertyAccessToConvert = completionData.propertyAccessToConvert, keywordFilters = completionData.keywordFilters, literals = completionData.literals, symbolToOriginInfoMap = completionData.symbolToOriginInfoMap, recommendedCompletion = completionData.recommendedCompletion, isJsxInitializer = completionData.isJsxInitializer, isTypeOnlyLocation = completionData.isTypeOnlyLocation, isJsxIdentifierExpected = completionData.isJsxIdentifierExpected, importCompletionNode = completionData.importCompletionNode, insideJsDocTagTypeExpression = completionData.insideJsDocTagTypeExpression, symbolToSortTextIdMap = completionData.symbolToSortTextIdMap, hasUnresolvedAutoImports = completionData.hasUnresolvedAutoImports;
|
|
129727
|
+
var symbols = completionData.symbols, contextToken = completionData.contextToken, completionKind = completionData.completionKind, isInSnippetScope = completionData.isInSnippetScope, isNewIdentifierLocation = completionData.isNewIdentifierLocation, location = completionData.location, propertyAccessToConvert = completionData.propertyAccessToConvert, keywordFilters = completionData.keywordFilters, literals = completionData.literals, symbolToOriginInfoMap = completionData.symbolToOriginInfoMap, recommendedCompletion = completionData.recommendedCompletion, isJsxInitializer = completionData.isJsxInitializer, isTypeOnlyLocation = completionData.isTypeOnlyLocation, isJsxIdentifierExpected = completionData.isJsxIdentifierExpected, isRightOfOpenTag = completionData.isRightOfOpenTag, importCompletionNode = completionData.importCompletionNode, insideJsDocTagTypeExpression = completionData.insideJsDocTagTypeExpression, symbolToSortTextIdMap = completionData.symbolToSortTextIdMap, hasUnresolvedAutoImports = completionData.hasUnresolvedAutoImports;
|
|
129728
129728
|
// Verify if the file is JSX language variant
|
|
129729
129729
|
if (ts.getLanguageVariant(sourceFile.scriptKind) === 1 /* JSX */) {
|
|
129730
129730
|
var completionInfo = getJsxClosingTagCompletion(location, sourceFile);
|
|
@@ -129735,7 +129735,7 @@ var ts;
|
|
|
129735
129735
|
var entries = ts.createSortedArray();
|
|
129736
129736
|
if (isUncheckedFile(sourceFile, compilerOptions)) {
|
|
129737
129737
|
var uniqueNames = getCompletionEntriesFromSymbols(symbols, entries,
|
|
129738
|
-
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap);
|
|
129738
|
+
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap, isJsxIdentifierExpected, isRightOfOpenTag);
|
|
129739
129739
|
getJSCompletionEntries(sourceFile, location.pos, uniqueNames, ts.getEmitScriptTarget(compilerOptions), entries); // TODO: GH#18217
|
|
129740
129740
|
}
|
|
129741
129741
|
else {
|
|
@@ -129743,7 +129743,7 @@ var ts;
|
|
|
129743
129743
|
return undefined;
|
|
129744
129744
|
}
|
|
129745
129745
|
getCompletionEntriesFromSymbols(symbols, entries,
|
|
129746
|
-
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap);
|
|
129746
|
+
/*replacementToken*/ undefined, contextToken, location, sourceFile, host, program, ts.getEmitScriptTarget(compilerOptions), log, completionKind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, isJsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap, isJsxIdentifierExpected, isRightOfOpenTag);
|
|
129747
129747
|
}
|
|
129748
129748
|
if (keywordFilters !== 0 /* None */) {
|
|
129749
129749
|
var entryNames = new ts.Set(entries.map(function (e) { return e.name; }));
|
|
@@ -129849,7 +129849,7 @@ var ts;
|
|
|
129849
129849
|
function createCompletionEntryForLiteral(sourceFile, preferences, literal) {
|
|
129850
129850
|
return { name: completionNameForLiteral(sourceFile, preferences, literal), kind: "string" /* string */, kindModifiers: "" /* none */, sortText: SortText.LocationPriority };
|
|
129851
129851
|
}
|
|
129852
|
-
function createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importCompletionNode, useSemicolons, options, preferences, completionKind, formatContext) {
|
|
129852
|
+
function createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importCompletionNode, useSemicolons, options, preferences, completionKind, formatContext, isJsxIdentifierExpected, isRightOfOpenTag) {
|
|
129853
129853
|
var _a, _b;
|
|
129854
129854
|
var insertText;
|
|
129855
129855
|
var replacementSpan = ts.getReplacementSpanForContextToken(replacementToken);
|
|
@@ -129920,8 +129920,7 @@ var ts;
|
|
|
129920
129920
|
source = CompletionSource.ClassMemberSnippet;
|
|
129921
129921
|
}
|
|
129922
129922
|
}
|
|
129923
|
-
|
|
129924
|
-
if (kind === "JSX attribute" /* jsxAttribute */ && preferences.includeCompletionsWithSnippetText && preferences.jsxAttributeCompletionStyle && preferences.jsxAttributeCompletionStyle !== "none") {
|
|
129923
|
+
if (isJsxIdentifierExpected && !isRightOfOpenTag && preferences.includeCompletionsWithSnippetText && preferences.jsxAttributeCompletionStyle && preferences.jsxAttributeCompletionStyle !== "none") {
|
|
129925
129924
|
var useBraces_1 = preferences.jsxAttributeCompletionStyle === "braces";
|
|
129926
129925
|
var type = typeChecker.getTypeOfSymbolAtLocation(symbol, location);
|
|
129927
129926
|
// If is boolean like or undefined, don't return a snippet we want just to return the completion.
|
|
@@ -129959,7 +129958,7 @@ var ts;
|
|
|
129959
129958
|
// entries (like JavaScript identifier entries).
|
|
129960
129959
|
return {
|
|
129961
129960
|
name: name,
|
|
129962
|
-
kind:
|
|
129961
|
+
kind: ts.SymbolDisplay.getSymbolKind(typeChecker, symbol, location),
|
|
129963
129962
|
kindModifiers: ts.SymbolDisplay.getSymbolModifiers(typeChecker, symbol),
|
|
129964
129963
|
sortText: sortText,
|
|
129965
129964
|
source: source,
|
|
@@ -130255,7 +130254,7 @@ var ts;
|
|
|
130255
130254
|
return CompletionSource.ThisProperty;
|
|
130256
130255
|
}
|
|
130257
130256
|
}
|
|
130258
|
-
function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, contextToken, location, sourceFile, host, program, target, log, kind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, jsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap) {
|
|
130257
|
+
function getCompletionEntriesFromSymbols(symbols, entries, replacementToken, contextToken, location, sourceFile, host, program, target, log, kind, preferences, compilerOptions, formatContext, isTypeOnlyLocation, propertyAccessToConvert, jsxIdentifierExpected, isJsxInitializer, importCompletionNode, recommendedCompletion, symbolToOriginInfoMap, symbolToSortTextIdMap, isJsxIdentifierExpected, isRightOfOpenTag) {
|
|
130259
130258
|
var _a;
|
|
130260
130259
|
var start = ts.timestamp();
|
|
130261
130260
|
var variableDeclaration = getVariableDeclaration(location);
|
|
@@ -130276,7 +130275,7 @@ var ts;
|
|
|
130276
130275
|
var name = info.name, needsConvertPropertyAccess = info.needsConvertPropertyAccess;
|
|
130277
130276
|
var sortTextId = (_a = symbolToSortTextIdMap === null || symbolToSortTextIdMap === void 0 ? void 0 : symbolToSortTextIdMap[ts.getSymbolId(symbol)]) !== null && _a !== void 0 ? _a : 11 /* LocationPriority */;
|
|
130278
130277
|
var sortText = (isDeprecated(symbol, typeChecker) ? 8 /* DeprecatedOffset */ + sortTextId : sortTextId).toString();
|
|
130279
|
-
var entry = createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importCompletionNode, useSemicolons, compilerOptions, preferences, kind, formatContext);
|
|
130278
|
+
var entry = createCompletionEntry(symbol, sortText, replacementToken, contextToken, location, sourceFile, host, program, name, needsConvertPropertyAccess, origin, recommendedCompletion, propertyAccessToConvert, isJsxInitializer, importCompletionNode, useSemicolons, compilerOptions, preferences, kind, formatContext, isJsxIdentifierExpected, isRightOfOpenTag);
|
|
130280
130279
|
if (!entry) {
|
|
130281
130280
|
continue;
|
|
130282
130281
|
}
|
|
@@ -130870,6 +130869,7 @@ var ts;
|
|
|
130870
130869
|
symbolToSortTextIdMap: symbolToSortTextIdMap,
|
|
130871
130870
|
isTypeOnlyLocation: isTypeOnlyLocation,
|
|
130872
130871
|
isJsxIdentifierExpected: isJsxIdentifierExpected,
|
|
130872
|
+
isRightOfOpenTag: isRightOfOpenTag,
|
|
130873
130873
|
importCompletionNode: importCompletionNode,
|
|
130874
130874
|
hasUnresolvedAutoImports: hasUnresolvedAutoImports,
|
|
130875
130875
|
};
|
|
@@ -145849,7 +145849,11 @@ var ts;
|
|
|
145849
145849
|
oldTags[i] = merged;
|
|
145850
145850
|
return !!merged;
|
|
145851
145851
|
}); });
|
|
145852
|
-
var
|
|
145852
|
+
var tags = __spreadArray(__spreadArray([], oldTags, true), unmergedNewTags, true);
|
|
145853
|
+
var jsDoc = ts.singleOrUndefined(parent.jsDoc);
|
|
145854
|
+
var comment = jsDoc && ts.positionsAreOnSameLine(jsDoc.pos, jsDoc.end, sourceFile) && !ts.length(comments) ? undefined :
|
|
145855
|
+
ts.factory.createNodeArray(ts.intersperse(comments, ts.factory.createJSDocText("\n")));
|
|
145856
|
+
var tag = ts.factory.createJSDocComment(comment, ts.factory.createNodeArray(tags));
|
|
145853
145857
|
var host = updateJSDocHost(parent);
|
|
145854
145858
|
this.insertJsdocCommentBefore(sourceFile, host, tag);
|
|
145855
145859
|
};
|
|
@@ -146279,6 +146283,8 @@ var ts;
|
|
|
146279
146283
|
}
|
|
146280
146284
|
case 339 /* JSDocReturnTag */:
|
|
146281
146285
|
return ts.factory.createJSDocReturnTag(/*tagName*/ undefined, newTag.typeExpression, oldTag.comment);
|
|
146286
|
+
case 341 /* JSDocTypeTag */:
|
|
146287
|
+
return ts.factory.createJSDocTypeTag(/*tagName*/ undefined, newTag.typeExpression, oldTag.comment);
|
|
146282
146288
|
}
|
|
146283
146289
|
}
|
|
146284
146290
|
// find first non-whitespace position in the leading trivia of the node
|
|
@@ -150121,10 +150127,15 @@ var ts;
|
|
|
150121
150127
|
if (a.kind !== 0 /* UseNamespace */ && b.kind !== 0 /* UseNamespace */) {
|
|
150122
150128
|
return ts.compareBooleans(allowsImportingSpecifier(b.moduleSpecifier), allowsImportingSpecifier(a.moduleSpecifier))
|
|
150123
150129
|
|| compareNodeCoreModuleSpecifiers(a.moduleSpecifier, b.moduleSpecifier, importingFile, program)
|
|
150130
|
+
|| ts.compareBooleans(isOnlyDotsAndSlashes(a.moduleSpecifier), isOnlyDotsAndSlashes(b.moduleSpecifier))
|
|
150124
150131
|
|| ts.compareNumberOfDirectorySeparators(a.moduleSpecifier, b.moduleSpecifier);
|
|
150125
150132
|
}
|
|
150126
150133
|
return 0 /* EqualTo */;
|
|
150127
150134
|
}
|
|
150135
|
+
var notDotOrSlashPattern = /[^.\/]/;
|
|
150136
|
+
function isOnlyDotsAndSlashes(path) {
|
|
150137
|
+
return !notDotOrSlashPattern.test(path);
|
|
150138
|
+
}
|
|
150128
150139
|
function compareNodeCoreModuleSpecifiers(a, b, importingFile, program) {
|
|
150129
150140
|
if (ts.startsWith(a, "node:") && !ts.startsWith(b, "node:"))
|
|
150130
150141
|
return ts.shouldUseUriStyleNodeCoreModules(importingFile, program) ? -1 /* LessThan */ : 1 /* GreaterThan */;
|
|
@@ -154737,35 +154748,34 @@ var ts;
|
|
|
154737
154748
|
codefix.registerCodeFix({
|
|
154738
154749
|
errorCodes: errorCodes,
|
|
154739
154750
|
getCodeActions: function getCodeActionsForStrictClassInitializationErrors(context) {
|
|
154740
|
-
var
|
|
154741
|
-
if (!
|
|
154751
|
+
var info = getInfo(context.sourceFile, context.span.start);
|
|
154752
|
+
if (!info)
|
|
154742
154753
|
return;
|
|
154743
|
-
var result = [
|
|
154744
|
-
|
|
154745
|
-
|
|
154746
|
-
|
|
154747
|
-
ts.append(result, getActionForAddMissingInitializer(context, propertyDeclaration));
|
|
154754
|
+
var result = [];
|
|
154755
|
+
ts.append(result, getActionForAddMissingUndefinedType(context, info));
|
|
154756
|
+
ts.append(result, getActionForAddMissingDefiniteAssignmentAssertion(context, info));
|
|
154757
|
+
ts.append(result, getActionForAddMissingInitializer(context, info));
|
|
154748
154758
|
return result;
|
|
154749
154759
|
},
|
|
154750
154760
|
fixIds: [fixIdAddDefiniteAssignmentAssertions, fixIdAddUndefinedType, fixIdAddInitializer],
|
|
154751
154761
|
getAllCodeActions: function (context) {
|
|
154752
154762
|
return codefix.codeFixAll(context, errorCodes, function (changes, diag) {
|
|
154753
|
-
var
|
|
154754
|
-
if (!
|
|
154763
|
+
var info = getInfo(diag.file, diag.start);
|
|
154764
|
+
if (!info)
|
|
154755
154765
|
return;
|
|
154756
154766
|
switch (context.fixId) {
|
|
154757
154767
|
case fixIdAddDefiniteAssignmentAssertions:
|
|
154758
|
-
addDefiniteAssignmentAssertion(changes, diag.file,
|
|
154768
|
+
addDefiniteAssignmentAssertion(changes, diag.file, info.prop);
|
|
154759
154769
|
break;
|
|
154760
154770
|
case fixIdAddUndefinedType:
|
|
154761
|
-
addUndefinedType(changes, diag.file,
|
|
154771
|
+
addUndefinedType(changes, diag.file, info);
|
|
154762
154772
|
break;
|
|
154763
154773
|
case fixIdAddInitializer:
|
|
154764
154774
|
var checker = context.program.getTypeChecker();
|
|
154765
|
-
var initializer = getInitializer(checker,
|
|
154775
|
+
var initializer = getInitializer(checker, info.prop);
|
|
154766
154776
|
if (!initializer)
|
|
154767
154777
|
return;
|
|
154768
|
-
addInitializer(changes, diag.file,
|
|
154778
|
+
addInitializer(changes, diag.file, info.prop, initializer);
|
|
154769
154779
|
break;
|
|
154770
154780
|
default:
|
|
154771
154781
|
ts.Debug.fail(JSON.stringify(context.fixId));
|
|
@@ -154773,35 +154783,50 @@ var ts;
|
|
|
154773
154783
|
});
|
|
154774
154784
|
},
|
|
154775
154785
|
});
|
|
154776
|
-
function
|
|
154786
|
+
function getInfo(sourceFile, pos) {
|
|
154777
154787
|
var token = ts.getTokenAtPosition(sourceFile, pos);
|
|
154778
|
-
|
|
154788
|
+
if (ts.isIdentifier(token) && ts.isPropertyDeclaration(token.parent)) {
|
|
154789
|
+
var type = ts.getEffectiveTypeAnnotationNode(token.parent);
|
|
154790
|
+
if (type) {
|
|
154791
|
+
return { type: type, prop: token.parent, isJs: ts.isInJSFile(token.parent) };
|
|
154792
|
+
}
|
|
154793
|
+
}
|
|
154794
|
+
return undefined;
|
|
154779
154795
|
}
|
|
154780
|
-
function getActionForAddMissingDefiniteAssignmentAssertion(context,
|
|
154781
|
-
|
|
154782
|
-
|
|
154796
|
+
function getActionForAddMissingDefiniteAssignmentAssertion(context, info) {
|
|
154797
|
+
if (info.isJs)
|
|
154798
|
+
return undefined;
|
|
154799
|
+
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addDefiniteAssignmentAssertion(t, context.sourceFile, info.prop); });
|
|
154800
|
+
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_definite_assignment_assertion_to_property_0, info.prop.getText()], fixIdAddDefiniteAssignmentAssertions, ts.Diagnostics.Add_definite_assignment_assertions_to_all_uninitialized_properties);
|
|
154783
154801
|
}
|
|
154784
154802
|
function addDefiniteAssignmentAssertion(changeTracker, propertyDeclarationSourceFile, propertyDeclaration) {
|
|
154785
154803
|
var property = ts.factory.updatePropertyDeclaration(propertyDeclaration, propertyDeclaration.decorators, propertyDeclaration.modifiers, propertyDeclaration.name, ts.factory.createToken(53 /* ExclamationToken */), propertyDeclaration.type, propertyDeclaration.initializer);
|
|
154786
154804
|
changeTracker.replaceNode(propertyDeclarationSourceFile, propertyDeclaration, property);
|
|
154787
154805
|
}
|
|
154788
|
-
function getActionForAddMissingUndefinedType(context,
|
|
154789
|
-
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addUndefinedType(t, context.sourceFile,
|
|
154790
|
-
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_undefined_type_to_property_0,
|
|
154806
|
+
function getActionForAddMissingUndefinedType(context, info) {
|
|
154807
|
+
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addUndefinedType(t, context.sourceFile, info); });
|
|
154808
|
+
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_undefined_type_to_property_0, info.prop.name.getText()], fixIdAddUndefinedType, ts.Diagnostics.Add_undefined_type_to_all_uninitialized_properties);
|
|
154791
154809
|
}
|
|
154792
|
-
function addUndefinedType(changeTracker,
|
|
154810
|
+
function addUndefinedType(changeTracker, sourceFile, info) {
|
|
154793
154811
|
var undefinedTypeNode = ts.factory.createKeywordTypeNode(152 /* UndefinedKeyword */);
|
|
154794
|
-
var
|
|
154795
|
-
var
|
|
154796
|
-
|
|
154812
|
+
var types = ts.isUnionTypeNode(info.type) ? info.type.types.concat(undefinedTypeNode) : [info.type, undefinedTypeNode];
|
|
154813
|
+
var unionTypeNode = ts.factory.createUnionTypeNode(types);
|
|
154814
|
+
if (info.isJs) {
|
|
154815
|
+
changeTracker.addJSDocTags(sourceFile, info.prop, [ts.factory.createJSDocTypeTag(/*tagName*/ undefined, ts.factory.createJSDocTypeExpression(unionTypeNode))]);
|
|
154816
|
+
}
|
|
154817
|
+
else {
|
|
154818
|
+
changeTracker.replaceNode(sourceFile, info.type, unionTypeNode);
|
|
154819
|
+
}
|
|
154797
154820
|
}
|
|
154798
|
-
function getActionForAddMissingInitializer(context,
|
|
154821
|
+
function getActionForAddMissingInitializer(context, info) {
|
|
154822
|
+
if (info.isJs)
|
|
154823
|
+
return undefined;
|
|
154799
154824
|
var checker = context.program.getTypeChecker();
|
|
154800
|
-
var initializer = getInitializer(checker,
|
|
154825
|
+
var initializer = getInitializer(checker, info.prop);
|
|
154801
154826
|
if (!initializer)
|
|
154802
154827
|
return undefined;
|
|
154803
|
-
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addInitializer(t, context.sourceFile,
|
|
154804
|
-
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_initializer_to_property_0,
|
|
154828
|
+
var changes = ts.textChanges.ChangeTracker.with(context, function (t) { return addInitializer(t, context.sourceFile, info.prop, initializer); });
|
|
154829
|
+
return codefix.createCodeFixAction(fixName, changes, [ts.Diagnostics.Add_initializer_to_property_0, info.prop.name.getText()], fixIdAddInitializer, ts.Diagnostics.Add_initializers_to_all_uninitialized_properties);
|
|
154805
154830
|
}
|
|
154806
154831
|
function addInitializer(changeTracker, propertyDeclarationSourceFile, propertyDeclaration, initializer) {
|
|
154807
154832
|
var property = ts.factory.updatePropertyDeclaration(propertyDeclaration, propertyDeclaration.decorators, propertyDeclaration.modifiers, propertyDeclaration.name, propertyDeclaration.questionToken, propertyDeclaration.type, initializer);
|
package/lib/typingsInstaller.js
CHANGED
|
@@ -89,7 +89,7 @@ var ts;
|
|
|
89
89
|
// The following is baselined as a literal template type without intervention
|
|
90
90
|
/** The version of the TypeScript compiler release */
|
|
91
91
|
// eslint-disable-next-line @typescript-eslint/no-inferrable-types
|
|
92
|
-
ts.version = ts.versionMajorMinor + ".0-dev.
|
|
92
|
+
ts.version = ts.versionMajorMinor + ".0-dev.20220118";
|
|
93
93
|
/* @internal */
|
|
94
94
|
var Comparison;
|
|
95
95
|
(function (Comparison) {
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "typescript",
|
|
3
3
|
"author": "Microsoft Corp.",
|
|
4
4
|
"homepage": "https://www.typescriptlang.org/",
|
|
5
|
-
"version": "4.6.0-dev.
|
|
5
|
+
"version": "4.6.0-dev.20220118",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"description": "TypeScript is a language for application scale JavaScript development",
|
|
8
8
|
"keywords": [
|