Skip to content

minifier doesn't evaluate multiple constant checks #11090

@aquapi

Description

@aquapi

Describe the bug

swc only evaluates one check for some reason.

let n,
  hooks,
  isHydrating = !1;
isHydrating = !0;
let localDeps = '',
  localDepsCnt = 0,
  injectDependency = (c) => (
    isHydrating || (localDeps += c + ','), localDepsCnt++
  );
let logID = isHydrating ? '' : injectDependency(
  '() => console.log("ID:", +Math.random().toFixed(2))',
);
// isHydrating is not evaluated
// If logID2 is commented out it evaluates isHydrating and tree shake injectDependency as expected
let logID2 = isHydrating ? '' : injectDependency(
  '() => console.log("ID:", +Math.random().toFixed(2))',
);

Input code

Config

Link to the code that reproduces this issue

https://play.swc.rs/?version=1.13.5&code=H4sIAAAAAAAAA72PsQ6CMBCGd57iZGmbEoKMEHSQGBl8CNI2gNbW0A6S8PAeJCro7nb5Lv%2F%2F3WnlwUQBQGvt1U1D506D7GvfmQYK2Gzz4IskeaAxpa2odanuDhkhU%2FJNDsYjTOY2c1HCI1RGKiMG5FQwKHZAcbu2jSPQTysvQAAHEhEWrao5xyR7HdFUJXYua%2FZ4DmQ%2F5slH6KwW1jirVYxpGlZlFkbAz7Vv47420t4oi709dg8lacoYvraUpX%2BwPQGskmBjlQEAAA%3D%3D&config=H4sIAAAAAAAAA32US3LbMAyG9z6FR%2BsuOpmmixygu56BQ5OgTJcPDQE61mR890CU7LgxpJ2EDz9AAiA%2Bdvt9d0LTve0%2F%2BJN%2FBl0Qyv2fLTgm0he2dGCiRlP8QN2PGz3hhJwOCM10nUlHuvRATYUvP19%2BLYou5IxwUyy26JN342NOk%2BNQAPHBxlYOWSMkwv%2F1Cyv5fQJU6qP9kHMAnTaI0qh8IuihSIFNDkEPCOqsixBlOqkuHrOUYoKVwKqh5EHkyXryOXHOZ2pBW2WyBQH5Aob8GSQZ52JZQr6ecJ%2BGLRxq37c%2Bf1PDWYeqScgJl9YSPq0Q9Zg9knI1SSWc4UoNZrgU97vSO1WAaknPulP2aaUn%2FwC4AkEjJh1Bits8HM%2FTOtyU%2BuR4ZmkUOA%2B4dM0EPVdVee%2BE0k6lgUJeamcBWw1MpTXScRa8Uj%2F0FhQ4x8MihMZ3T%2BYoJaVxgOwEwA3WThqrGaj7M1zh04vYwH%2F4liRP2OIRNR3XKY7xkMNGggh0zHbDgVtBeR0XXhOXYZ3XZIFHA6zoUrGB5y3AL4CyCm1hPs0Gvw%2BOqPqQD%2BKeGHjQWxNfF9v1vp2jTv3XFpgX9G5x6GK2tcFl9U9Nnxf27%2B7L6bab77fpPP69KaeT7K6f8iLyiEYGAAA%3D

SWC Info output

No response

Expected behavior

// Empty file

Actual behavior

let isHydrating = !1;
isHydrating = !0;
let localDeps = '', localDepsCnt = 0, injectDependency = (c)=>(isHydrating || (localDeps += c + ','), localDepsCnt++);
isHydrating || injectDependency('() => console.log("ID:", +Math.random().toFixed(2))'), isHydrating || injectDependency('() => console.log("ID:", +Math.random().toFixed(2))');

Version

1.13.5

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions