diff --git a/src/plugins/languageclient/lualanguageclient/LuaLanguageClient.json.in b/src/plugins/languageclient/lualanguageclient/LuaLanguageClient.json.in index 0ac46c37638..c6b63411c62 100644 --- a/src/plugins/languageclient/lualanguageclient/LuaLanguageClient.json.in +++ b/src/plugins/languageclient/lualanguageclient/LuaLanguageClient.json.in @@ -1,9 +1,10 @@ { "Name" : "LuaLanguageClient", "Version" : "${IDE_VERSION}", + "CompatVersion" : "${IDE_VERSION_COMPAT}", + "LuaCompatibleVersion" : "14.0.0", "DisabledByDefault" : true, "SoftLoadable" : true, - "CompatVersion" : "${IDE_VERSION_COMPAT}", "Vendor" : "The Qt Company Ltd", "Copyright" : "(C) ${IDE_COPYRIGHT_YEAR} The Qt Company Ltd", "License" : [ "Commercial Usage", diff --git a/src/plugins/lua/Lua.json.in b/src/plugins/lua/Lua.json.in index e977d01ce5d..52b2dadad56 100644 --- a/src/plugins/lua/Lua.json.in +++ b/src/plugins/lua/Lua.json.in @@ -2,6 +2,7 @@ "Name" : "Lua", "Version" : "${IDE_VERSION}", "CompatVersion" : "${IDE_VERSION_COMPAT}", + "LuaCompatibleVersion" : "14.0.0", "DisabledByDefault" : true, "SoftLoadable" : true, "Vendor" : "The Qt Company Ltd", diff --git a/src/plugins/lua/luapluginspec.cpp b/src/plugins/lua/luapluginspec.cpp index 17a303bdf1f..8a829c5f5ef 100644 --- a/src/plugins/lua/luapluginspec.cpp +++ b/src/plugins/lua/luapluginspec.cpp @@ -98,10 +98,18 @@ bool LuaPluginSpec::provides(PluginSpec *spec, const PluginDependency &dependenc if (QString::compare(dependency.name, spec->name(), Qt::CaseInsensitive) != 0) return false; - // Since we first released the lua support with Qt Creator 14.0.0, but the internal version - // number was still 13.0.82, we needed to special case this version. - if (versionCompare(dependency.version, "14.0.0") <= 0) - return true; + const QString luaCompatibleVersion = spec->metaData().value("LuaCompatibleVersion").toString(); + + if (luaCompatibleVersion.isEmpty()) { + qCWarning(luaPluginSpecLog) + << "The plugin" << spec->name() + << "does not specify a \"LuaCompatibleVersion\", but the lua plugin" << name() + << "requires it."; + return false; + } + + if (versionCompare(luaCompatibleVersion, dependency.version) > 0) + return false; return (versionCompare(spec->version(), dependency.version) >= 0); } @@ -114,6 +122,7 @@ bool LuaPluginSpec::loadLibrary() setState(PluginSpec::State::Loaded); return true; } + bool LuaPluginSpec::initializePlugin() { QTC_ASSERT(!d->activeLuaState, return false);