Skip to content

Commit 60ed259

Browse files
Preserve initializer.
1 parent b159944 commit 60ed259

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

src/compiler/emitter.ts

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3142,30 +3142,41 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
31423142
return;
31433143
}
31443144

3145-
let paramName = parameter.name;
3145+
let { name: paramName, initializer } = parameter;
31463146
if (isBindingPattern(paramName)) {
3147-
// In cases where a binding patternm is simply '[]' or '{}',
3148-
// we don't want to emit anything.
3149-
if (paramName.elements.length > 0) {
3147+
// In cases where a binding pattern is simply '[]' or '{}',
3148+
// we usually don't want to emit a var declaration; however, in the presence
3149+
// of an initializer, we must emit that expression to preserve side effects.
3150+
let hasBindingElements = paramName.elements.length > 0;
3151+
if (hasBindingElements || initializer) {
31503152
writeLine();
31513153
write("var ");
3152-
emitDestructuring(parameter, /*isAssignmentExpressionStatement*/ false, tempParameters[tempIndex]);
3154+
3155+
if (hasBindingElements) {
3156+
emitDestructuring(parameter, /*isAssignmentExpressionStatement*/ false, tempParameters[tempIndex]);
3157+
}
3158+
else {
3159+
emit(tempParameters[tempIndex]);
3160+
write(" = ");
3161+
emit(initializer);
3162+
}
3163+
31533164
write(";");
31543165
tempIndex++;
31553166
}
31563167
}
3157-
else if (parameter.initializer) {
3168+
else if (initializer) {
31583169
writeLine();
31593170
emitStart(parameter);
31603171
write("if (");
3161-
emitNodeWithoutSourceMap(parameter.name);
3172+
emitNodeWithoutSourceMap(paramName);
31623173
write(" === void 0)");
31633174
emitEnd(parameter);
31643175
write(" { ");
31653176
emitStart(parameter);
3166-
emitNodeWithoutSourceMap(parameter.name);
3177+
emitNodeWithoutSourceMap(paramName);
31673178
write(" = ");
3168-
emitNodeWithoutSourceMap(parameter.initializer);
3179+
emitNodeWithoutSourceMap(initializer);
31693180
emitEnd(parameter);
31703181
write("; }");
31713182
}

0 commit comments

Comments
 (0)