qmltypes files have a "dependencies" entry where modules are listed of which the types are included by "cross-registration". "cross-registration" is the process of registering the types of a different module into the module that depends on them. For example, QtObject and other QtQml types are registered into QtQuick even though they clearly belong to QtQml. qmlplugindump analyzes the dependencies by loading both modules and subsequently comparing the list of types available. Types available from both modules are excluded from the module containing the dependencies entries. For example, many modules depend on QtQuick. Therefore, the QtQuick.Controls qmltypes file does not list Item etc. We did not properly state the dependency between QtQuick and QtQml before 5.15. Therefore, all the QtQml types were listed twice, once in QtQml's qmltypes and once in QtQuick's qmltypes.
With 5.15 we generate the qmltypes files not by loading the plugins, but by analyzing the QML_ELEMENT and similar macros. We therefore cannot list types that don't belong to the same module. This is why the QtQml types have disappeared from the QtQuick qmltypes file.
To fix this, the dependencies have to be amended, so that Qt Creator knows that the QtQml types are in fact available from QtQuick. There are probably more cases like this.
In Qt 6, we use an entirely different approach to dependencies between modules. Instead of registering types multiple times, we let the engine actually load the dependent module. In Qt 6, the QtQml types are actually only available in QtQml, and QtQuick's qmldir file has a line "import QtQml" that instructs the engine to load QtQml whenever QtQuick is loaded. Therefore, we need to drop all the dependencies for all modules that have been cleaned up this way in Qt 6.