diff --git a/src/libs/qmljs/qmljscheck.cpp b/src/libs/qmljs/qmljscheck.cpp
index db4aa839f01f5a43088e77f2e7977114afbfacee..1e2846e774e90500cc28c40a3792b2945e1c912d 100644
--- a/src/libs/qmljs/qmljscheck.cpp
+++ b/src/libs/qmljs/qmljscheck.cpp
@@ -403,13 +403,27 @@ bool Check::visit(UiProgram *)
 
 bool Check::visit(UiObjectInitializer *)
 {
-     m_propertyStack.push(StringSet());
-     return true;
+    m_propertyStack.push(StringSet());
+    UiObjectDefinition *objectDefinition = cast<UiObjectDefinition *>(parent());
+    if (objectDefinition && objectDefinition->qualifiedTypeNameId->name->asString() == "Component")
+        m_idStack.push(StringSet());
+    UiObjectBinding *objectBinding = cast<UiObjectBinding *>(parent());
+    if (objectBinding && objectBinding->qualifiedTypeNameId->name->asString() == "Component")
+        m_idStack.push(StringSet());
+    if (m_idStack.isEmpty())
+        m_idStack.push(StringSet());
+    return true;
 }
 
 void Check::endVisit(UiObjectInitializer *)
 {
     m_propertyStack.pop();
+    UiObjectDefinition *objectDenition = cast<UiObjectDefinition *>(parent());
+    if (objectDenition && objectDenition->qualifiedTypeNameId->name->asString() == "Component")
+        m_idStack.pop();
+    UiObjectBinding *objectBinding = cast<UiObjectBinding *>(parent());
+    if (objectBinding && objectBinding->qualifiedTypeNameId->name->asString() == "Component")
+        m_idStack.pop();
 }
 
 void Check::checkProperty(UiQualifiedId *qualifiedId)
@@ -501,11 +515,11 @@ bool Check::visit(UiScriptBinding *ast)
             return false;
         }
 
-        if (m_ids.contains(id)) {
+        if (m_idStack.top().contains(id)) {
             error(loc, Check::tr("ids must be unique"));
             return false;
         }
-        m_ids.insert(id);
+        m_idStack.top().insert(id);
     }
 
     checkProperty(ast->qualifiedId);
diff --git a/src/libs/qmljs/qmljscheck.h b/src/libs/qmljs/qmljscheck.h
index 9bbb6595faf11e8c2c99bc54515cc3f30f6220b6..e6df22db142c679f4b93cbbf7282115824a7858e 100644
--- a/src/libs/qmljs/qmljscheck.h
+++ b/src/libs/qmljs/qmljscheck.h
@@ -131,7 +131,7 @@ private:
 
     const Interpreter::Value *_lastValue;
     QList<AST::Node *> _chain;
-    QSet<QString> m_ids;
+    QStack<StringSet> m_idStack;
     QStack<StringSet> m_propertyStack;
 };