Remove StorageComponentContainerContributor::onContainerComposed

Rename addDeclarations -> registerModuleComponents
Use it to provide SamWithReceiverResolver extensions instead

Post construction on container composition can be achieved
    but manually inserting injections where it seems appropriate
    is bug prone
This fixes a bug where SamWithReceiverPlugin extension was not registered
    for some containers in IDE which led to incorrect highlighting in IDE
Add IDE test for applying SamWithReceiver plugin

 #KT-18062 Fixed
This commit is contained in:
Pavel V. Talanov
2017-08-17 17:33:03 +03:00
parent 6f180416b1
commit 6424b6760f
26 changed files with 199 additions and 75 deletions
@@ -16,9 +16,8 @@
package org.jetbrains.kotlin.extensions
import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.container.ComponentProvider
import org.jetbrains.kotlin.container.StorageComponentContainer
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.resolve.TargetPlatform
interface StorageComponentContainerContributor {
@@ -26,7 +25,5 @@ interface StorageComponentContainerContributor {
"org.jetbrains.kotlin.storageComponentContainerContributor", StorageComponentContainerContributor::class.java
)
fun addDeclarations(container: StorageComponentContainer, platform: TargetPlatform) {}
fun onContainerComposed(container: ComponentProvider, moduleInfo: ModuleInfo?) {}
fun registerModuleComponents(container: StorageComponentContainer, platform: TargetPlatform, moduleDescriptor: ModuleDescriptor) {}
}
@@ -53,7 +53,7 @@ fun StorageComponentContainer.configureModule(
platform.platformConfigurator.configureModuleComponents(this)
for (extension in StorageComponentContainerContributor.getInstances(moduleContext.project)) {
extension.addDeclarations(this, platform)
extension.registerModuleComponents(this, platform, moduleContext.module)
}
configurePlatformIndependentComponents()