(statements, node)
| 97192 | return body; |
| 97193 | } |
| 97194 | function appendObjectRestAssignmentsIfNeeded(statements, node) { |
| 97195 | var containsPrecedingObjectRestOrSpread = false; |
| 97196 | for (var _i = 0, _a = node.parameters; _i < _a.length; _i++) { |
| 97197 | var parameter = _a[_i]; |
| 97198 | if (containsPrecedingObjectRestOrSpread) { |
| 97199 | if (ts.isBindingPattern(parameter.name)) { |
| 97200 | // In cases where a binding pattern is simply '[]' or '{}', |
| 97201 | // we usually don't want to emit a var declaration; however, in the presence |
| 97202 | // of an initializer, we must emit that expression to preserve side effects. |
| 97203 | // |
| 97204 | // NOTE: see `insertDefaultValueAssignmentForBindingPattern` in es2015.ts |
| 97205 | if (parameter.name.elements.length > 0) { |
| 97206 | var declarations = ts.flattenDestructuringBinding(parameter, visitor, context, 0 /* FlattenLevel.All */, factory.getGeneratedNameForNode(parameter)); |
| 97207 | if (ts.some(declarations)) { |
| 97208 | var declarationList = factory.createVariableDeclarationList(declarations); |
| 97209 | var statement = factory.createVariableStatement(/*modifiers*/ undefined, declarationList); |
| 97210 | ts.setEmitFlags(statement, 1048576 /* EmitFlags.CustomPrologue */); |
| 97211 | statements = ts.append(statements, statement); |
| 97212 | } |
| 97213 | } |
| 97214 | else if (parameter.initializer) { |
| 97215 | var name = factory.getGeneratedNameForNode(parameter); |
| 97216 | var initializer = ts.visitNode(parameter.initializer, visitor, ts.isExpression); |
| 97217 | var assignment = factory.createAssignment(name, initializer); |
| 97218 | var statement = factory.createExpressionStatement(assignment); |
| 97219 | ts.setEmitFlags(statement, 1048576 /* EmitFlags.CustomPrologue */); |
| 97220 | statements = ts.append(statements, statement); |
| 97221 | } |
| 97222 | } |
| 97223 | else if (parameter.initializer) { |
| 97224 | // Converts a parameter initializer into a function body statement, i.e.: |
| 97225 | // |
| 97226 | // function f(x = 1) { } |
| 97227 | // |
| 97228 | // becomes |
| 97229 | // |
| 97230 | // function f(x) { |
| 97231 | // if (typeof x === "undefined") { x = 1; } |
| 97232 | // } |
| 97233 | var name = factory.cloneNode(parameter.name); |
| 97234 | ts.setTextRange(name, parameter.name); |
| 97235 | ts.setEmitFlags(name, 48 /* EmitFlags.NoSourceMap */); |
| 97236 | var initializer = ts.visitNode(parameter.initializer, visitor, ts.isExpression); |
| 97237 | ts.addEmitFlags(initializer, 48 /* EmitFlags.NoSourceMap */ | 1536 /* EmitFlags.NoComments */); |
| 97238 | var assignment = factory.createAssignment(name, initializer); |
| 97239 | ts.setTextRange(assignment, parameter); |
| 97240 | ts.setEmitFlags(assignment, 1536 /* EmitFlags.NoComments */); |
| 97241 | var block = factory.createBlock([factory.createExpressionStatement(assignment)]); |
| 97242 | ts.setTextRange(block, parameter); |
| 97243 | ts.setEmitFlags(block, 1 /* EmitFlags.SingleLine */ | 32 /* EmitFlags.NoTrailingSourceMap */ | 384 /* EmitFlags.NoTokenSourceMaps */ | 1536 /* EmitFlags.NoComments */); |
| 97244 | var typeCheck = factory.createTypeCheck(factory.cloneNode(parameter.name), "undefined"); |
| 97245 | var statement = factory.createIfStatement(typeCheck, block); |
| 97246 | ts.startOnNewLine(statement); |
| 97247 | ts.setTextRange(statement, parameter); |
| 97248 | ts.setEmitFlags(statement, 384 /* EmitFlags.NoTokenSourceMaps */ | 32 /* EmitFlags.NoTrailingSourceMap */ | 1048576 /* EmitFlags.CustomPrologue */ | 1536 /* EmitFlags.NoComments */); |
| 97249 | statements = ts.append(statements, statement); |
| 97250 | } |
| 97251 | } |
no test coverage detected
searching dependent graphs…