diff --git a/src/libs/qmljs/qmljscompletioncontextfinder.cpp b/src/libs/qmljs/qmljscompletioncontextfinder.cpp
index 0fd7ab856b193b9fe818c3c1b3ee853cf49d6f26..645472c220340e682f008bcf670036e3ef889793 100644
--- a/src/libs/qmljs/qmljscompletioncontextfinder.cpp
+++ b/src/libs/qmljs/qmljscompletioncontextfinder.cpp
@@ -31,6 +31,9 @@ CompletionContextFinder::CompletionContextFinder(const QTextCursor &cursor)
             break;
     }
 
+    if (m_startTokenIndex == yyLinizerState.tokens.size() - 1 && yyLinizerState.insertedSemicolon)
+        --m_startTokenIndex;
+
     getQmlObjectTypeName(m_startTokenIndex);
     checkBinding();
 }
diff --git a/src/libs/qmljs/qmljslineinfo.cpp b/src/libs/qmljs/qmljslineinfo.cpp
index a4c8837d1b81ec04b8171afcfc9ec4974b996777..5bae0d727c5789febba8c8c54ea4e1d76eee9b15 100644
--- a/src/libs/qmljs/qmljslineinfo.cpp
+++ b/src/libs/qmljs/qmljslineinfo.cpp
@@ -208,6 +208,7 @@ QString LineInfo::trimmedCodeLine(const QString &t)
             const Token sc(trimmed.size(), 1, Token::Semicolon);
             yyLinizerState.tokens.append(sc);
             trimmed.append(QLatin1Char(';'));
+            yyLinizerState.insertedSemicolon = true;
         }
     }
 
@@ -276,6 +277,8 @@ bool LineInfo::readLine()
             (firstNonWhiteSpace(yyLinizerState.line) == QLatin1Char('{'));
 
     do {
+        yyLinizerState.insertedSemicolon = false;
+
         if (yyLinizerState.iter == yyProgram.firstBlock()) {
             yyLinizerState.line.clear();
             return false;
@@ -332,6 +335,7 @@ void LineInfo::startLinizer()
 {
     yyLinizerState.braceDepth = 0;
     yyLinizerState.pendingRightBrace = false;
+    yyLinizerState.insertedSemicolon = false;
 
     yyLine = &yyLinizerState.line;
     yyBraceDepth = &yyLinizerState.braceDepth;
diff --git a/src/libs/qmljs/qmljslineinfo.h b/src/libs/qmljs/qmljslineinfo.h
index 2112e313f0a890b4ec3e0b49cc6012c7d9a75db5..8173f9ddc72ff4891db8fd3c99887b421d58d32f 100644
--- a/src/libs/qmljs/qmljslineinfo.h
+++ b/src/libs/qmljs/qmljslineinfo.h
@@ -84,12 +84,14 @@ protected:
         LinizerState()
             : braceDepth(0),
               leftBraceFollows(false),
-              pendingRightBrace(false)
+              pendingRightBrace(false),
+              insertedSemicolon(false)
         { }
 
         int braceDepth;
         bool leftBraceFollows;
         bool pendingRightBrace;
+        bool insertedSemicolon;
         QString line;
         QList<Token> tokens;
         QTextBlock iter;
diff --git a/src/plugins/qmljseditor/qmljscodecompletion.cpp b/src/plugins/qmljseditor/qmljscodecompletion.cpp
index a5a5d15f5759d0e72df7a21d6b8cf298d381ccb9..aae8b16863bacd34d8b44cdcc7ad806761683285 100644
--- a/src/plugins/qmljseditor/qmljscodecompletion.cpp
+++ b/src/plugins/qmljseditor/qmljscodecompletion.cpp
@@ -690,7 +690,6 @@ int CodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
 
         if (contextFinder.isInRhsOfBinding() && qmlScopeType) {
             doQmlKeywordCompletion = false;
-            qDebug() << "property name: " << contextFinder.bindingPropertyName();
 
             if (!contextFinder.bindingPropertyName().isEmpty()) {
                 const Interpreter::Value *value = qmlScopeType;