[AA] Add symbol tests for symbols from JS klibs
Use test compiler runner to compile JS libraries. Determine compiler by the specified TARGET_PLATFORM. Add tests for dynamic type and JS-specific .proto extensions. Refactor the code for mock library compilation to make the switch between platforms more straightforward. KTIJ-27566 KT-63217
This commit is contained in:
committed by
Space Team
parent
0736cb3fac
commit
0eb1a63a2f
+16
@@ -10,7 +10,12 @@ import com.intellij.mock.MockApplication
|
||||
import com.intellij.openapi.extensions.LoadingOrder
|
||||
import com.intellij.psi.ClassFileViewProviderFactory
|
||||
import com.intellij.psi.FileTypeFileViewProviders
|
||||
import com.intellij.psi.FileViewProviderFactory
|
||||
import com.intellij.psi.compiled.ClassFileDecompilers
|
||||
import com.intellij.psi.impl.compiled.ClassFileStubBuilder
|
||||
import com.intellij.psi.stubs.BinaryFileStubBuilders
|
||||
import org.jetbrains.kotlin.analysis.decompiler.konan.K2KotlinNativeMetadataDecompiler
|
||||
import org.jetbrains.kotlin.analysis.decompiler.konan.KlibMetaFileType
|
||||
import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinBuiltInDecompiler
|
||||
import org.jetbrains.kotlin.analysis.decompiler.psi.KotlinClassFileDecompiler
|
||||
import org.jetbrains.kotlin.analysis.test.framework.services.disposableProvider
|
||||
@@ -20,10 +25,21 @@ import org.jetbrains.kotlin.test.services.TestServices
|
||||
object AnalysisApiLibraryBaseTestServiceRegistrar : AnalysisApiTestServiceRegistrar() {
|
||||
override fun registerApplicationServices(application: MockApplication, testServices: TestServices) {
|
||||
FileTypeFileViewProviders.INSTANCE.addExplicitExtension(JavaClassFileType.INSTANCE, ClassFileViewProviderFactory())
|
||||
FileTypeFileViewProviders.INSTANCE.addExplicitExtension(
|
||||
KlibMetaFileType,
|
||||
FileViewProviderFactory { file, _, manager, _ ->
|
||||
K2KotlinNativeMetadataDecompiler().createFileViewProvider(file, manager, physical = true)
|
||||
})
|
||||
BinaryFileStubBuilders.INSTANCE.addExplicitExtension(KlibMetaFileType, ClassFileStubBuilder())
|
||||
|
||||
ClassFileDecompilers.getInstance().EP_NAME.point.apply {
|
||||
registerExtension(KotlinClassFileDecompiler(), LoadingOrder.FIRST, testServices.disposableProvider.getApplicationDisposable())
|
||||
registerExtension(KotlinBuiltInDecompiler(), LoadingOrder.FIRST, testServices.disposableProvider.getApplicationDisposable())
|
||||
registerExtension(
|
||||
K2KotlinNativeMetadataDecompiler(),
|
||||
LoadingOrder.FIRST,
|
||||
testServices.disposableProvider.getApplicationDisposable()
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user