-
Notifications
You must be signed in to change notification settings - Fork 61
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Avoid removing variable assignments that are functions
Starting with 0.4.15, incorrect code is generated when using the `mode: "wrap"` setting for a prop-type like this ``` const generateType = (x) => { return PropTypes.oneOf([x-1, x, x+1]); }; Component.propTypes = { prop: generateType(1) }; ``` The code generated for the prop-type is ``` const generateType = process.env.NODE_ENV !== "production" ? x => { return PropTypes.oneOf([x - 1, x, x + 1]); } : {};; ``` which will result in an error when `NODE_ENV === "production"` because `{}` is not a function. A working example of the bug can be found here: https://github.com/dirkholsopple/prop-type-removal-bug-reproduction Since the minifier will remove any unused function expressions for us, we don't need to jump through that hoop. There is a possibility that there are some references inside that function that could be further cleaned up by us that then minifier won't catch, but I'm not really sure it's worth worrying about since this seems pretty edge-casey. If we want to go down that path, instead of skipping over these nodes, we would probably want to remove them but in the wrap mode replace it with a function that returns an object instead of an object. Fixes #153
- Loading branch information
Showing
6 changed files
with
106 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters