diff options
Diffstat (limited to 'src/lib/corelib/language/itemreaderastvisitor.cpp')
-rw-r--r-- | src/lib/corelib/language/itemreaderastvisitor.cpp | 7 |
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; } |