Don't use inferred member name if that creates duplicates#24632
Merged
jcouv merged 1 commit intodotnet:dev15.7.xfrom Feb 5, 2018
Merged
Don't use inferred member name if that creates duplicates#24632jcouv merged 1 commit intodotnet:dev15.7.xfrom
jcouv merged 1 commit intodotnet:dev15.7.xfrom
Conversation
Member
Author
|
@dotnet/roslyn-ide for review. This PR addresses a bad fix offered by UseInferredNames. Thanks |
Contributor
|
@Pilchie Requesting to retarget this to 15.7 |
sharwell
approved these changes
Feb 5, 2018
Member
Author
|
Sure. Retargeted the change to 15.7. |
Member
Author
|
@Pilchie for ask-mode approval for 15.7. Thanks |
sharwell
approved these changes
Feb 5, 2018
Member
|
Approved - thanks. |
| // An explicit name cannot be removed if some other position would produce it as inferred name | ||
| private static bool RemovalCausesAmbiguity(SeparatedSyntaxList<AnonymousObjectMemberDeclaratorSyntax> initializers, AnonymousObjectMemberDeclaratorSyntax toRemove) | ||
| { | ||
| string name = toRemove.NameEquals.Name.Identifier.ValueText; |
| End If | ||
|
|
||
| Dim inferredInitializer = TryCast(initializer, InferredFieldInitializerSyntax) | ||
| If inferredInitializer IsNot Nothing AndAlso CaseInsensitiveComparison.Equals(inferredInitializer.Expression.TryGetInferredMemberName(), name) Then |
Contributor
There was a problem hiding this comment.
bummer that we can't share more coe here between C# and VB. but NBD.
Member
Author
There was a problem hiding this comment.
Yup. I did give it a shot, but it ended with more convoluted code.
heejaechang
pushed a commit
that referenced
this pull request
Feb 7, 2018
* Remove duplicate lock DocumentState.s_syntaxTreeToIdMapLock This lock is only being used to protect access to an instance which contains internal synchronization. * Better handle surrounding directives when inlining a local variable. * Add tests. * Share code between VB and C#. * Reduce allocations in UnboundLambda Fixes #23463 * Restore ReturnInferenceCacheKey as the key for _returnInferenceCache * Update code to more closely follow patterns of the original code * Cleanup from code review * Verify MSBuild version in Developer CMD prompt Roslyn is designed to have the simplest possible contribution story: clone then build. Every pre-req needed is either located on the machine or bootstrapped via NuGet. All the way down to using an xcopy MSBuild if needed. The one case which causes a problem is the VS command prompt. In this case MSBuild is pre-installed on the machine and may or may not be suitable for building Roslyn. Previously when building from a VS command prompt we just used whatever MSBuild was provided. The assumption being a developer command prompt was an explicit statement of whath MSBuild you wanted to use. Based on all of our customer reports though this does not seem to be the assumption that consumers of our repo have. The build gave them no explicit errors about the provided toolset and hence when the build failed they assigned flakiness to our repo. Going forward we are applying the same version validation to MSBuild when provided via a developer command prompt. If it doesn't match we will refuse to build asking the user to upgrade VS or build from a normal command prompt. * Remove unneeded debugging line * Comment about pre-release * Added minimum version * Add Omit If Default style option * Add space to be like test without the omit * Add/Remove without needing a property * Reformat * PR feedback * Fix VB diagnostic based on feedback * Handle case of NotApplicable modifier and field declaration list * Fix tests * PR feedback * PR feedback * Support negative null-check when we are suggesting to inline type checks Fixes #21097 Fixes #24286 * fix a case where persistent storage registration fails and some clean… (#24458) * fix a case where persistent storage registration fails and some clean up code around it. * added readonly * address PR feedback * removed comments no longer relevant * renamed lock name * moved waiter from diagnostics.dll to features.dll where all interfaces are defined. (#24512) * put listener change back in (#24120) * leave old types in legacy folder until partner teams move to new interface * added legacy waiter to support partner teams * Remove methods indirecting access to _metadataFileNameToConvertedProjectReference This field is documented as being written and read from any thread, but in practice all uses are guarded by an AssertIsForeground(). Thus we can get rid of the helper methods that are trying to "help" by locking before accessing the fields, making it really hard to track all the real uses of it. * Make method static that doesn't need state * Fix up tests of P2P to metadata reference conversion It turns out we had some tests, but the tests were disabled. This was because the tests weren't working properly anyways: they were calling into UpdateProjectBinPath which only updated some (but not all) of the project state. That was an internal helper method that shouldn't be used by tests. Updating the tests to use SetBinOutputPathAndRelatedData works better. * Delete debug-only reference validation This was some legacy code that tried to verify that the references we have from the project system match up to what DTE and other sources say. This was debug-only, and the actual asserts were commented out. This is deadweight at this point, so delete it. * added and cleaned up logs around build and live diagnostics. (#24551) also added RoslynActivityLogger that can be enabled through project-system-tool * Avoid closure allocations on the BindSyntaxTreeToId fast path * CS1628 error text mentions in parameters; fixes #24584 * Update optimization data to 2.7.0-beta3-62526-01... * Small cleanup of completion logic. * Locate implementations for reference assemblies using the process binding path * Use GlobalAssemblyCache helper to locate assemblies directly in the GAC * Update InteractiveEditorFeatures to account for a second definition of GlobalAssemblyCache * Move to xunit.console for CoreClr tests Previously we were using xunit.console for desktop tests and dotnet-xunit for our CoreClr tests. This change unifies us on top of xunit.console (now that it has a netcoreapp2.0 version available). * Move unix builds to xunit.runner.console as well * Fixes 559223 Fix and re-enable test that would catch this error * Update LanguageServices training data again... * Get actual directory name, not file * Fix dir name issue * Cleanup based on code review feedback * Check fully-qualified names for SuppressIldasmAttribute and ReferenceAssemblyAttribute * Use correct reference location, or fail decompilation if it's not available * Fix typo... * Don't use inferred member name if that creates duplicates (#24632) * Fixes #23983 * Added test for unique IDEDiagnosticIDs * Fixed capitalization on local variable * Fix `is` and pattern-matching behavior in presence of implicit UD conversion (#24547) * Fix `is` and pattern-matching behavior in presence of implicit UD conversion and also an explicit reference conversion. User-defined conversions should never be considered for `is` and pattern-matching. Fixes #24522
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 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.
Customer scenario
Use inferred name fixer on
var t = (alice: alice, alice);. No fix should be offered, as it would result in the name for the first element being lost rather than inferred.Bugs this fixes
Fixes #24480
Workarounds, if any
Don't invoke the fixer in such cases.
Risk
Performance impact
Is this a regression from a previous update?
No
How was the bug found?
Reported by customer