-
Notifications
You must be signed in to change notification settings - Fork 4.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merge dev15.6.x to master #24166
Merged
Merged
Merge dev15.6.x to master #24166
Conversation
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
… must be always passed as `ref`
…rinsic. … (#24114) * Arrays/pointers/nullables of intrinsic types are intrinsic. Type of array creations is apparent. Handle out vars.
Merging on behalf of @zaytsev-victor. Thanks for the contribution!
This looks like simple oversight. The binder being used for type parameters was retrieved from the binder factory since we didn't explicitly pass one. For members this is correct since the binder factory can be queried for top-level binders. This is not correct for local functions because they use method body binders, which are not accessible from the binder factory. Mostly, this doesn't matter. The exception is when you try to speculatively bind an attribute on a type parameter. Here, you need an in-method binder and VS will crash if it's the wrong binder. This was uncommon since attributes on type parameters are not permitted in local functions, but VS should not crash. Fixes #17814
* Make sure 'in' is honored in cref parsers/completion lists * Clean up * PR Comments * Document API breaking change
The argument that stands for the receiver of a `ref` extension method must be always passed as `ref`
The LDM has decided that the following rules should be in effect when calculating definite assignment for local functions: 1. The entry point to a local function is always reachable. 2. Variables captured in local functions are definitely assigned if they are definitely assigned in all branches into the local function. It turns out these rules were almost exactly what the compiler already implemented, but there was a bug in captured variable detection that meant that variables captured in lambdas within local functions were sometimes not counted as captured. This change fixes the bug around capturing, which should cause the compiler to conform to this specification. Fixes #17829
VSadov
approved these changes
Jan 11, 2018
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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 is an automatically generated pull request from dev15.6.x into master.
git fetch --all git checkout merges/dev15.6.x-to-master-20180111-080017 git reset --hard upstream/master git merge upstream/dev15.6.x # Fix merge conflicts git commit git push merges/dev15.6.x-to-master-20180111-080017 --force
Once all conflicts are resolved and all the tests pass, you are free to merge the pull request.