turbo
ca9b635d - fix: Fix ECMAScript analyzer (#8656)

Commit
1 year ago
fix: Fix ECMAScript analyzer (#8656) ### Description I faced this bug while working on https://github.com/vercel/turbo/pull/8523. Tree shaking inevitably creates direct imports for let bindings, and when the LHS of `+=` is imported/exported, it triggers a bug. The problematic input file looks like ```js // Combined load times for loading client components let clientComponentLoadStart = 0 let clientComponentLoadTimes = 0 let clientComponentLoadCount = 0 export function wrapClientComponentLoader(ComponentMod: any) { if (!('performance' in globalThis)) { return ComponentMod.__next_app__ } return { require: (...args: any[]) => { const startTime = performance.now() if (clientComponentLoadStart === 0) { clientComponentLoadStart = startTime } try { clientComponentLoadCount += 1 return ComponentMod.__next_app__.require(...args) } finally { clientComponentLoadTimes += performance.now() - startTime } }, loadChunk: (...args: any[]) => { const startTime = performance.now() try { clientComponentLoadCount += 1 return ComponentMod.__next_app__.loadChunk(...args) } finally { clientComponentLoadTimes += performance.now() - startTime } }, } } export function getClientComponentLoaderMetrics( options: { reset?: boolean } = {} ) { const metrics = clientComponentLoadStart === 0 ? undefined : { clientComponentLoadStart, clientComponentLoadTimes, clientComponentLoadCount, } if (options.reset) { clientComponentLoadStart = 0 clientComponentLoadTimes = 0 clientComponentLoadCount = 0 } return metrics } ``` and it works if I apply this PR or I replace `clientComponentLoadTimes += performance.now() - startTime` with `clientComponentLoadTimes = clientComponentLoadTimes + performance.now() - startTime`. ### Testing Instructions Test references changed quite a lot.
Author
Parents
Loading