From e26bc8a117143acbca28921a67402b2824d9f15b Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 4 May 2022 15:07:34 -0700 Subject: [PATCH] Skip missing nodes in formatting (#48953) --- src/services/formatting/formatting.ts | 4 ++++ tests/cases/fourslash/formatV8Directive.ts | 7 +++++++ 2 files changed, 11 insertions(+) create mode 100644 tests/cases/fourslash/formatV8Directive.ts diff --git a/src/services/formatting/formatting.ts b/src/services/formatting/formatting.ts index cc5e2b6c41c..b3e84023d17 100644 --- a/src/services/formatting/formatting.ts +++ b/src/services/formatting/formatting.ts @@ -691,6 +691,10 @@ namespace ts.formatting { isListItem: boolean, isFirstListItem?: boolean): number { + if (nodeIsMissing(child)) { + return inheritedIndentation; + } + const childStartPos = child.getStart(sourceFile); const childStartLine = sourceFile.getLineAndCharacterOfPosition(childStartPos).line; diff --git a/tests/cases/fourslash/formatV8Directive.ts b/tests/cases/fourslash/formatV8Directive.ts new file mode 100644 index 00000000000..515ef57c7ca --- /dev/null +++ b/tests/cases/fourslash/formatV8Directive.ts @@ -0,0 +1,7 @@ +/// +// @Filename: foo.js +//// function foo() {} +//// /*1*/%PrepareFunctionForOptimization(foo)/*2*/; + +// Don't really care what it does beyond not crashing +format.selection("1", "2");