diff --git a/src/libs/qmljs/qmljsindenter.cpp b/src/libs/qmljs/qmljsindenter.cpp
index dc5407c8c9361bc1116e91d4d7ad9d6cf4dbfaba..ea42bd4f65c079c52f3024d9368e08131f1481ed 100644
--- a/src/libs/qmljs/qmljsindenter.cpp
+++ b/src/libs/qmljs/qmljsindenter.cpp
@@ -309,6 +309,18 @@ bool QmlJSIndenter::okay(QChar typedIn, QChar okayCh) const
     return typedIn == QChar() || typedIn == okayCh;
 }
 
+QmlJSScanner::Token QmlJSIndenter::lastToken() const
+{
+    for (int index = yyLinizerState.tokens.size() - 1; index != -1; --index) {
+        const QmlJSScanner::Token &token = yyLinizerState.tokens.at(index);
+
+        if (token.isNot(QmlJSScanner::Token::Comment))
+            return token;
+    }
+
+    return QmlJSScanner::Token();
+}
+
 /*
     Saves and restores the state of the global linizer. This enables
     backtracking.
@@ -473,7 +485,7 @@ bool QmlJSIndenter::matchBracelessControlStatement()
     int delimDepth = 0;
 
     if (! yyLinizerState.tokens.isEmpty()) {
-        const QmlJSScanner::Token &tk = yyLinizerState.tokens.last();
+        QmlJSScanner::Token tk = lastToken();
 
         if (tk.is(QmlJSScanner::Token::Identifier) &&
             yyLinizerState.line.midRef(tk.offset, tk.length) == QLatin1String("else"))
@@ -491,6 +503,10 @@ bool QmlJSIndenter::matchBracelessControlStatement()
             default:
                 break;
 
+            case QmlJSScanner::Token::Comment:
+                // skip comments
+                break;
+
             case QmlJSScanner::Token::RightParenthesis:
                 ++delimDepth;
                 break;
@@ -1056,3 +1072,4 @@ int QmlJSIndenter::indentForBottomLine(QTextBlock begin, QTextBlock end, QChar t
 
     return qMax(0, indent);
 }
+
diff --git a/src/libs/qmljs/qmljsindenter.h b/src/libs/qmljs/qmljsindenter.h
index d880a1a39395bf8dfd31c739f0ae9d55ce0bfd32..2fee67390ff670ff96f3ff78adad2c1dc9b9ccdc 100644
--- a/src/libs/qmljs/qmljsindenter.h
+++ b/src/libs/qmljs/qmljsindenter.h
@@ -84,6 +84,8 @@ private:
     int indentForContinuationLine();
     int indentForStandaloneLine();
 
+    QmlJSScanner::Token lastToken() const;
+
 private:
     int ppHardwareTabSize;
     int ppIndentSize;
diff --git a/src/libs/qmljs/qmljsscanner.h b/src/libs/qmljs/qmljsscanner.h
index 9a6abb770213f9547afba391c1b2f7a93d019f1a..8b3990fc5b0295d328a8c3cc8d000ad1fc4bb1b2 100644
--- a/src/libs/qmljs/qmljsscanner.h
+++ b/src/libs/qmljs/qmljsscanner.h
@@ -41,11 +41,9 @@ namespace QmlJS {
 class QMLJS_EXPORT QmlJSScanner
 {
 public:
-
     struct Token {
-        int offset;
-        int length;
         enum Kind {
+            EndOfFile,
             Keyword,
             Identifier,
             String,
@@ -62,8 +60,13 @@ public:
             Colon,
             Comma,
             Dot
-        } kind;
+        };
+
+        int offset;
+        int length;
+        Kind kind;
 
+        inline Token(): offset(0), length(0), kind(EndOfFile) {}
         inline Token(int o, int l, Kind k): offset(o), length(l), kind(k) {}
         inline int begin() const { return offset; }
         inline int end() const { return offset + length; }