Skip to content
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

Use member type for relational pattern even in error cases #51950

Merged
merged 3 commits into from Mar 24, 2021

Conversation

cston
Copy link
Member

@cston cston commented Mar 18, 2021

Fixes #51936

@cston cston requested a review from a team as a code owner March 18, 2021 05:38
{
FieldSymbol field => field.Type,
PropertySymbol property => property.Type,
_ => CreateErrorType()
Copy link
Contributor

@AlekseyTs AlekseyTs Mar 18, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CreateErrorType() [](start = 21, length = 17)

If this was causing a problem, is it still safe to use it for null result? #Closed

Copy link
Member Author

@cston cston Mar 19, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this was causing a problem, is it still safe to use it for null result?

The problem was caused by an error type being used when the field or property type was available. In particular, the type returned from this method should match the type used for the recursive property in MakeTestsAndBindingsForRecursivePattern(), which it should now.


In reply to: 597135186 [](ancestors = 597135186)

{
FieldSymbol field => field.Type,
PropertySymbol property => property.Type,
_ => CreateErrorType()
Copy link
Contributor

@AlekseyTs AlekseyTs Mar 18, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

_ [](start = 16, length = 1)

It looks like there is a possible behavior change around other kinds of symbols. If other kinds not possible, consider explicitly checking for null and throwing for everything else. #Closed

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It looks like there is a possible behavior change around other kinds of symbols.

There shouldn't be any change for other symbol kinds. BindPropertyPatternMember() sets hasErrors for symbols other than fields or properties and previously we used CreateErrorType() if hasErrors was set.


In reply to: 597137302 [](ancestors = 597137302)

@AlekseyTs
Copy link
Contributor

AlekseyTs commented Mar 18, 2021

Done with review pass (commit 2) #Closed

Copy link
Contributor

@AlekseyTs AlekseyTs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM (commit 3)

@cston cston requested a review from a team March 21, 2021 16:44
@cston cston added this to the 16.10 milestone Mar 23, 2021
@cston
Copy link
Member Author

cston commented Mar 24, 2021

@dotnet/roslyn-compiler, please review, thanks.

Copy link
Member

@jcouv jcouv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM Thanks (iteration 3)

@cston cston merged commit 1756346 into dotnet:main Mar 24, 2021
@ghost ghost modified the milestones: 16.10, Next Mar 24, 2021
@cston cston deleted the 51936 branch March 24, 2021 19:44
@333fred 333fred mentioned this pull request Mar 25, 2021
333fred added a commit to 333fred/roslyn that referenced this pull request Mar 25, 2021
* upstream/main: (75 commits)
  Split BoundInterpolatedString into BoundInterpolatedString and BoundUnconvertedInterpolatedString (dotnet#52061)
  Combine VB comparers into one, and combine VB and C# comparers together (dotnet#51834)
  Use OptimizedVSCompletionList in LSP scenarios.
  F5 Hot Reload (dotnet#52101)
  Fix typescript shim
  Add tests for lazy syntax trees coming from the GeneratorDriver
  React to code review feedback.
  Simplify the lazy-initalization pattern used in GetRoot
  Remove an unnecessary override. (dotnet#52140)
  Update issue number (dotnet#52130)
  Enable CodeActions support for XAML using its own provider and CodeActionCache. The handlers are actually shared with Roslyn as is. (dotnet#52129)
  Add RestrictedIVT to dotnet watch to Features (dotnet#52087)
  Don't try to highlight operators (dotnet#52041)
  Use `null` instead of empty signature helps in LSP
  Use member type for relational pattern even in error cases (dotnet#51950)
  Update src/VisualStudio/Xaml/Impl/Implementation/LanguageServer/Extensions/SymbolExtensions.cs
  Use new QuickInfoUtilities helper
  Rebuild API shape (dotnet#52079)
  Added position parameter name
  Updated XAML QuickInfo to show more info like C# by using ISymbolDisplayService and adding more documentation parts.
  ...
@allisonchou allisonchou modified the milestones: Next, 16.10.P2 Mar 29, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Vs2019 v16.9.2 Raise runtime errors when using Property Pattern for undefined variable and fail compilation
4 participants