diff --git a/src/compiler/factory.ts b/src/compiler/factory.ts index ec19d2c906c12..53a4940e61c4c 100644 --- a/src/compiler/factory.ts +++ b/src/compiler/factory.ts @@ -21,11 +21,15 @@ namespace ts { * Make `elements` into a `NodeArray`. If `elements` is `undefined`, returns an empty `NodeArray`. */ export function createNodeArray(elements?: ReadonlyArray, hasTrailingComma?: boolean): NodeArray { - if (!elements || elements === emptyArray) { - elements = []; + if (elements) { + if (isNodeArray(elements)) { + return elements; + } + // elements is a ReadonlyArray, so create a fresh array before adding properties. + elements = elements.slice(); } - else if (isNodeArray(elements)) { - return elements; + else { + elements = []; } const array = >elements;