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:
Christian Stenger
2019-12-09 13:13:58 +01:00
parent a57bfda5d8
commit 6b492866af
5 changed files with 34 additions and 2 deletions

View File

@@ -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;