From d02b647bbfb903bb517ebcf275343f8fc8749b4b Mon Sep 17 00:00:00 2001
From: Christian Kamm <christian.d.kamm@nokia.com>
Date: Tue, 29 Nov 2011 10:19:04 +0100
Subject: [PATCH] QmlJS checks: Don't warn for fallthrough on the last clause.

Change-Id: Ica84ced241eafd82cededa65d2e90f855e448f89
Reviewed-by: Roberto Raggi <roberto.raggi@nokia.com>
---
 src/libs/qmljs/qmljscheck.cpp                       | 9 +++------
 tests/auto/qml/codemodel/check/case-fallthrough.qml | 2 ++
 2 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp
index 3b1bde04384..40e3ff5a72d 100644
--- a/src/libs/qmljs/qmljscheck.cpp
+++ b/src/libs/qmljs/qmljscheck.cpp
@@ -1096,12 +1096,9 @@ bool Check::visit(CaseBlock *ast)
     for (CaseClauses *it = ast->moreClauses; it; it = it->next)
         clauses += qMakePair(it->clause->caseToken, it->clause->statements);
 
-    for (int i = 0; i < clauses.size(); ++i) {
-        SourceLocation nextToken;
-        if (i + 1 < clauses.size())
-            nextToken = clauses[i + 1].first;
-        else
-            nextToken = ast->rbraceToken;
+    // check all but the last clause for fallthrough
+    for (int i = 0; i < clauses.size() - 1; ++i) {
+        const SourceLocation nextToken = clauses[i + 1].first;
         checkCaseFallthrough(clauses[i].second, clauses[i].first, nextToken);
     }
     return true;
diff --git a/tests/auto/qml/codemodel/check/case-fallthrough.qml b/tests/auto/qml/codemodel/check/case-fallthrough.qml
index f98bcf2b0ed..a1851da5648 100644
--- a/tests/auto/qml/codemodel/check/case-fallthrough.qml
+++ b/tests/auto/qml/codemodel/check/case-fallthrough.qml
@@ -37,6 +37,8 @@ Item {
         case 8: // 20 9 12
             x = 1
         case 9:
+        case 11: // no warning
+            x = 1
         }
     }
 }
-- 
GitLab