Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fresh Babel plugin emits "signatures" that are strings containing names of Hooks and call metadata. For example:
Note the signature contains
[foo, setFoo](0)
. This ensures that if we change thefoo
name, or if we change the initial state (0
), we force a remount. Including the initial argument source code is a special case foruseState
anduseReducer
since that usually signals an intentional attempt to remount.Unfortunately, it's not always safe to emit an arbitrary string in some environments. For example, in www we have a transform that replaces
cx("foo")
with some string hash regardless of whether it's inside a string or not. It's just a regex. So if an expression like this becomes a part of a signature, www transforms can produce a syntax error.To fix this, we can default to always emitting hashes for signatures. They're guaranteed to be short, and can't cause these kinds of issues. I left a fallback for ASTExplorer and for our own snapshot tests. (However, our integration tests verify the other branch still works.)