Skip to content

Commit e019d60

Browse files
committed
fix: harmless parent is undefined crash?
1 parent b4b1f3b commit e019d60

File tree

2 files changed

+6
-5
lines changed

2 files changed

+6
-5
lines changed

typescript/src/codeActions/extended/addMissingProperties.ts renamed to typescript/src/codeActions/extended/declareMissingProperties.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
1+
import { matchParents } from '../../utils'
12
import { ExtendedCodeAction } from '../getCodeActions'
23

34
export default {
45
codes: [2339],
56
kind: 'quickfix',
67
title: 'Declare missing property',
78
tryToApply({ sourceFile, node }) {
8-
if (node && ts.isIdentifier(node) && ts.isObjectBindingPattern(node.parent.parent) && ts.isParameter(node.parent.parent.parent)) {
9-
const param = node.parent.parent.parent
9+
const param = matchParents(node, ['Identifier', 'ObjectBindingPattern', 'Parameter'])
10+
if (param) {
1011
// special react pattern
1112
if (ts.isArrowFunction(param.parent) && ts.isVariableDeclaration(param.parent.parent)) {
1213
const variableDecl = param.parent.parent
@@ -19,7 +20,7 @@ export default {
1920
const hasMembers = param.type.members.length > 0
2021
const insertPos = param.type.members.at(-1)?.end ?? param.type.end - 1
2122
const insertComma = hasMembers && sourceFile.getFullText().slice(insertPos - 1, insertPos) !== ','
22-
let insertText = node.text
23+
let insertText = (node as ts.Identifier).text
2324
if (insertComma) insertText = `, ${insertText}`
2425
// alternatively only one snippetEdit could be used with tsFull.escapeSnippetText(insertText) + $0
2526
return {

typescript/src/codeActions/getCodeActions.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { ApplyExtendedCodeActionResult, IpcExtendedCodeAction } from '../ipcType
55
import objectSwapKeysAndValues from './custom/objectSwapKeysAndValues'
66
import changeStringReplaceToRegex from './custom/changeStringReplaceToRegex'
77
import splitDeclarationAndInitialization from './custom/splitDeclarationAndInitialization'
8-
import addMissingProperties from './extended/addMissingProperties'
8+
import declareMissingProperties from './extended/declareMissingProperties'
99
import { renameParameterToNameFromType, renameAllParametersToNameFromType } from './custom/renameParameterToNameFromType'
1010

1111
const codeActions: CodeAction[] = [
@@ -15,7 +15,7 @@ const codeActions: CodeAction[] = [
1515
renameParameterToNameFromType,
1616
renameAllParametersToNameFromType,
1717
]
18-
const extendedCodeActions: ExtendedCodeAction[] = [addMissingProperties]
18+
const extendedCodeActions: ExtendedCodeAction[] = [declareMissingProperties]
1919

2020
type SimplifiedRefactorInfo =
2121
| {

0 commit comments

Comments
 (0)