diff --git a/src/plugins/qmleditor/qmlcodecompletion.cpp b/src/plugins/qmleditor/qmlcodecompletion.cpp
index e0e5dac2c05fd9b34c9784a8255b1dde8c5712c4..7b6bf6a295631a39b8f32ad8468522bd80ae9621 100644
--- a/src/plugins/qmleditor/qmlcodecompletion.cpp
+++ b/src/plugins/qmleditor/qmlcodecompletion.cpp
@@ -78,9 +78,10 @@ int QmlCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
     if (!qmlDocument->program())
         qmlDocument = m_modelManager->snapshot().value(qmlDocument->fileName());
 
-    if (qmlDocument->program()) {
+    // FIXME: this completion strategy is not going to work when the document was never parsed correctly.
+    if (qmlDocument && qmlDocument->program()) {
          QmlJS::AST::UiProgram *program = qmlDocument->program();
-//        qDebug() << "*** program:" << program;
+//         qDebug() << "*** program:" << program;
  
          if (program) {
             QmlExpressionUnderCursor expressionUnderCursor;
@@ -90,7 +91,9 @@ int QmlCodeCompletion::startCompletion(TextEditor::ITextEditable *editor)
 
             QmlLookupContext context(expressionUnderCursor.expressionScopes(), qmlDocument, m_modelManager->snapshot());
             QmlResolveExpression resolver(context);
+//            qDebug()<<"*** expression under cursor:"<<expressionUnderCursor.expressionNode();
             QList<QmlSymbol*> symbols = resolver.visibleSymbols(expressionUnderCursor.expressionNode());
+//            qDebug()<<"***"<<symbols.size()<<"visible symbols";
 
             foreach (QmlSymbol *symbol, symbols) {
                 QString word;
diff --git a/src/plugins/qmleditor/qmllookupcontext.cpp b/src/plugins/qmleditor/qmllookupcontext.cpp
index 5cd065bff66d727fff81bd531091b8846f610746..5bbc044899b4004a94ead2c39d813a1da637f34a 100644
--- a/src/plugins/qmleditor/qmllookupcontext.cpp
+++ b/src/plugins/qmleditor/qmllookupcontext.cpp
@@ -94,6 +94,8 @@ QmlSymbol *QmlLookupContext::resolveType(const QString &name, const QString &fil
         if (!import)
             continue;
 
+        // TODO: handle Qt imports
+
         if (!(import->fileName))
             continue;
 
@@ -107,6 +109,7 @@ QmlSymbol *QmlLookupContext::resolveType(const QString &name, const QString &fil
         }
     }
 
+    // TODO: handle Qt imports, hack for now:
     return resolveBuildinType(name);
 }
 
@@ -297,5 +300,9 @@ QList<QmlSymbol*> QmlLookupContext::visibleTypes()
         }
     }
 
+    // TODO: handle Qt imports, hack for now:
+    foreach (const QString &name, qmlMetaTypes)
+        result.append(resolveBuildinType(name));
+
     return result;
 }