181: Revert "Fix OOM in tests for 181 (Temporary workaround)"

This reverts commit 5cf45ef
This commit is contained in:
Nicolay Mitropolsky
2018-02-21 17:56:37 +03:00
committed by Nikolay Krasko
parent f0a85eeefb
commit 1125926009
@@ -24,7 +24,6 @@ import com.intellij.core.JavaCoreApplicationEnvironment
import com.intellij.core.JavaCoreProjectEnvironment import com.intellij.core.JavaCoreProjectEnvironment
import com.intellij.lang.MetaLanguage import com.intellij.lang.MetaLanguage
import com.intellij.lang.jvm.facade.JvmElementProvider import com.intellij.lang.jvm.facade.JvmElementProvider
import com.intellij.openapi.Disposable
import com.intellij.openapi.extensions.Extensions import com.intellij.openapi.extensions.Extensions
import com.intellij.openapi.extensions.ExtensionsArea import com.intellij.openapi.extensions.ExtensionsArea
import com.intellij.openapi.fileTypes.FileTypeExtensionPoint import com.intellij.openapi.fileTypes.FileTypeExtensionPoint
@@ -40,71 +39,47 @@ import com.intellij.psi.impl.compiled.ClsCustomNavigationPolicy
import com.intellij.psi.meta.MetaDataContributor import com.intellij.psi.meta.MetaDataContributor
import com.intellij.psi.stubs.BinaryFileStubBuilders import com.intellij.psi.stubs.BinaryFileStubBuilders
import com.intellij.psi.util.JavaClassSupers import com.intellij.psi.util.JavaClassSupers
import com.intellij.util.containers.MultiMap
import junit.framework.TestCase import junit.framework.TestCase
import org.jetbrains.kotlin.utils.PathUtil import org.jetbrains.kotlin.utils.PathUtil
import java.io.File import java.io.File
import java.net.URLClassLoader import java.net.URLClassLoader
abstract class AbstractJavaToKotlinConverterForWebDemoTest : TestCase() { abstract class AbstractJavaToKotlinConverterForWebDemoTest : TestCase() {
lateinit var testDisposable: Disposable val DISPOSABLE = Disposer.newDisposable()
fun doTest(javaPath: String) { fun doTest(javaPath: String) {
val fileContents = FileUtil.loadFile(File(javaPath), true) try {
val javaCoreEnvironment: JavaCoreProjectEnvironment = setUpJavaCoreEnvironment() val fileContents = FileUtil.loadFile(File(javaPath), true)
translateToKotlin(fileContents, javaCoreEnvironment.project) val javaCoreEnvironment: JavaCoreProjectEnvironment = setUpJavaCoreEnvironment()
translateToKotlin(fileContents, javaCoreEnvironment.project)
}
finally {
Disposer.dispose(DISPOSABLE)
}
} }
override fun setUp() { fun setUpJavaCoreEnvironment(): JavaCoreProjectEnvironment {
super.setUp() Extensions.cleanRootArea(DISPOSABLE)
testDisposable = Disposer.newDisposable()
}
override fun tearDown() {
super.tearDown()
Disposer.dispose(testDisposable)
}
private fun setUpJavaCoreEnvironment(): JavaCoreProjectEnvironment {
Extensions.cleanRootArea(testDisposable)
val area = Extensions.getRootArea() val area = Extensions.getRootArea()
registerExtensionPoints(area) registerExtensionPoints(area)
val applicationEnvironment = JavaCoreApplicationEnvironment(testDisposable) val applicationEnvironment = JavaCoreApplicationEnvironment(DISPOSABLE)
val javaCoreEnvironment = object : JavaCoreProjectEnvironment(DISPOSABLE, applicationEnvironment) {
Disposer.register(testDisposable, Disposable {
val rootArea = Extensions.getRootArea()
val availabilityListeners = rootArea::class.java.getDeclaredField("myAvailabilityListeners")
availabilityListeners.isAccessible = true
(availabilityListeners.get(rootArea) as MultiMap<String, *>)
.remove("com.intellij.virtualFileSystem")
})
val javaCoreEnvironment = object : JavaCoreProjectEnvironment(testDisposable, applicationEnvironment) {
override fun preregisterServices() { override fun preregisterServices() {
val projectArea = Extensions.getArea(project) val projectArea = Extensions.getArea(project)
CoreApplicationEnvironment.registerExtensionPoint( CoreApplicationEnvironment.registerExtensionPoint(projectArea, PsiTreeChangePreprocessor.EP_NAME, PsiTreeChangePreprocessor::class.java)
projectArea,
PsiTreeChangePreprocessor.EP_NAME,
PsiTreeChangePreprocessor::class.java
)
CoreApplicationEnvironment.registerExtensionPoint(projectArea, PsiElementFinder.EP_NAME, PsiElementFinder::class.java) CoreApplicationEnvironment.registerExtensionPoint(projectArea, PsiElementFinder.EP_NAME, PsiElementFinder::class.java)
CoreApplicationEnvironment.registerExtensionPoint(projectArea, JvmElementProvider.EP_NAME, JvmElementProvider::class.java) CoreApplicationEnvironment.registerExtensionPoint(projectArea, JvmElementProvider.EP_NAME, JvmElementProvider::class.java)
} }
} }
javaCoreEnvironment.project.registerService( javaCoreEnvironment.project.registerService(NullableNotNullManager::class.java, object : NullableNotNullManager(javaCoreEnvironment.project) {
NullableNotNullManager::class.java, override fun isNullable(owner: PsiModifierListOwner, checkBases: Boolean) = !isNotNull(owner, checkBases)
object : NullableNotNullManager(javaCoreEnvironment.project) { override fun isNotNull(owner: PsiModifierListOwner, checkBases: Boolean) = true
override fun isNullable(owner: PsiModifierListOwner, checkBases: Boolean) = !isNotNull(owner, checkBases) override fun hasHardcodedContracts(element: PsiElement): Boolean = false
override fun getPredefinedNotNulls() = emptyList<String>()
override fun isNotNull(owner: PsiModifierListOwner, checkBases: Boolean) = true })
override fun hasHardcodedContracts(element: PsiElement): Boolean = false
override fun getPredefinedNotNulls() = emptyList<String>()
})
applicationEnvironment.application.registerService(JavaClassSupers::class.java, JavaClassSupersImpl::class.java) applicationEnvironment.application.registerService(JavaClassSupers::class.java, JavaClassSupersImpl::class.java)
@@ -135,7 +110,7 @@ abstract class AbstractJavaToKotlinConverterForWebDemoTest : TestCase() {
CoreApplicationEnvironment.registerExtensionPoint(area, JavaModuleSystem.EP_NAME, JavaModuleSystem::class.java) CoreApplicationEnvironment.registerExtensionPoint(area, JavaModuleSystem.EP_NAME, JavaModuleSystem::class.java)
} }
private fun findAnnotations(): File? { fun findAnnotations(): File? {
var classLoader = JavaToKotlinTranslator::class.java.classLoader var classLoader = JavaToKotlinTranslator::class.java.classLoader
while (classLoader != null) { while (classLoader != null) {
val loader = classLoader val loader = classLoader