forked from qt-creator/qt-creator
QmlJS: Add check for duplicated import
Add a soft check for duplicated Qml/JS imports which adds a warning when a file contains imports that duplicate the same URI / version or file path. Change-Id: Ib9a1f8a90dd3cf469d90e83abc1d748901b1e353 Reviewed-by: Leena Miettinen <riitta-leena.miettinen@qt.io> Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
This commit is contained in:
@@ -764,6 +764,26 @@ bool Check::visit(UiProgram *)
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Check::visit(UiImport *ast)
|
||||
{
|
||||
ShortImportInfo info;
|
||||
if (auto ver = ast->version)
|
||||
info.second = LanguageUtils::ComponentVersion(ver->majorVersion, ver->minorVersion);
|
||||
|
||||
if (!ast->fileName.isNull()) // it must be a file import
|
||||
info.first = ast->fileName.toString();
|
||||
else // no file import - construct full uri
|
||||
info.first = toString(ast->importUri);
|
||||
|
||||
if (m_importInfo.contains(info)) {
|
||||
SourceLocation location = ast->firstSourceLocation();
|
||||
location.length = ast->lastSourceLocation().end();
|
||||
addMessage(WarnDuplicateImport, location, info.first);
|
||||
}
|
||||
m_importInfo.append(info);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Check::visit(UiObjectInitializer *)
|
||||
{
|
||||
QString typeName;
|
||||
|
Reference in New Issue
Block a user