-
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
Add a public API to determine if a switch expression was valid in C# 6. #13498
Conversation
/// corresponding to one of those types. These types were permitted as the governing | ||
/// type of a switch statement in C# 6. | ||
/// </summary> | ||
public static bool IsValidV6SwitchGoverningType(this ITypeSymbol type) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why does this need to be an API that will appear in the completion list of all users of ITypeSymbol? This seems like a well known fact that could be in a private helper that the edit-and-continue logic uses.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It doesn't "need" to be in any particular place, but this is a language question implemented in the compiler layer. Generally speaking, when language questions need to be asked by other layers, they should do so via public APIs. I think you're suggesting that perhaps this language question is not generally useful enough to expose publicly?
In reply to: 77065023 [](ancestors = 77065023)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would this be more appropriate to expose on some more specialized type, perhaps on SemanticModel? Also it would be nice to avoid V6
in the name. Perhaps IsPrimitiveSwitchType
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think there is a simpler name. For example, it includes enum types.
The implementation is simple enough that I think it can just be coped into the E&C code. I'll place the implementation in the issue for this, and close this PR.
In reply to: 77084316 [](ancestors = 77084316)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe I'm missing something, but it looks like the EnC project does not have access to compiler internals (and trying to give it access causes many conflicts). I'm assuming there is a reason for that.
If so, having this public compiler API will help.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
EnC doesn't need access to compiler internals to copy the logic that is inside that API.
Fixes #13334
@dotnet/roslyn-compiler Please review this small compiler change (adding an API)
@jaredpar @AnthonyDGreen Please review the API change itself. Is this the right place for it?