From ecb88f5a3ed74141bb42c96062cd7d859cfe42f9 Mon Sep 17 00:00:00 2001 From: Ryan Clarke Date: Wed, 7 Nov 2018 21:43:02 -0500 Subject: [PATCH] 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 536c8b1f817..e6e8d759c60 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 2e67f62288b..df094bd5454 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 ce53304b22e..138415aa79f 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 1412121e3c8..7868f4b2fb9 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 6781dad3fb2..baaa8acae59 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 bfcebbbadf8..24231e769d9 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 74e8df3de5f..e3349e95cd8 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 43f9e91c1f8..02b88d702ac 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 177e1237bd7..38d4de370a2 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 816761c6516..baf2b967186 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