You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
before this PR would return a, b, and after this PR would return just b.
The rationale here is that Webpack bundles include module.exports = require('external') for every single external they import from, when those aren't actually reexports. This saves unnecessary work and overclassification in those cases, with what doesn't seem to be too much of a loss.
@weswigham FYI I remember we discussed the module.exports = require('x') cases being a union for the whole module before, but with Webpack bundles I think this may cause unnecessary work. Copying you in in case you have any further thoughts on this topic, but feel free to ignore as well.
Right - in TS we search through conditions for things like this, so we produce a union, since some of the assignments may be conditional (and we don't do any kind of flow analysis on this yet, since we need this information before we normally do that kind of analysis). If you're only recognizing top-level assignments, simply taking the last one seems fine.
We don't actually do a top-level detection here because there isn't yet handling of the distinction between blocks and functions. Once / if this is added I think it could mostly be regarded a backwards compatible addition to reinclude that restriction. At least by limiting to one now we manage the backwards compat story and allow this to improve at the same time.
This file contains hidden or 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
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.
This updates the reexport detection to only handle the last reexport assignment.
For example:
before this PR would return
a,b, and after this PR would return justb.The rationale here is that Webpack bundles include
module.exports = require('external')for every single external they import from, when those aren't actually reexports. This saves unnecessary work and overclassification in those cases, with what doesn't seem to be too much of a loss.