[plugin model tests] report an error if a module-level component is found in the monorepo (IJPL-179165)

Also, report module-level listeners just in case.

GitOrigin-RevId: b9ed4e97624bcf98b0c507eb9c5c2d73ae844ff3
This commit is contained in:
Nikolay Chashnikov
2025-07-04 17:37:23 +00:00
committed by intellij-monorepo-bot
parent f9d91aac95
commit b464ad55ce
@@ -535,19 +535,34 @@ class PluginModelValidator(
* Checks elements in the main module or a content module
*/
private fun checkModuleElements(moduleDescriptor: RawPluginDescriptor, sourceModule: JpsModule, descriptorFile: Path) {
for (extensionPointElement in moduleDescriptor.moduleElementsContainer.extensionPoints) {
fun reportError(message: String) {
reportError(
message = """
|Module-level extension point '$extensionPointElement' is defined in '${sourceModule.name}'.
|Module-level extension points are deprecated in general and forbidden in intellij monorepo.
|Use application-level or project-level extension point, and pass 'Module' instance as a parameter if needed.
|""".trimMargin(),
message = message,
sourceModule = sourceModule,
mapOf(
"descriptorFile" to descriptorFile,
),
),
)
}
for (extensionPointElement in moduleDescriptor.moduleElementsContainer.extensionPoints) {
reportError("""
|Module-level extension point '$extensionPointElement' is defined in '${sourceModule.name}'.
|Module-level extension points are deprecated in general and forbidden in intellij monorepo.
|Use application-level or project-level extension point, and pass 'Module' instance as a parameter if needed.
|""".trimMargin())
}
for (componentElement in moduleDescriptor.moduleElementsContainer.components) {
reportError("""
|Module-level component '$componentElement' is defined in '${sourceModule.name}'.
|Module-level components are deprecated in general and forbidden in intellij monorepo.
|Use application-level or project-level services instead, and pass 'Module' instance as a parameter if needed.
""".trimMargin()
)
}
for (listenerElement in moduleDescriptor.moduleElementsContainer.listeners) {
reportError("Module-level listener '$listenerElement' is defined in '${sourceModule.name}', but they aren't supported.")
}
}
// TODO same for depends