aboutsummaryrefslogtreecommitdiffstats
path: root/src/lib/corelib/language/itemreaderastvisitor.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/corelib/language/itemreaderastvisitor.cpp')
-rw-r--r--src/lib/corelib/language/itemreaderastvisitor.cpp7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/lib/corelib/language/itemreaderastvisitor.cpp b/src/lib/corelib/language/itemreaderastvisitor.cpp
index 15d8768c7..79f66687a 100644
--- a/src/lib/corelib/language/itemreaderastvisitor.cpp
+++ b/src/lib/corelib/language/itemreaderastvisitor.cpp
@@ -204,6 +204,13 @@ bool ItemReaderASTVisitor::visit(AST::UiScriptBinding *ast)
throw ErrorInfo(Tr::tr("id: must be followed by identifier"));
m_item->m_id = idExp->name.toString();
m_file->ensureIdScope(m_itemPool);
+ ItemValueConstPtr existingId = m_file->idScope()->itemProperty(m_item->id());
+ if (existingId) {
+ ErrorInfo e(Tr::tr("The id '%1' is not unique.").arg(m_item->id()));
+ e.append(Tr::tr("First occurrence is here."), existingId->item()->location());
+ e.append(Tr::tr("Next occurrence is here."), m_item->location());
+ throw e;
+ }
m_file->idScope()->setProperty(m_item->id(), ItemValue::create(m_item));
return false;
}