TargetPlatform#getDefaultImports(): cache result in all implementations

This commit is contained in:
Pavel V. Talanov
2017-04-13 16:10:34 +03:00
parent 421b785697
commit c436a9af07
5 changed files with 48 additions and 37 deletions
@@ -18,16 +18,19 @@ package org.jetbrains.kotlin.js.resolve
import org.jetbrains.kotlin.builtins.DefaultBuiltIns
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.resolve.ImportPath
import org.jetbrains.kotlin.resolve.MultiTargetPlatform
import org.jetbrains.kotlin.resolve.PlatformConfigurator
import org.jetbrains.kotlin.resolve.TargetPlatform
import org.jetbrains.kotlin.storage.LockBasedStorageManager
object JsPlatform : TargetPlatform("JS") {
override fun getDefaultImports(languageVersionSettings: LanguageVersionSettings): List<ImportPath> =
Default.getDefaultImports(languageVersionSettings) + ImportPath.fromString("kotlin.js.*")
private val defaultImports = LockBasedStorageManager().createMemoizedFunction<Boolean, List<ImportPath>> { includeKotlinComparisons ->
Default.getDefaultImports(includeKotlinComparisons) + ImportPath.fromString("kotlin.js.*")
}
override fun getDefaultImports(includeKotlinComparisons: Boolean): List<ImportPath> = defaultImports(includeKotlinComparisons)
override val platformConfigurator: PlatformConfigurator = JsPlatformConfigurator