diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index 705c0811cdc..6f3041666ba 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -1268,12 +1268,12 @@ namespace ts { } function emitBindingElement(node: BindingElement) { + emitIfPresent(node.dotDotDotToken); if (node.propertyName) { emit(node.propertyName); writePunctuation(":"); writeSpace(); } - emitIfPresent(node.dotDotDotToken); emit(node.name); emitInitializer(node.initializer); } diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts index 407da15b59c..ff89c55fc1e 100644 --- a/src/compiler/parser.ts +++ b/src/compiler/parser.ts @@ -126,8 +126,8 @@ namespace ts { case SyntaxKind.BindingElement: return visitNodes(cbNode, cbNodes, node.decorators) || visitNodes(cbNode, cbNodes, node.modifiers) || - visitNode(cbNode, (node).propertyName) || visitNode(cbNode, (node).dotDotDotToken) || + visitNode(cbNode, (node).propertyName) || visitNode(cbNode, (node).name) || visitNode(cbNode, (node).initializer); case SyntaxKind.FunctionType: diff --git a/tests/cases/fourslash/formatObjectBindingPattern_restElementWithPropertyName.ts b/tests/cases/fourslash/formatObjectBindingPattern_restElementWithPropertyName.ts new file mode 100644 index 00000000000..f50239d9f5b --- /dev/null +++ b/tests/cases/fourslash/formatObjectBindingPattern_restElementWithPropertyName.ts @@ -0,0 +1,6 @@ +/// + +////const { ...a: b } = {}; + +format.document(); +verify.currentFileContentIs("const { ...a: b } = {};");