diff --git a/src/evaluate/expression.ts b/src/evaluate/expression.ts index 8a219a6..7966344 100644 --- a/src/evaluate/expression.ts +++ b/src/evaluate/expression.ts @@ -554,6 +554,9 @@ export interface SpreadOptions { export function* SpreadElement(node: acorn.SpreadElement, scope: Scope, options: SpreadOptions = {}) { const result = yield* evaluate(node.argument, scope) + if (typeof Symbol === 'function' && typeof result[Symbol.iterator] !== 'function') { + throw new TypeError('Spread syntax requires ...iterable[Symbol.iterator] to be a function') + } return options.spreadProps ? result : [...result] }