Implicit const parameters#10357
Merged
Merged
Conversation
| /* @internal */ exportSymbol?: Symbol; // Exported symbol associated with this symbol | ||
| /* @internal */ constEnumOnlyModule?: boolean; // True if module contains only const enums or other modules with only const enums | ||
| /* @internal */ isReferenced?: boolean; // True if the symbol is referenced elsewhere | ||
| /* @internal */ isAssigned?: boolean; // True if the symbol has assignments |
Member
There was a problem hiding this comment.
Clarify that this flag is only set for parameters
Member
|
👍 . Seems like Travis isn't going anywhere... |
Closed
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
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
With this PR a parameter is implicitly considered
constwhen there are no assignments to the parameter anywhere in the declaring function (or functions nested within it). Similar toconstvariables, when a parameter is consideredconst, type guards for the parameter remain in effect in nested function expressions and arrow functions:Above,
xandinfoare implicitlyconstbecause there are no assignments to them anywhere in their containing functions, and therefore the type guards remain in effect in the callback functions.Fixes #10180. Also see #7719 and a number of similar issues.