From 55f2504fc0a3326854f1bfdf24ae829c06dfc2b8 Mon Sep 17 00:00:00 2001 From: Andrew Branch Date: Wed, 4 May 2022 10:23:26 -0700 Subject: [PATCH] Skip missing nodes in formatting --- 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 cc5e2b6c41c46..b3e84023d175a 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 0000000000000..515ef57c7ca96 --- /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");