Chromium Code Reviews| Index: pkg/analyzer/lib/src/generated/resolver.dart |
| diff --git a/pkg/analyzer/lib/src/generated/resolver.dart b/pkg/analyzer/lib/src/generated/resolver.dart |
| index ca02438d7ee4fb47d33baf18f7a934a0e4910bd9..1ae2befb8d806ae8dfcff9d897935c8819c1b7b0 100644 |
| --- a/pkg/analyzer/lib/src/generated/resolver.dart |
| +++ b/pkg/analyzer/lib/src/generated/resolver.dart |
| @@ -3755,6 +3755,7 @@ class ExitDetector extends GeneralizingAstVisitor<bool> { |
| _enclosingBlockContainsBreak = false; |
| try { |
| bool hasDefault = false; |
| + bool hasNonExitingCase; |
|
Brian Wilkerson
2016/06/14 16:27:14
nit: While not strictly necessary, I'd prefer all
srawlins
2016/06/14 18:28:17
Done.
|
| List<SwitchMember> members = node.members; |
| for (int i = 0; i < members.length; i++) { |
| SwitchMember switchMember = members[i]; |
| @@ -3763,16 +3764,20 @@ class ExitDetector extends GeneralizingAstVisitor<bool> { |
| // If this is the last member and there are no statements, return |
|
Brian Wilkerson
2016/06/14 16:27:15
nit: the code below no longer returns
srawlins
2016/06/14 18:28:17
Done.
|
| // false |
| if (switchMember.statements.isEmpty && i + 1 == members.length) { |
| - return false; |
| + hasNonExitingCase = true; |
| + continue; |
| } |
| } |
| // For switch members with no statements, don't visit the children, |
| // otherwise, return false if no return is found in the children |
|
Brian Wilkerson
2016/06/14 16:27:15
nit: the code below no longer returns
srawlins
2016/06/14 18:28:17
Done.
|
| // statements. |
| if (!switchMember.statements.isEmpty && !switchMember.accept(this)) { |
| - return false; |
| + hasNonExitingCase = true; |
| } |
| } |
| + if (hasNonExitingCase) { |
| + return false; |
| + } |
| // As all cases exit, return whether that list includes `default`. |
| return hasDefault; |
| } finally { |