diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 1503da355c7..ad4ec27e1ba 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2211,23 +2211,22 @@ namespace ts { function buildBindingElementDisplay(bindingElement: BindingElement, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags, symbolStack?: Symbol[]) { if (bindingElement.kind === SyntaxKind.OmittedExpression) { - writeSpace(writer); + return; } - else if (bindingElement.kind === SyntaxKind.BindingElement) { - if (bindingElement.propertyName) { - writer.writeSymbol(getTextOfNode(bindingElement.propertyName), bindingElement.symbol); - writePunctuation(writer, SyntaxKind.ColonToken); + Debug.assert(bindingElement.kind === SyntaxKind.BindingElement); + if (bindingElement.propertyName) { + writer.writeSymbol(getTextOfNode(bindingElement.propertyName), bindingElement.symbol); + writePunctuation(writer, SyntaxKind.ColonToken); + } + if (bindingElement.name) { + if (isBindingPattern(bindingElement.name)) { + buildBindingPatternDisplay(bindingElement.name, writer, enclosingDeclaration, flags, symbolStack); } - if (bindingElement.name) { - if (isBindingPattern(bindingElement.name)) { - buildBindingPatternDisplay(bindingElement.name, writer, enclosingDeclaration, flags, symbolStack); - } - else { - if (bindingElement.dotDotDotToken) { - writePunctuation(writer, SyntaxKind.DotDotDotToken); - } - appendSymbolNameOnly(bindingElement.symbol, writer); + else { + if (bindingElement.dotDotDotToken) { + writePunctuation(writer, SyntaxKind.DotDotDotToken); } + appendSymbolNameOnly(bindingElement.symbol, writer); } } } diff --git a/tests/baselines/reference/arrayBindingPatternOmittedExpressions.types b/tests/baselines/reference/arrayBindingPatternOmittedExpressions.types index e529c7cdde5..77db8cc250d 100644 --- a/tests/baselines/reference/arrayBindingPatternOmittedExpressions.types +++ b/tests/baselines/reference/arrayBindingPatternOmittedExpressions.types @@ -25,7 +25,7 @@ var results: string[]; function f([, a, , b, , , , s, , , ] = results) { ->f : ([ , a, , b, , , , s, , ,]?: string[]) => void +>f : ([, a, , b, , , , s, , ,]?: string[]) => void > : undefined >a : string > : undefined diff --git a/tests/baselines/reference/arrowFunctionExpressions.types b/tests/baselines/reference/arrowFunctionExpressions.types index b2e6cf1e57b..9efc2db7a3b 100644 --- a/tests/baselines/reference/arrowFunctionExpressions.types +++ b/tests/baselines/reference/arrowFunctionExpressions.types @@ -65,14 +65,14 @@ var p2 = ([...a]) => { }; >a : any[] var p3 = ([, a]) => { }; ->p3 : ([ , a]: [any, any]) => void ->([, a]) => { } : ([ , a]: [any, any]) => void +>p3 : ([, a]: [any, any]) => void +>([, a]) => { } : ([, a]: [any, any]) => void > : undefined >a : any var p4 = ([, ...a]) => { }; ->p4 : ([ , ...a]: any[]) => void ->([, ...a]) => { } : ([ , ...a]: any[]) => void +>p4 : ([, ...a]: any[]) => void +>([, ...a]) => { } : ([, ...a]: any[]) => void > : undefined >a : any[] diff --git a/tests/baselines/reference/declarationEmitDestructuring5.types b/tests/baselines/reference/declarationEmitDestructuring5.types index 0b36373ebe2..961dea62bcb 100644 --- a/tests/baselines/reference/declarationEmitDestructuring5.types +++ b/tests/baselines/reference/declarationEmitDestructuring5.types @@ -1,23 +1,23 @@ === tests/cases/compiler/declarationEmitDestructuring5.ts === function baz([, z, , ]) { } ->baz : ([ , z, ,]: [any, any, any]) => void +>baz : ([, z, ,]: [any, any, any]) => void > : undefined >z : any > : undefined function foo([, b, ]: [any, any]): void { } ->foo : ([ , b,]: [any, any]) => void +>foo : ([, b,]: [any, any]) => void > : undefined >b : any function bar([z, , , ]) { } ->bar : ([z, , ,]: [any, any, any]) => void +>bar : ([z, , ,]: [any, any, any]) => void >z : any > : undefined > : undefined function bar1([z, , , ] = [1, 3, 4, 6, 7]) { } ->bar1 : ([z, , ,]?: [number, number, number, number, number]) => void +>bar1 : ([z, , ,]?: [number, number, number, number, number]) => void >z : number > : undefined > : undefined @@ -29,7 +29,7 @@ function bar1([z, , , ] = [1, 3, 4, 6, 7]) { } >7 : number function bar2([,,z, , , ]) { } ->bar2 : ([ , , z, , ,]: [any, any, any, any, any]) => void +>bar2 : ([, , z, , ,]: [any, any, any, any, any]) => void > : undefined > : undefined >z : any diff --git a/tests/baselines/reference/emitArrowFunctionES6.types b/tests/baselines/reference/emitArrowFunctionES6.types index 21340956c59..1730ef25534 100644 --- a/tests/baselines/reference/emitArrowFunctionES6.types +++ b/tests/baselines/reference/emitArrowFunctionES6.types @@ -52,14 +52,14 @@ var p2 = ([...a]) => { }; >a : any[] var p3 = ([, a]) => { }; ->p3 : ([ , a]: [any, any]) => void ->([, a]) => { } : ([ , a]: [any, any]) => void +>p3 : ([, a]: [any, any]) => void +>([, a]) => { } : ([, a]: [any, any]) => void > : undefined >a : any var p4 = ([, ...a]) => { }; ->p4 : ([ , ...a]: Iterable) => void ->([, ...a]) => { } : ([ , ...a]: Iterable) => void +>p4 : ([, ...a]: Iterable) => void +>([, ...a]) => { } : ([, ...a]: Iterable) => void > : undefined >a : any[] diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.types b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.types index fcdeba6becc..9c695f1c0dd 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern.types @@ -18,7 +18,7 @@ var robotA: Robot = [1, "mower", "mowing"]; >"mowing" : string function foo1([, nameA]: Robot) { ->foo1 : ([ , nameA]: [number, string, string]) => void +>foo1 : ([, nameA]: [number, string, string]) => void > : undefined >nameA : string >Robot : [number, string, string] @@ -75,12 +75,12 @@ function foo4([numberA3, ...robotAInfo]: Robot) { foo1(robotA); >foo1(robotA) : void ->foo1 : ([ , nameA]: [number, string, string]) => void +>foo1 : ([, nameA]: [number, string, string]) => void >robotA : [number, string, string] foo1([2, "trimmer", "trimming"]); >foo1([2, "trimmer", "trimming"]) : void ->foo1 : ([ , nameA]: [number, string, string]) => void +>foo1 : ([, nameA]: [number, string, string]) => void >[2, "trimmer", "trimming"] : [number, string, string] >2 : number >"trimmer" : string diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.types b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.types index 14977147a7d..b3e09d962c3 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPattern2.types @@ -19,7 +19,7 @@ var robotA: Robot = ["trimmer", ["trimming", "edging"]]; >"edging" : string function foo1([, skillA]: Robot) { ->foo1 : ([ , skillA]: [string, [string, string]]) => void +>foo1 : ([, skillA]: [string, [string, string]]) => void > : undefined >skillA : [string, string] >Robot : [string, [string, string]] @@ -75,12 +75,12 @@ function foo4([...multiRobotAInfo]: Robot) { foo1(robotA); >foo1(robotA) : void ->foo1 : ([ , skillA]: [string, [string, string]]) => void +>foo1 : ([, skillA]: [string, [string, string]]) => void >robotA : [string, [string, string]] foo1(["roomba", ["vaccum", "mopping"]]); >foo1(["roomba", ["vaccum", "mopping"]]) : void ->foo1 : ([ , skillA]: [string, [string, string]]) => void +>foo1 : ([, skillA]: [string, [string, string]]) => void >["roomba", ["vaccum", "mopping"]] : [string, [string, string]] >"roomba" : string >["vaccum", "mopping"] : [string, string] diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.types b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.types index 328f003f7d1..366c538dda7 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues.types @@ -18,7 +18,7 @@ var robotA: Robot = [1, "mower", "mowing"]; >"mowing" : string function foo1([, nameA = "noName"]: Robot = [-1, "name", "skill"]) { ->foo1 : ([ , nameA]?: [number, string, string]) => void +>foo1 : ([, nameA]?: [number, string, string]) => void > : undefined >nameA : string >"noName" : string @@ -104,12 +104,12 @@ function foo4([numberA3 = -1, ...robotAInfo]: Robot = [-1, "name", "skill"]) { foo1(robotA); >foo1(robotA) : void ->foo1 : ([ , nameA]?: [number, string, string]) => void +>foo1 : ([, nameA]?: [number, string, string]) => void >robotA : [number, string, string] foo1([2, "trimmer", "trimming"]); >foo1([2, "trimmer", "trimming"]) : void ->foo1 : ([ , nameA]?: [number, string, string]) => void +>foo1 : ([, nameA]?: [number, string, string]) => void >[2, "trimmer", "trimming"] : [number, string, string] >2 : number >"trimmer" : string diff --git a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.types b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.types index d47aef363c9..bd140d6a232 100644 --- a/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.types +++ b/tests/baselines/reference/sourceMapValidationDestructuringParametertArrayBindingPatternDefaultValues2.types @@ -19,7 +19,7 @@ var robotA: Robot = ["trimmer", ["trimming", "edging"]]; >"edging" : string function foo1([, skillA = ["noSkill", "noSkill"]]: Robot= ["name", ["skill1", "skill2"]]) { ->foo1 : ([ , skillA]?: [string, string[]]) => void +>foo1 : ([, skillA]?: [string, string[]]) => void > : undefined >skillA : string[] >["noSkill", "noSkill"] : string[] @@ -88,12 +88,12 @@ function foo3([nameMA = "noName", [ foo1(robotA); >foo1(robotA) : void ->foo1 : ([ , skillA]?: [string, string[]]) => void +>foo1 : ([, skillA]?: [string, string[]]) => void >robotA : [string, string[]] foo1(["roomba", ["vaccum", "mopping"]]); >foo1(["roomba", ["vaccum", "mopping"]]) : void ->foo1 : ([ , skillA]?: [string, string[]]) => void +>foo1 : ([, skillA]?: [string, string[]]) => void >["roomba", ["vaccum", "mopping"]] : [string, string[]] >"roomba" : string >["vaccum", "mopping"] : string[]