diff --git a/src/libs/qmljs/qmljsbind.cpp b/src/libs/qmljs/qmljsbind.cpp
index 1cdf8e2b5e0b083b9b7eaf24927ec2a401340258..bc56065463bcf61998853419680e17832189a4c1 100644
--- a/src/libs/qmljs/qmljsbind.cpp
+++ b/src/libs/qmljs/qmljsbind.cpp
@@ -241,7 +241,7 @@ bool Bind::visit(UiObjectDefinition *ast)
     // think anchors { ... }
     bool isGroupedBinding = false;
     for (UiQualifiedId *it = ast->qualifiedTypeNameId; it; it = it->next) {
-        if (!it->next)
+        if (!it->next && it->name)
             isGroupedBinding = it->name->asString().at(0).isLower();
     }
 
diff --git a/src/libs/qmljs/qmljsrewriter.cpp b/src/libs/qmljs/qmljsrewriter.cpp
index 17293b34f6ef4fae57d74e29633a5f7bbfd2991c..aad4b650abf9c9aef5a8851b5ef485dda5abfe20 100644
--- a/src/libs/qmljs/qmljsrewriter.cpp
+++ b/src/libs/qmljs/qmljsrewriter.cpp
@@ -256,7 +256,8 @@ QString Rewriter::flatten(UiQualifiedId *first)
         if (current != first)
             flatId += '.';
 
-        flatId += current->name->asString();
+        if (current->name)
+            flatId += current->name->asString();
     }
 
     return flatId;
diff --git a/src/libs/qmljs/qmljsscopebuilder.cpp b/src/libs/qmljs/qmljsscopebuilder.cpp
index 2fbdc0403c6514b0d1ab1d6486d3a12a645705e7..e1b42833300348f566ef7ab2e6116831aebbfc8b 100644
--- a/src/libs/qmljs/qmljsscopebuilder.cpp
+++ b/src/libs/qmljs/qmljsscopebuilder.cpp
@@ -228,7 +228,7 @@ void ScopeBuilder::setQmlScopeObject(Node *node)
         if (initializer) {
             for (UiObjectMemberList *m = initializer->members; m; m = m->next) {
                 if (UiScriptBinding *scriptBinding = cast<UiScriptBinding *>(m->member)) {
-                    if (scriptBinding->qualifiedId
+                    if (scriptBinding->qualifiedId && scriptBinding->qualifiedId->name
                             && scriptBinding->qualifiedId->name->asString() == QLatin1String("target")
                             && ! scriptBinding->qualifiedId->next) {
                         // ### make Evaluate understand statements.
@@ -256,6 +256,8 @@ const Value *ScopeBuilder::scopeObjectLookup(AST::UiQualifiedId *id)
     foreach (const ObjectValue *scopeObject, _context->scopeChain().qmlScopeObjects) {
         const ObjectValue *object = scopeObject;
         for (UiQualifiedId *it = id; it; it = it->next) {
+            if (!it->name)
+                return 0;
             result = object->property(it->name->asString(), _context);
             if (!result)
                 break;
diff --git a/src/plugins/qmljseditor/qmljsfindreferences.cpp b/src/plugins/qmljseditor/qmljsfindreferences.cpp
index d3f9de96a00c1839d925853be9e58aa966e61751..ff7f106c7b0c5c88b215eaf7467a80aa0f13848e 100644
--- a/src/plugins/qmljseditor/qmljsfindreferences.cpp
+++ b/src/plugins/qmljseditor/qmljsfindreferences.cpp
@@ -468,7 +468,7 @@ private:
 
     bool checkBindingName(UiQualifiedId *id)
     {
-        if (id && !id->next && containsOffset(id->identifierToken)) {
+        if (id && id->name && !id->next && containsOffset(id->identifierToken)) {
             _result.second = id->name->asString();
             return true;
         }