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 01aa861cabb76..07c1da2f7758f 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 0000000000000..2860c956387b3 --- /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 66b1977ddc573..74be7988d2d98 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 0000000000000..2e67f62288bbb --- /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 0000000000000..ce53304b22e43 --- /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 0000000000000..1412121e3c885 --- /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 0000000000000..6781dad3fb216 --- /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 0000000000000..bfcebbbadf8af --- /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 0000000000000..74e8df3de5f61 --- /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 0000000000000..43f9e91c1f8b7 --- /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 0000000000000..177e1237bd757 --- /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 0000000000000..816761c65168c --- /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 2860c956387b3..536c8b1f817ca 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 nodeBeingCast = typeAssertion.getLastToken(); - const expressionBeingCast = findAncestor(nodeBeingCast, isExpression)!; - Debug.assert(!!expressionBeingCast, "Expected position to be owned by an expression."); + 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), 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 536c8b1f817ca..e6e8d759c6018 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 2e67f62288bbb..df094bd5454a8 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 ce53304b22e43..138415aa79f3b 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 1412121e3c885..7868f4b2fb9d5 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 6781dad3fb216..baaa8acae59c6 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 bfcebbbadf8af..24231e769d989 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 74e8df3de5f61..e3349e95cd85e 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 43f9e91c1f8b7..02b88d702ac7d 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 177e1237bd757..38d4de370a217 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 816761c65168c..baf2b96718678 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