@effect/language-service 0.47.2 → 0.48.0
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/README.md +4 -0
- package/cli.js +80 -6
- package/cli.js.map +1 -1
- package/effect-lsp-patch-utils.js +80 -6
- package/effect-lsp-patch-utils.js.map +1 -1
- package/index.js +152 -83
- package/index.js.map +1 -1
- package/package.json +1 -1
- package/transform.js +80 -6
- package/transform.js.map +1 -1
package/index.js
CHANGED
|
@@ -1225,7 +1225,7 @@ function parseKeyPatterns(patterns) {
|
|
|
1225
1225
|
if (!isObject(entry)) continue;
|
|
1226
1226
|
result.push({
|
|
1227
1227
|
target: hasProperty(entry, "target") && isString(entry.target) && ["service", "error", "custom"].includes(entry.target.toLowerCase()) ? entry.target.toLowerCase() : "service",
|
|
1228
|
-
pattern: hasProperty(entry, "pattern") && isString(entry.pattern) && ["package-identifier", "default"].includes(entry.pattern.toLowerCase()) ? entry.pattern.toLowerCase() : "default",
|
|
1228
|
+
pattern: hasProperty(entry, "pattern") && isString(entry.pattern) && ["package-identifier", "default", "default-hashed"].includes(entry.pattern.toLowerCase()) ? entry.pattern.toLowerCase() : "default",
|
|
1229
1229
|
skipLeadingPath: hasProperty(entry, "skipLeadingPath") && isArray(entry.skipLeadingPath) && entry.skipLeadingPath.every(isString) ? entry.skipLeadingPath : ["src/"]
|
|
1230
1230
|
});
|
|
1231
1231
|
}
|
|
@@ -1811,71 +1811,6 @@ function makeTypeScriptUtils(ts) {
|
|
|
1811
1811
|
};
|
|
1812
1812
|
}
|
|
1813
1813
|
|
|
1814
|
-
// src/core/KeyBuilder.ts
|
|
1815
|
-
var makeKeyBuilder = fn("KeyBuilder")(
|
|
1816
|
-
function* (sourceFile) {
|
|
1817
|
-
const ts = yield* service(TypeScriptApi);
|
|
1818
|
-
const tsUtils = yield* service(TypeScriptUtils);
|
|
1819
|
-
const program = yield* service(TypeScriptProgram);
|
|
1820
|
-
const options = yield* service(LanguageServicePluginOptions);
|
|
1821
|
-
const packageInfo = tsUtils.resolveModuleWithPackageInfoFromSourceFile(program, sourceFile);
|
|
1822
|
-
function createString2(classNameText, kind) {
|
|
1823
|
-
if (!packageInfo) return;
|
|
1824
|
-
for (const keyPattern of options.keyPatterns) {
|
|
1825
|
-
if (keyPattern.target !== kind) continue;
|
|
1826
|
-
const lastIndex = sourceFile.fileName.lastIndexOf("/");
|
|
1827
|
-
let onlyFileName = lastIndex === -1 ? "" : sourceFile.fileName.slice(lastIndex + 1);
|
|
1828
|
-
const lastExtensionIndex = onlyFileName.lastIndexOf(".");
|
|
1829
|
-
if (lastExtensionIndex !== -1) onlyFileName = onlyFileName.slice(0, lastExtensionIndex);
|
|
1830
|
-
if (onlyFileName.toLowerCase().endsWith("/index")) onlyFileName = onlyFileName.slice(0, -6);
|
|
1831
|
-
if (onlyFileName.startsWith("/")) onlyFileName = onlyFileName.slice(1);
|
|
1832
|
-
let subDirectory = getDirectoryPath(ts, sourceFile.fileName);
|
|
1833
|
-
if (!subDirectory.startsWith(packageInfo.packageDirectory)) continue;
|
|
1834
|
-
subDirectory = subDirectory.slice(packageInfo.packageDirectory.length);
|
|
1835
|
-
if (!subDirectory.endsWith("/")) subDirectory = subDirectory + "/";
|
|
1836
|
-
if (subDirectory.startsWith("/")) subDirectory = subDirectory.slice(1);
|
|
1837
|
-
for (const prefix of keyPattern.skipLeadingPath) {
|
|
1838
|
-
if (subDirectory.startsWith(prefix)) {
|
|
1839
|
-
subDirectory = subDirectory.slice(prefix.length);
|
|
1840
|
-
break;
|
|
1841
|
-
}
|
|
1842
|
-
}
|
|
1843
|
-
let parts = [packageInfo.name, subDirectory, onlyFileName].concat(
|
|
1844
|
-
onlyFileName.toLowerCase() === classNameText.toLowerCase() ? [] : [classNameText]
|
|
1845
|
-
);
|
|
1846
|
-
if (keyPattern.pattern === "package-identifier") {
|
|
1847
|
-
parts = [packageInfo.name, onlyFileName].concat(
|
|
1848
|
-
onlyFileName.toLowerCase() === classNameText.toLowerCase() ? [] : [classNameText]
|
|
1849
|
-
);
|
|
1850
|
-
}
|
|
1851
|
-
parts = parts.map((part) => part.startsWith("/") ? part.slice(1) : part).map(
|
|
1852
|
-
(part) => part.endsWith("/") ? part.slice(0, -1) : part
|
|
1853
|
-
);
|
|
1854
|
-
return parts.filter((_) => String(_).trim().length > 0).join("/");
|
|
1855
|
-
}
|
|
1856
|
-
}
|
|
1857
|
-
return {
|
|
1858
|
-
createString: createString2
|
|
1859
|
-
};
|
|
1860
|
-
}
|
|
1861
|
-
);
|
|
1862
|
-
var keyBuilderCache = /* @__PURE__ */ new Map();
|
|
1863
|
-
var getOrMakeKeyBuilder = fn("getOrMakeKeyBuilder")(function* (sourceFile) {
|
|
1864
|
-
while (keyBuilderCache.size > 5) {
|
|
1865
|
-
const oldest = keyBuilderCache.keys().next().value;
|
|
1866
|
-
if (oldest) keyBuilderCache.delete(oldest);
|
|
1867
|
-
}
|
|
1868
|
-
const keyBuilder = keyBuilderCache.get(sourceFile.fileName) || (yield* makeKeyBuilder(sourceFile));
|
|
1869
|
-
keyBuilderCache.set(sourceFile.fileName, keyBuilder);
|
|
1870
|
-
return keyBuilder;
|
|
1871
|
-
});
|
|
1872
|
-
function createString(sourceFile, identifier, kind) {
|
|
1873
|
-
return map5(
|
|
1874
|
-
getOrMakeKeyBuilder(sourceFile),
|
|
1875
|
-
(identifierBuilder) => identifierBuilder.createString(identifier, kind)
|
|
1876
|
-
);
|
|
1877
|
-
}
|
|
1878
|
-
|
|
1879
1814
|
// src/core/LSP.ts
|
|
1880
1815
|
var RefactorNotApplicableError = class {
|
|
1881
1816
|
_tag = "@effect/language-service/RefactorNotApplicableError";
|
|
@@ -2207,6 +2142,72 @@ var getEffectLspPatchSourceFileMetadata = (sourceFile) => {
|
|
|
2207
2142
|
return sourceFile["@effect-lsp-patch/metadata"];
|
|
2208
2143
|
};
|
|
2209
2144
|
|
|
2145
|
+
// src/core/KeyBuilder.ts
|
|
2146
|
+
var makeKeyBuilder = fn("KeyBuilder")(
|
|
2147
|
+
function* (sourceFile) {
|
|
2148
|
+
const ts = yield* service(TypeScriptApi);
|
|
2149
|
+
const tsUtils = yield* service(TypeScriptUtils);
|
|
2150
|
+
const program = yield* service(TypeScriptProgram);
|
|
2151
|
+
const options = yield* service(LanguageServicePluginOptions);
|
|
2152
|
+
const packageInfo = tsUtils.resolveModuleWithPackageInfoFromSourceFile(program, sourceFile);
|
|
2153
|
+
function createString2(classNameText, kind) {
|
|
2154
|
+
if (!packageInfo) return;
|
|
2155
|
+
for (const keyPattern of options.keyPatterns) {
|
|
2156
|
+
if (keyPattern.target !== kind) continue;
|
|
2157
|
+
const lastIndex = sourceFile.fileName.lastIndexOf("/");
|
|
2158
|
+
let onlyFileName = lastIndex === -1 ? "" : sourceFile.fileName.slice(lastIndex + 1);
|
|
2159
|
+
const lastExtensionIndex = onlyFileName.lastIndexOf(".");
|
|
2160
|
+
if (lastExtensionIndex !== -1) onlyFileName = onlyFileName.slice(0, lastExtensionIndex);
|
|
2161
|
+
if (onlyFileName.toLowerCase().endsWith("/index")) onlyFileName = onlyFileName.slice(0, -6);
|
|
2162
|
+
if (onlyFileName.startsWith("/")) onlyFileName = onlyFileName.slice(1);
|
|
2163
|
+
let subDirectory = getDirectoryPath(ts, sourceFile.fileName);
|
|
2164
|
+
if (!subDirectory.startsWith(packageInfo.packageDirectory)) continue;
|
|
2165
|
+
subDirectory = subDirectory.slice(packageInfo.packageDirectory.length);
|
|
2166
|
+
if (!subDirectory.endsWith("/")) subDirectory = subDirectory + "/";
|
|
2167
|
+
if (subDirectory.startsWith("/")) subDirectory = subDirectory.slice(1);
|
|
2168
|
+
for (const prefix of keyPattern.skipLeadingPath) {
|
|
2169
|
+
if (subDirectory.startsWith(prefix)) {
|
|
2170
|
+
subDirectory = subDirectory.slice(prefix.length);
|
|
2171
|
+
break;
|
|
2172
|
+
}
|
|
2173
|
+
}
|
|
2174
|
+
let parts = [packageInfo.name, subDirectory, onlyFileName].concat(
|
|
2175
|
+
onlyFileName.toLowerCase() === classNameText.toLowerCase() ? [] : [classNameText]
|
|
2176
|
+
);
|
|
2177
|
+
if (keyPattern.pattern === "package-identifier") {
|
|
2178
|
+
parts = [packageInfo.name, onlyFileName].concat(
|
|
2179
|
+
onlyFileName.toLowerCase() === classNameText.toLowerCase() ? [] : [classNameText]
|
|
2180
|
+
);
|
|
2181
|
+
}
|
|
2182
|
+
parts = parts.map((part) => part.startsWith("/") ? part.slice(1) : part).map(
|
|
2183
|
+
(part) => part.endsWith("/") ? part.slice(0, -1) : part
|
|
2184
|
+
);
|
|
2185
|
+
const fullKey = parts.filter((_) => String(_).trim().length > 0).join("/");
|
|
2186
|
+
return keyPattern.pattern === "default-hashed" ? cyrb53(fullKey) : fullKey;
|
|
2187
|
+
}
|
|
2188
|
+
}
|
|
2189
|
+
return {
|
|
2190
|
+
createString: createString2
|
|
2191
|
+
};
|
|
2192
|
+
}
|
|
2193
|
+
);
|
|
2194
|
+
var keyBuilderCache = /* @__PURE__ */ new Map();
|
|
2195
|
+
var getOrMakeKeyBuilder = fn("getOrMakeKeyBuilder")(function* (sourceFile) {
|
|
2196
|
+
while (keyBuilderCache.size > 5) {
|
|
2197
|
+
const oldest = keyBuilderCache.keys().next().value;
|
|
2198
|
+
if (oldest) keyBuilderCache.delete(oldest);
|
|
2199
|
+
}
|
|
2200
|
+
const keyBuilder = keyBuilderCache.get(sourceFile.fileName) || (yield* makeKeyBuilder(sourceFile));
|
|
2201
|
+
keyBuilderCache.set(sourceFile.fileName, keyBuilder);
|
|
2202
|
+
return keyBuilder;
|
|
2203
|
+
});
|
|
2204
|
+
function createString(sourceFile, identifier, kind) {
|
|
2205
|
+
return map5(
|
|
2206
|
+
getOrMakeKeyBuilder(sourceFile),
|
|
2207
|
+
(identifierBuilder) => identifierBuilder.createString(identifier, kind)
|
|
2208
|
+
);
|
|
2209
|
+
}
|
|
2210
|
+
|
|
2210
2211
|
// src/completions/contextSelfInClasses.ts
|
|
2211
2212
|
var contextSelfInClasses = createCompletion({
|
|
2212
2213
|
name: "contextSelfInClasses",
|
|
@@ -2251,10 +2252,10 @@ var TypeCheckerUtils = Tag("TypeCheckerUtils");
|
|
|
2251
2252
|
var nanoLayer2 = (fa) => pipe(
|
|
2252
2253
|
service(TypeScriptApi),
|
|
2253
2254
|
flatMap2(
|
|
2254
|
-
(ts) => flatMap2(service(TypeCheckerApi), (typeChecker) => pipe(fa, provideService(TypeCheckerUtils, makeTypeCheckerUtils(ts, typeChecker))))
|
|
2255
|
+
(ts) => flatMap2(service(TypeCheckerApi), (typeChecker) => flatMap2(service(TypeScriptUtils), (typeScriptUtils) => pipe(fa, provideService(TypeCheckerUtils, makeTypeCheckerUtils(ts, typeChecker, typeScriptUtils)))))
|
|
2255
2256
|
)
|
|
2256
2257
|
);
|
|
2257
|
-
function makeTypeCheckerUtils(ts, typeChecker) {
|
|
2258
|
+
function makeTypeCheckerUtils(ts, typeChecker, tsUtils) {
|
|
2258
2259
|
function isUnion(type) {
|
|
2259
2260
|
return !!(type.flags & ts.TypeFlags.Union);
|
|
2260
2261
|
}
|
|
@@ -2494,6 +2495,78 @@ function makeTypeCheckerUtils(ts, typeChecker) {
|
|
|
2494
2495
|
expectedAndRealTypeCache.set(sourceFile, result);
|
|
2495
2496
|
return result;
|
|
2496
2497
|
};
|
|
2498
|
+
function typeToSimplifiedTypeNode(type, enclosingNode, flags) {
|
|
2499
|
+
return typeToSimplifiedTypeNodeWorker(type, enclosingNode, flags, 0);
|
|
2500
|
+
}
|
|
2501
|
+
function typeToSimplifiedTypeNodeWorker(type, enclosingNode, flags, depth) {
|
|
2502
|
+
const fallbackStandard = () => {
|
|
2503
|
+
const typeNode = typeChecker.typeToTypeNode(type, enclosingNode, flags);
|
|
2504
|
+
if (!typeNode) return void 0;
|
|
2505
|
+
return tsUtils.simplifyTypeNode(typeNode);
|
|
2506
|
+
};
|
|
2507
|
+
if (depth > 20) return fallbackStandard();
|
|
2508
|
+
const members = unrollUnionMembers(type);
|
|
2509
|
+
if (members.length > 1 && !(type.flags & ts.TypeFlags.Boolean)) {
|
|
2510
|
+
const typeNodes = [];
|
|
2511
|
+
members.sort(deterministicTypeOrder);
|
|
2512
|
+
for (const member of members) {
|
|
2513
|
+
const memberNode = typeToSimplifiedTypeNodeWorker(member, enclosingNode, flags, depth + 1);
|
|
2514
|
+
if (!memberNode) return fallbackStandard();
|
|
2515
|
+
typeNodes.push(memberNode);
|
|
2516
|
+
}
|
|
2517
|
+
return tsUtils.simplifyTypeNode(ts.factory.createUnionTypeNode(typeNodes));
|
|
2518
|
+
}
|
|
2519
|
+
if (type.flags & ts.TypeFlags.Intersection) {
|
|
2520
|
+
const intersectionType = type;
|
|
2521
|
+
const typeNodes = [];
|
|
2522
|
+
for (const member of intersectionType.types) {
|
|
2523
|
+
const memberNode = typeToSimplifiedTypeNodeWorker(member, enclosingNode, flags, depth + 1);
|
|
2524
|
+
if (!memberNode) return fallbackStandard();
|
|
2525
|
+
typeNodes.push(memberNode);
|
|
2526
|
+
}
|
|
2527
|
+
return tsUtils.simplifyTypeNode(ts.factory.createIntersectionTypeNode(typeNodes));
|
|
2528
|
+
}
|
|
2529
|
+
if (type.flags & ts.TypeFlags.Object && type.objectFlags & ts.ObjectFlags.Reference) {
|
|
2530
|
+
const typeReference = type;
|
|
2531
|
+
const standard2 = fallbackStandard();
|
|
2532
|
+
if (!standard2) return void 0;
|
|
2533
|
+
if (!ts.isTypeReferenceNode(standard2)) return standard2;
|
|
2534
|
+
if (typeReference.target.typeParameters?.length !== typeReference.typeArguments?.length) return standard2;
|
|
2535
|
+
if (standard2.typeArguments?.length !== typeReference.typeArguments?.length) return standard2;
|
|
2536
|
+
const typeParametersCount = (typeReference.target.typeParameters || []).length;
|
|
2537
|
+
for (let i = typeParametersCount - 1; i >= 0; i--) {
|
|
2538
|
+
const typeParameter = typeReference.target.typeParameters[i];
|
|
2539
|
+
const typeArgument = typeReference.typeArguments[i];
|
|
2540
|
+
const defaultType = typeChecker.getDefaultFromTypeParameter(typeParameter);
|
|
2541
|
+
if (defaultType !== typeArgument || i === 0) {
|
|
2542
|
+
return tsUtils.simplifyTypeNode(ts.factory.updateTypeReferenceNode(
|
|
2543
|
+
standard2,
|
|
2544
|
+
standard2.typeName,
|
|
2545
|
+
ts.factory.createNodeArray((standard2.typeArguments || []).slice(0, Math.min(typeParametersCount, i + 1)))
|
|
2546
|
+
));
|
|
2547
|
+
}
|
|
2548
|
+
}
|
|
2549
|
+
return standard2;
|
|
2550
|
+
}
|
|
2551
|
+
if (type.flags & ts.TypeFlags.Object) {
|
|
2552
|
+
const standard2 = fallbackStandard();
|
|
2553
|
+
if (!standard2) return void 0;
|
|
2554
|
+
if (!ts.isFunctionTypeNode(standard2)) return standard2;
|
|
2555
|
+
const signatures = typeChecker.getSignaturesOfType(type, ts.SignatureKind.Call);
|
|
2556
|
+
if (signatures.length !== 1) return standard2;
|
|
2557
|
+
const returnType = typeChecker.getReturnTypeOfSignature(signatures[0]);
|
|
2558
|
+
if (!returnType) return standard2;
|
|
2559
|
+
const returnTypeNode = typeToSimplifiedTypeNodeWorker(returnType, enclosingNode, flags, depth + 1);
|
|
2560
|
+
if (!returnTypeNode) return standard2;
|
|
2561
|
+
return tsUtils.simplifyTypeNode(ts.factory.updateFunctionTypeNode(
|
|
2562
|
+
standard2,
|
|
2563
|
+
standard2.typeParameters,
|
|
2564
|
+
standard2.parameters,
|
|
2565
|
+
returnTypeNode
|
|
2566
|
+
));
|
|
2567
|
+
}
|
|
2568
|
+
return fallbackStandard();
|
|
2569
|
+
}
|
|
2497
2570
|
return {
|
|
2498
2571
|
isUnion,
|
|
2499
2572
|
getTypeParameterAtPosition,
|
|
@@ -2502,7 +2575,8 @@ function makeTypeCheckerUtils(ts, typeChecker) {
|
|
|
2502
2575
|
appendToUniqueTypesMap,
|
|
2503
2576
|
deterministicTypeOrder,
|
|
2504
2577
|
getInferredReturnType,
|
|
2505
|
-
expectedAndRealType
|
|
2578
|
+
expectedAndRealType,
|
|
2579
|
+
typeToSimplifiedTypeNode
|
|
2506
2580
|
};
|
|
2507
2581
|
}
|
|
2508
2582
|
|
|
@@ -5700,7 +5774,7 @@ var tryCatchInEffectGen = createDiagnostic({
|
|
|
5700
5774
|
while (nodeToVisit.length > 0) {
|
|
5701
5775
|
const node = nodeToVisit.shift();
|
|
5702
5776
|
ts.forEachChild(node, appendNodeToVisit);
|
|
5703
|
-
if (ts.isTryStatement(node)) {
|
|
5777
|
+
if (ts.isTryStatement(node) && node.catchClause) {
|
|
5704
5778
|
const generatorOrRegularFunction = ts.findAncestor(
|
|
5705
5779
|
node,
|
|
5706
5780
|
(_) => ts.isFunctionExpression(_) || ts.isFunctionDeclaration(_) || ts.isMethodDeclaration(_) || ts.isArrowFunction(_) || ts.isGetAccessor(_) || ts.isFunctionLike(_)
|
|
@@ -12360,11 +12434,8 @@ var layerMagic = createRefactor({
|
|
|
12360
12434
|
(node) => node
|
|
12361
12435
|
);
|
|
12362
12436
|
const adjustedNode = (node) => {
|
|
12363
|
-
if (ts.
|
|
12364
|
-
return
|
|
12365
|
-
}
|
|
12366
|
-
if (ts.isIdentifier(node) && ts.isPropertyDeclaration(node.parent) && node.parent.initializer) {
|
|
12367
|
-
return adjustedNode(node.parent.initializer);
|
|
12437
|
+
if (node.parent && (ts.isVariableDeclaration(node.parent) || ts.isPropertyDeclaration(node.parent)) && ts.isIdentifier(node) && node.parent.initializer && node.parent.name === node) {
|
|
12438
|
+
return node.parent.initializer;
|
|
12368
12439
|
}
|
|
12369
12440
|
return node;
|
|
12370
12441
|
};
|
|
@@ -13049,7 +13120,6 @@ var toggleReturnTypeAnnotation = createRefactor({
|
|
|
13049
13120
|
apply: fn("toggleReturnTypeAnnotation.apply")(function* (sourceFile, textRange) {
|
|
13050
13121
|
const ts = yield* service(TypeScriptApi);
|
|
13051
13122
|
const tsUtils = yield* service(TypeScriptUtils);
|
|
13052
|
-
const typeChecker = yield* service(TypeCheckerApi);
|
|
13053
13123
|
const typeCheckerUtils = yield* service(TypeCheckerUtils);
|
|
13054
13124
|
function addReturnTypeAnnotation(sourceFile2, changeTracker, declaration, typeNode) {
|
|
13055
13125
|
const closeParen = ts.findChildOfKind(declaration, ts.SyntaxKind.CloseParenToken, sourceFile2);
|
|
@@ -13100,7 +13170,7 @@ var toggleReturnTypeAnnotation = createRefactor({
|
|
|
13100
13170
|
}
|
|
13101
13171
|
const returnType = typeCheckerUtils.getInferredReturnType(node);
|
|
13102
13172
|
if (!returnType) return yield* fail(new RefactorNotApplicableError());
|
|
13103
|
-
const returnTypeNode =
|
|
13173
|
+
const returnTypeNode = typeCheckerUtils.typeToSimplifiedTypeNode(
|
|
13104
13174
|
returnType,
|
|
13105
13175
|
node,
|
|
13106
13176
|
ts.NodeBuilderFlags.NoTruncation
|
|
@@ -13111,9 +13181,7 @@ var toggleReturnTypeAnnotation = createRefactor({
|
|
|
13111
13181
|
description: "Toggle return type annotation",
|
|
13112
13182
|
apply: pipe(
|
|
13113
13183
|
service(ChangeTracker),
|
|
13114
|
-
map5(
|
|
13115
|
-
(changeTracker) => addReturnTypeAnnotation(sourceFile, changeTracker, node, tsUtils.simplifyTypeNode(returnTypeNode))
|
|
13116
|
-
)
|
|
13184
|
+
map5((changeTracker) => addReturnTypeAnnotation(sourceFile, changeTracker, node, returnTypeNode))
|
|
13117
13185
|
)
|
|
13118
13186
|
};
|
|
13119
13187
|
})
|
|
@@ -13127,6 +13195,7 @@ var toggleTypeAnnotation = createRefactor({
|
|
|
13127
13195
|
const ts = yield* service(TypeScriptApi);
|
|
13128
13196
|
const tsUtils = yield* service(TypeScriptUtils);
|
|
13129
13197
|
const typeChecker = yield* service(TypeCheckerApi);
|
|
13198
|
+
const typeCheckerUtils = yield* service(TypeCheckerUtils);
|
|
13130
13199
|
const maybeNode = pipe(
|
|
13131
13200
|
tsUtils.getAncestorNodesInRange(sourceFile, textRange),
|
|
13132
13201
|
filter((node2) => ts.isVariableDeclaration(node2) || ts.isPropertyDeclaration(node2)),
|
|
@@ -13148,13 +13217,13 @@ var toggleTypeAnnotation = createRefactor({
|
|
|
13148
13217
|
}
|
|
13149
13218
|
const initializer = node.initializer;
|
|
13150
13219
|
const initializerType = typeChecker.getTypeAtLocation(initializer);
|
|
13151
|
-
const initializerTypeNode = fromNullable(
|
|
13220
|
+
const initializerTypeNode = fromNullable(typeCheckerUtils.typeToSimplifiedTypeNode(
|
|
13152
13221
|
initializerType,
|
|
13153
13222
|
node,
|
|
13154
13223
|
ts.NodeBuilderFlags.NoTruncation
|
|
13155
13224
|
)).pipe(
|
|
13156
13225
|
orElse(
|
|
13157
|
-
() => fromNullable(
|
|
13226
|
+
() => fromNullable(typeCheckerUtils.typeToSimplifiedTypeNode(
|
|
13158
13227
|
initializerType,
|
|
13159
13228
|
void 0,
|
|
13160
13229
|
ts.NodeBuilderFlags.NoTruncation
|
|
@@ -13166,7 +13235,7 @@ var toggleTypeAnnotation = createRefactor({
|
|
|
13166
13235
|
changeTracker.insertNodeAt(
|
|
13167
13236
|
sourceFile,
|
|
13168
13237
|
node.name.end,
|
|
13169
|
-
|
|
13238
|
+
initializerTypeNode,
|
|
13170
13239
|
{
|
|
13171
13240
|
prefix: ": "
|
|
13172
13241
|
}
|