Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Object tree shaking removes properties that are being used #5735

@voliva

Description

@voliva

Rollup Version

4.27.2

Operating System (or Browser)

MacOS 14.3

Node Version (if applicable)

21.6.0

Link To Reproduction

https://rollupjs.org/repl/?version=4.27.2&shareable=JTdCJTIyZXhhbXBsZSUyMiUzQSUyMiUyMiUyQyUyMm1vZHVsZXMlMjIlM0ElNUIlN0IlMjJjb2RlJTIyJTNBJTIyZXhwb3J0JTIwY29uc3QlMjBnZXRCdWlsZGVyJTIwJTNEJTIwKCklMjAlM0QlM0UlMjAlN0IlNUNuJTIwJTIwY29uc3QlMjB2YXJpYW50U2hhcGVJZCUyMCUzRCUyMCU3QiU1Q24lMjAlMjAlMjAlMjBlcnJvcnMlM0ElMjAxbiUyQyU1Q24lMjAlMjAlMjAlMjBldmVudHMlM0ElMjAybiUyQyU1Q24lMjAlMjAlMjAlMjBjYWxscyUzQSUyMDNuJTJDJTVDbiUyMCUyMCU3RCUzQiU1Q24lNUNuJTIwJTIwY29uc3QlMjBidWlsZFZhcmlhbnQlMjAlM0QlMjAodmFyaWFudFR5cGUpJTIwJTNEJTNFJTIwKCklMjAlM0QlM0UlMjAlN0IlNUNuJTIwJTIwJTIwJTIwdHJ5JTIwJTdCJTVDbiUyMCUyMCUyMCUyMCUyMCUyMHJldHVybiUyMHZhcmlhbnRTaGFwZUlkJTVCdmFyaWFudFR5cGUlNUQlM0IlNUNuJTIwJTIwJTIwJTIwJTdEJTIwY2F0Y2glMjAoXyklMjAlN0IlNUNuJTIwJTIwJTIwJTIwJTIwJTIwcmV0dXJuJTIwbnVsbCUzQiU1Q24lMjAlMjAlMjAlMjAlN0QlNUNuJTIwJTIwJTdEJTNCJTVDbiU1Q24lMjAlMjByZXR1cm4lMjAlN0IlNUNuJTIwJTIwJTIwJTIwYnVpbGRDYWxsJTNBJTIwYnVpbGRWYXJpYW50KCU1QyUyMmNhbGxzJTVDJTIyKSUyQyU1Q24lMjAlMjAlMjAlMjBidWlsZEV2ZW50JTNBJTIwYnVpbGRWYXJpYW50KCU1QyUyMmV2ZW50cyU1QyUyMiklMkMlNUNuJTIwJTIwJTIwJTIwYnVpbGRFcnJvciUzQSUyMGJ1aWxkVmFyaWFudCglNUMlMjJlcnJvcnMlNUMlMjIpJTJDJTVDbiUyMCUyMCU3RCUzQiU1Q24lN0QlM0IlNUNuJTIyJTJDJTIyaXNFbnRyeSUyMiUzQXRydWUlMkMlMjJuYW1lJTIyJTNBJTIybWFpbi5qcyUyMiU3RCU1RCUyQyUyMm9wdGlvbnMlMjIlM0ElN0IlN0QlN0Q=

export const getBuilder = () => {
  const variantShapeId = {
    errors: 1n,
    events: 2n,
    calls: 3n,
  };

  const buildVariant = (variantType) => () => {
    try {
      return variantShapeId[variantType];
    } catch (_) {
      return null;
    }
  };

  return {
    buildCall: buildVariant("calls"),
    buildEvent: buildVariant("events"),
    buildError: buildVariant("errors"),
  };
};

Expected Behaviour

The object variantShapeId should be left as-is, since it's being indexed by an external parameter.

Actual Behaviour

The object tree-shaking removes properties from variantShapeId that should be accessible.

In this specific example, this only happens when wrapping the statement that accesses the object with a try-catch.

Additional context

This is a regression introduced in 4.27, related to #5420

The example is the minimum reproduction case based on existing code of our library.

CC @carlosala @lukastaegert @TrickyPi

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