From 4598943ed3d47731ef867a0ff67aeb7158492b38 Mon Sep 17 00:00:00 2001 From: Ryan Clarke Date: Thu, 1 Nov 2018 06:11:55 -0400 Subject: [PATCH 1/3] Add codefix for 'convert to unknown' diagnostic Codefix for diagnostic error 2352: "Conversion of type '{0}' to type '{1}' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first." Add codefix for both AsExpressions and TypeAssertions --- src/compiler/diagnosticMessages.json | 8 ++++ ...dConvertToUnknownForNonOverlappingTypes.ts | 42 +++++++++++++++++++ src/services/tsconfig.json | 1 + ...ConvertToUnknownForNonOverlappingTypes1.ts | 8 ++++ ...ConvertToUnknownForNonOverlappingTypes2.ts | 8 ++++ ...ConvertToUnknownForNonOverlappingTypes3.ts | 8 ++++ ...ConvertToUnknownForNonOverlappingTypes4.ts | 8 ++++ ...ConvertToUnknownForNonOverlappingTypes5.ts | 8 ++++ ...ConvertToUnknownForNonOverlappingTypes6.ts | 8 ++++ ...ConvertToUnknownForNonOverlappingTypes7.ts | 8 ++++ ...ConvertToUnknownForNonOverlappingTypes8.ts | 8 ++++ ...vertToUnknownForNonOverlappingTypes_all.ts | 22 ++++++++++ 12 files changed, 137 insertions(+) create mode 100644 src/services/codefixes/addConvertToUnknownForNonOverlappingTypes.ts create mode 100644 tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes1.ts create mode 100644 tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes2.ts create mode 100644 tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes3.ts create mode 100644 tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes4.ts create mode 100644 tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes5.ts create mode 100644 tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes6.ts create mode 100644 tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes7.ts create mode 100644 tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes8.ts create mode 100644 tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes_all.ts diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 01aa861cab..07c1da2f77 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -4724,5 +4724,13 @@ "Generate types for all packages without types": { "category": "Message", "code": 95068 + }, + "Add 'unknown' conversion for non-overlapping types": { + "category": "Message", + "code": 95069 + }, + "Add 'unknown' to all conversions of non-overlapping types": { + "category": "Message", + "code": 95070 } } diff --git a/src/services/codefixes/addConvertToUnknownForNonOverlappingTypes.ts b/src/services/codefixes/addConvertToUnknownForNonOverlappingTypes.ts new file mode 100644 index 0000000000..2860c95638 --- /dev/null +++ b/src/services/codefixes/addConvertToUnknownForNonOverlappingTypes.ts @@ -0,0 +1,42 @@ +/* @internal */ +namespace ts.codefix { + const fixId = "addConvertToUnknownForNonOverlappingTypes"; + const errorCodes = [Diagnostics.Conversion_of_type_0_to_type_1_may_be_a_mistake_because_neither_type_sufficiently_overlaps_with_the_other_If_this_was_intentional_convert_the_expression_to_unknown_first.code]; + registerCodeFix({ + errorCodes, + getCodeActions: (context) => { + const changes = textChanges.ChangeTracker.with(context, t => makeChange(t, context.sourceFile, context.span.start)); + return [createCodeFixAction(fixId, changes, Diagnostics.Add_unknown_conversion_for_non_overlapping_types, fixId, Diagnostics.Add_unknown_to_all_conversions_of_non_overlapping_types)]; + }, + fixIds: [fixId], + getAllCodeActions: context => codeFixAll(context, errorCodes, (changes, diag) => makeChange(changes, diag.file, diag.start)), + }); + + function makeChange(changeTracker: textChanges.ChangeTracker, sourceFile: SourceFile, pos: number) { + const token = getTokenAtPosition(sourceFile, pos); + + const asExpression = findAncestor(token, isAsExpression)!; + if (!!asExpression) { + Debug.assert(!!asExpression, "Expected position to be owned by an as-expression."); + + const nodeBeingCast = asExpression.getChildAt(0); + const expressionBeingCast = findAncestor(nodeBeingCast, isExpression)!; + Debug.assert(!!expressionBeingCast, "Expected position to be owned by an expression."); + + const replacement = createAsExpression(expressionBeingCast, createKeywordTypeNode(SyntaxKind.UnknownKeyword)); + changeTracker.replaceNode(sourceFile, expressionBeingCast, replacement); + } + + const typeAssertion = findAncestor(token, isTypeAssertion)!; + if (!!typeAssertion) { + Debug.assert(!!typeAssertion, "Expected position to be owned by a type assertion."); + + const nodeBeingCast = typeAssertion.getLastToken(); + const expressionBeingCast = findAncestor(nodeBeingCast, isExpression)!; + Debug.assert(!!expressionBeingCast, "Expected position to be owned by an expression."); + + const replacement = createTypeAssertion(createKeywordTypeNode(SyntaxKind.UnknownKeyword), expressionBeingCast); + changeTracker.replaceNode(sourceFile, expressionBeingCast, replacement); + } + } +} diff --git a/src/services/tsconfig.json b/src/services/tsconfig.json index 66b1977ddc..74be7988d2 100644 --- a/src/services/tsconfig.json +++ b/src/services/tsconfig.json @@ -43,6 +43,7 @@ "textChanges.ts", "codeFixProvider.ts", "refactorProvider.ts", + "codefixes/addConvertToUnknownForNonOverlappingTypes.ts", "codefixes/addMissingInvocationForDecorator.ts", "codefixes/annotateWithTypeFromJSDoc.ts", "codefixes/convertFunctionToEs6Class.ts", diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes1.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes1.ts new file mode 100644 index 0000000000..2e67f62288 --- /dev/null +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes1.ts @@ -0,0 +1,8 @@ +/// + +////[|0 as string|] + +verify.codeFix({ + description: "Add 'unknown' conversion for non-overlapping types", + newRangeContent: `0 as unknown as string` +}); diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes2.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes2.ts new file mode 100644 index 0000000000..ce53304b22 --- /dev/null +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes2.ts @@ -0,0 +1,8 @@ +/// + +////[|0 * (4 + 3) / 100 as string|] + +verify.codeFix({ + description: "Add 'unknown' conversion for non-overlapping types", + newRangeContent: `0 * (4 + 3) / 100 as unknown as string` +}); diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes3.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes3.ts new file mode 100644 index 0000000000..1412121e3c --- /dev/null +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes3.ts @@ -0,0 +1,8 @@ +/// + +////[|["words"] as string|] + +verify.codeFix({ + description: "Add 'unknown' conversion for non-overlapping types", + newRangeContent: `["words"] as unknown as string` +}); diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes4.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes4.ts new file mode 100644 index 0000000000..6781dad3fb --- /dev/null +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes4.ts @@ -0,0 +1,8 @@ +/// + +////[|"words" as object|] + +verify.codeFix({ + description: "Add 'unknown' conversion for non-overlapping types", + newRangeContent: `"words" as unknown as object` +}); diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes5.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes5.ts new file mode 100644 index 0000000000..bfcebbbadf --- /dev/null +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes5.ts @@ -0,0 +1,8 @@ +/// + +////[|0|] + +verify.codeFix({ + description: "Add 'unknown' conversion for non-overlapping types", + newRangeContent: `0` +}); diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes6.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes6.ts new file mode 100644 index 0000000000..74e8df3de5 --- /dev/null +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes6.ts @@ -0,0 +1,8 @@ +/// + +////[|0 * (4 + 3) / 100|] + +verify.codeFix({ + description: "Add 'unknown' conversion for non-overlapping types", + newRangeContent: `0 * (4 + 3) / 100` +}); diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes7.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes7.ts new file mode 100644 index 0000000000..43f9e91c1f --- /dev/null +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes7.ts @@ -0,0 +1,8 @@ +/// + +////[|["words"]|] + +verify.codeFix({ + description: "Add 'unknown' conversion for non-overlapping types", + newRangeContent: `["words"]` +}); diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes8.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes8.ts new file mode 100644 index 0000000000..177e1237bd --- /dev/null +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes8.ts @@ -0,0 +1,8 @@ +/// + +////[|"words"|] + +verify.codeFix({ + description: "Add 'unknown' conversion for non-overlapping types", + newRangeContent: `"words"` +}); diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes_all.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes_all.ts new file mode 100644 index 0000000000..816761c651 --- /dev/null +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes_all.ts @@ -0,0 +1,22 @@ +/// + +////class C { +//// const s1 = 1 as string; +//// const o1 = s + " word" as object; +//// +//// const s2 = 2; +//// const o2 = s2; +////} + +verify.codeFixAll({ + fixId: "addConvertToUnknownForNonOverlappingTypes", + fixAllDescription: "Add 'unknown' to all conversions of non-overlapping types", + newFileContent: +`class C { + const s1 = 1 as unknown as string; + const o1 = s + " word" as unknown as object; + + const s2 = 2; + const o2 = s2; +}` +}); \ No newline at end of file From 2dc3c8e49f68c080b75998cf1f191941d83b0fd7 Mon Sep 17 00:00:00 2001 From: Ryan Clarke Date: Thu, 1 Nov 2018 07:46:15 -0400 Subject: [PATCH 2/3] Refactor convert to unknown codefix --- ...dConvertToUnknownForNonOverlappingTypes.ts | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/services/codefixes/addConvertToUnknownForNonOverlappingTypes.ts b/src/services/codefixes/addConvertToUnknownForNonOverlappingTypes.ts index 2860c95638..536c8b1f81 100644 --- a/src/services/codefixes/addConvertToUnknownForNonOverlappingTypes.ts +++ b/src/services/codefixes/addConvertToUnknownForNonOverlappingTypes.ts @@ -17,26 +17,22 @@ namespace ts.codefix { const asExpression = findAncestor(token, isAsExpression)!; if (!!asExpression) { - Debug.assert(!!asExpression, "Expected position to be owned by an as-expression."); + const nodeBeingConverted = asExpression.getChildAt(0); + const expressionBeingConverted = findAncestor(nodeBeingConverted, isExpression)!; + Debug.assert(!!expressionBeingConverted, "Expected position to be owned by an expression."); - const nodeBeingCast = asExpression.getChildAt(0); - const expressionBeingCast = findAncestor(nodeBeingCast, isExpression)!; - Debug.assert(!!expressionBeingCast, "Expected position to be owned by an expression."); - - const replacement = createAsExpression(expressionBeingCast, createKeywordTypeNode(SyntaxKind.UnknownKeyword)); - changeTracker.replaceNode(sourceFile, expressionBeingCast, replacement); + const replacement = createAsExpression(expressionBeingConverted, createKeywordTypeNode(SyntaxKind.UnknownKeyword)); + changeTracker.replaceNode(sourceFile, expressionBeingConverted, replacement); } const typeAssertion = findAncestor(token, isTypeAssertion)!; if (!!typeAssertion) { - Debug.assert(!!typeAssertion, "Expected position to be owned by a type assertion."); + const nodeBeingConverted = typeAssertion.getLastToken(); + const expressionBeingConverted = findAncestor(nodeBeingConverted, isExpression)!; + Debug.assert(!!expressionBeingConverted, "Expected position to be owned by an expression."); - const nodeBeingCast = typeAssertion.getLastToken(); - const expressionBeingCast = findAncestor(nodeBeingCast, isExpression)!; - Debug.assert(!!expressionBeingCast, "Expected position to be owned by an expression."); - - const replacement = createTypeAssertion(createKeywordTypeNode(SyntaxKind.UnknownKeyword), expressionBeingCast); - changeTracker.replaceNode(sourceFile, expressionBeingCast, replacement); + const replacement = createTypeAssertion(createKeywordTypeNode(SyntaxKind.UnknownKeyword), expressionBeingConverted); + changeTracker.replaceNode(sourceFile, expressionBeingConverted, replacement); } } } From ecb88f5a3ed74141bb42c96062cd7d859cfe42f9 Mon Sep 17 00:00:00 2001 From: Ryan Clarke Date: Wed, 7 Nov 2018 21:43:02 -0500 Subject: [PATCH 3/3] Fix comments on pull request --- ...dConvertToUnknownForNonOverlappingTypes.ts | 25 ++++--------------- ...ConvertToUnknownForNonOverlappingTypes1.ts | 4 +-- ...ConvertToUnknownForNonOverlappingTypes2.ts | 4 +-- ...ConvertToUnknownForNonOverlappingTypes3.ts | 4 +-- ...ConvertToUnknownForNonOverlappingTypes4.ts | 4 +-- ...ConvertToUnknownForNonOverlappingTypes5.ts | 4 +-- ...ConvertToUnknownForNonOverlappingTypes6.ts | 4 +-- ...ConvertToUnknownForNonOverlappingTypes7.ts | 4 +-- ...ConvertToUnknownForNonOverlappingTypes8.ts | 4 +-- ...vertToUnknownForNonOverlappingTypes_all.ts | 20 ++++++--------- 10 files changed, 29 insertions(+), 48 deletions(-) diff --git a/src/services/codefixes/addConvertToUnknownForNonOverlappingTypes.ts b/src/services/codefixes/addConvertToUnknownForNonOverlappingTypes.ts index 536c8b1f81..e6e8d759c6 100644 --- a/src/services/codefixes/addConvertToUnknownForNonOverlappingTypes.ts +++ b/src/services/codefixes/addConvertToUnknownForNonOverlappingTypes.ts @@ -14,25 +14,10 @@ namespace ts.codefix { function makeChange(changeTracker: textChanges.ChangeTracker, sourceFile: SourceFile, pos: number) { const token = getTokenAtPosition(sourceFile, pos); - - const asExpression = findAncestor(token, isAsExpression)!; - if (!!asExpression) { - const nodeBeingConverted = asExpression.getChildAt(0); - const expressionBeingConverted = findAncestor(nodeBeingConverted, isExpression)!; - Debug.assert(!!expressionBeingConverted, "Expected position to be owned by an expression."); - - const replacement = createAsExpression(expressionBeingConverted, createKeywordTypeNode(SyntaxKind.UnknownKeyword)); - changeTracker.replaceNode(sourceFile, expressionBeingConverted, replacement); - } - - const typeAssertion = findAncestor(token, isTypeAssertion)!; - if (!!typeAssertion) { - const nodeBeingConverted = typeAssertion.getLastToken(); - const expressionBeingConverted = findAncestor(nodeBeingConverted, isExpression)!; - Debug.assert(!!expressionBeingConverted, "Expected position to be owned by an expression."); - - const replacement = createTypeAssertion(createKeywordTypeNode(SyntaxKind.UnknownKeyword), expressionBeingConverted); - changeTracker.replaceNode(sourceFile, expressionBeingConverted, replacement); - } + const assertion = Debug.assertDefined(findAncestor(token, (n): n is AsExpression | TypeAssertion => isAsExpression(n) || isTypeAssertion(n))); + const replacement = isAsExpression(assertion) + ? createAsExpression(assertion.expression, createKeywordTypeNode(SyntaxKind.UnknownKeyword)) + : createTypeAssertion(createKeywordTypeNode(SyntaxKind.UnknownKeyword), assertion.expression); + changeTracker.replaceNode(sourceFile, assertion.expression, replacement); } } diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes1.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes1.ts index 2e67f62288..df094bd545 100644 --- a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes1.ts +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes1.ts @@ -1,8 +1,8 @@ /// -////[|0 as string|] +////0 as string verify.codeFix({ description: "Add 'unknown' conversion for non-overlapping types", - newRangeContent: `0 as unknown as string` + newFileContent: `0 as unknown as string` }); diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes2.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes2.ts index ce53304b22..138415aa79 100644 --- a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes2.ts +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes2.ts @@ -1,8 +1,8 @@ /// -////[|0 * (4 + 3) / 100 as string|] +////0 * (4 + 3) / 100 as string verify.codeFix({ description: "Add 'unknown' conversion for non-overlapping types", - newRangeContent: `0 * (4 + 3) / 100 as unknown as string` + newFileContent: `0 * (4 + 3) / 100 as unknown as string` }); diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes3.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes3.ts index 1412121e3c..7868f4b2fb 100644 --- a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes3.ts +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes3.ts @@ -1,8 +1,8 @@ /// -////[|["words"] as string|] +////["words"] as string verify.codeFix({ description: "Add 'unknown' conversion for non-overlapping types", - newRangeContent: `["words"] as unknown as string` + newFileContent: `["words"] as unknown as string` }); diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes4.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes4.ts index 6781dad3fb..baaa8acae5 100644 --- a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes4.ts +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes4.ts @@ -1,8 +1,8 @@ /// -////[|"words" as object|] +////"words" as object verify.codeFix({ description: "Add 'unknown' conversion for non-overlapping types", - newRangeContent: `"words" as unknown as object` + newFileContent: `"words" as unknown as object` }); diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes5.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes5.ts index bfcebbbadf..24231e769d 100644 --- a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes5.ts +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes5.ts @@ -1,8 +1,8 @@ /// -////[|0|] +////0 verify.codeFix({ description: "Add 'unknown' conversion for non-overlapping types", - newRangeContent: `0` + newFileContent: `0` }); diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes6.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes6.ts index 74e8df3de5..e3349e95cd 100644 --- a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes6.ts +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes6.ts @@ -1,8 +1,8 @@ /// -////[|0 * (4 + 3) / 100|] +////0 * (4 + 3) / 100 verify.codeFix({ description: "Add 'unknown' conversion for non-overlapping types", - newRangeContent: `0 * (4 + 3) / 100` + newFileContent: `0 * (4 + 3) / 100` }); diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes7.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes7.ts index 43f9e91c1f..02b88d702a 100644 --- a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes7.ts +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes7.ts @@ -1,8 +1,8 @@ /// -////[|["words"]|] +////["words"] verify.codeFix({ description: "Add 'unknown' conversion for non-overlapping types", - newRangeContent: `["words"]` + newFileContent: `["words"]` }); diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes8.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes8.ts index 177e1237bd..38d4de370a 100644 --- a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes8.ts +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes8.ts @@ -1,8 +1,8 @@ /// -////[|"words"|] +////"words" verify.codeFix({ description: "Add 'unknown' conversion for non-overlapping types", - newRangeContent: `"words"` + newFileContent: `"words"` }); diff --git a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes_all.ts b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes_all.ts index 816761c651..baf2b96718 100644 --- a/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes_all.ts +++ b/tests/cases/fourslash/codeFixAddConvertToUnknownForNonOverlappingTypes_all.ts @@ -1,22 +1,18 @@ /// -////class C { -//// const s1 = 1 as string; -//// const o1 = s + " word" as object; +////const s1 = 1 as string; +////const o1 = s + " word" as object; //// -//// const s2 = 2; -//// const o2 = s2; -////} +////const s2 = 2; +////const o2 = s2; verify.codeFixAll({ fixId: "addConvertToUnknownForNonOverlappingTypes", fixAllDescription: "Add 'unknown' to all conversions of non-overlapping types", newFileContent: -`class C { - const s1 = 1 as unknown as string; - const o1 = s + " word" as unknown as object; +`const s1 = 1 as unknown as string; +const o1 = s + " word" as unknown as object; - const s2 = 2; - const o2 = s2; -}` +const s2 = 2; +const o2 = s2;` }); \ No newline at end of file