Skip to content

[Sema] fix ParenPattern resolution when subexpression is a NilLiteralExpr #3564

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

Merged
merged 1 commit into from
Jul 18, 2016

Conversation

jtbandes
Copy link
Contributor

@jtbandes jtbandes commented Jul 17, 2016

What's in this pull request?

A minor fix to the ResolvePattern ASTVisitor used in TypeCheckPattern.cpp.

Previously, if a ParenExpr's subexpression returned nullptr when passed to visit() (which happens for nil literals, since visitNilLiteralExpr() isn't defined), then visitParenExpr() itself would return nullptr, so the ParenExpr was just wrapped in an ExprPattern. This broke the ability of coercePatternToType() to peek at the ExprPattern's expression and convert NilLiteralExpr to an EnumElementPattern, because instead of finding a NilLiteralExpr, it'd just find the ParenExpr.

With this fix, visitParenExpr() reuses existing logic from getSubExprPattern(), which wraps the subexpression in an ExprPattern, even when there's no special visitor for it, rather than wrapping the whole ParenExpr in an ExprPattern.

Resolved bug number: SR-2066

"Parenthesized nil in a case statement breaks exhaustivity checking" filed by @gregomni


Before merging this pull request to apple/swift repository:

  • Test pull request on Swift continuous integration.

Triggering Swift CI

The swift-ci is triggered by writing a comment on this PR addressed to the GitHub user @swift-ci. Different tests will run depending on the specific comment that you use. The currently available comments are:

Smoke Testing

Platform Comment
All supported platforms @swift-ci Please smoke test
All supported platforms @swift-ci Please smoke test and merge
OS X platform @swift-ci Please smoke test OS X platform
Linux platform @swift-ci Please smoke test Linux platform

Validation Testing

Platform Comment
All supported platforms @swift-ci Please test
All supported platforms @swift-ci Please test and merge
OS X platform @swift-ci Please test OS X platform
OS X platform @swift-ci Please benchmark
Linux platform @swift-ci Please test Linux platform

Lint Testing

Language Comment
Python @swift-ci Please Python lint

Note: Only members of the Apple organization can trigger swift-ci.

@jtbandes jtbandes changed the title Fix ParenPattern resolution when subexpression is a NilLiteralExpr [Sema] fix ParenPattern resolution when subexpression is a NilLiteralExpr Jul 17, 2016
@CodaFi
Copy link
Contributor

CodaFi commented Jul 18, 2016

Thanks, LGTM.

@swift-ci please test and merge.

@swift-ci swift-ci merged commit ce7751c into swiftlang:master Jul 18, 2016
@jtbandes
Copy link
Contributor Author

Cheers!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants