From f9d91aac95575ddd32406c8105ea5e31dc353b57 Mon Sep 17 00:00:00 2001 From: Nikolay Chashnikov Date: Fri, 4 Jul 2025 14:29:07 +0200 Subject: [PATCH] [plugin model tests] report an error if module-level extension point is found in the monorepo (IJPL-179175) GitOrigin-RevId: 430b0ba282ef1fd22f366d75927713d7703a6508 --- .../ide/plugins/PluginModelValidator.kt | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/platform/platform-tests/testSrc/com/intellij/ide/plugins/PluginModelValidator.kt b/platform/platform-tests/testSrc/com/intellij/ide/plugins/PluginModelValidator.kt index 118fafae44ef..8f195e303ae4 100644 --- a/platform/platform-tests/testSrc/com/intellij/ide/plugins/PluginModelValidator.kt +++ b/platform/platform-tests/testSrc/com/intellij/ide/plugins/PluginModelValidator.kt @@ -261,6 +261,7 @@ class PluginModelValidator( sourceModuleNameToFileInfo = sourceModuleNameToFileInfo, moduleNameToInfo = moduleNameToInfo, ) + checkModuleElements(moduleDescriptor = pluginInfo.descriptor, sourceModule = pluginInfo.sourceModule, pluginInfo.descriptorFile) } val registeredContentModules = allMainModulesOfPlugins.flatMapTo(HashSet()) { pluginInfo -> @@ -526,6 +527,26 @@ class PluginModelValidator( } checkContentModuleUnexpectedElements(moduleDescriptor, referencingModuleInfo.sourceModule, moduleInfo) + checkModuleElements(moduleDescriptor, moduleInfo.sourceModule, moduleInfo.descriptorFile) + } + } + + /** + * 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) { + 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(), + sourceModule = sourceModule, + mapOf( + "descriptorFile" to descriptorFile, + ), + ) } }