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

Add a public API to determine if a switch expression was valid in C# 6. #13498

Closed
wants to merge 1 commit into from

Conversation

gafter
Copy link
Member

@gafter gafter commented Aug 31, 2016

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?

@gafter gafter added Concept-API This issue involves adding, removing, clarification, or modification of an API. Area-Compilers Feature Request labels Aug 31, 2016
@gafter gafter added this to the 2.0 (Preview 5) milestone Aug 31, 2016
@gafter gafter self-assigned this Aug 31, 2016
/// 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)
Copy link
Contributor

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.

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 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)

Copy link
Member

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?

Copy link
Member Author

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)

Copy link
Member

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.

Copy link
Contributor

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Area-Compilers cla-already-signed Concept-API This issue involves adding, removing, clarification, or modification of an API. Feature Request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants