[FIR] Add createEmptySession to FirSessionFactory for testing purposes
This commit is contained in:
@@ -9,7 +9,9 @@ import com.intellij.openapi.extensions.Extensions
|
|||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.psi.PsiElementFinder
|
import com.intellij.psi.PsiElementFinder
|
||||||
import com.intellij.psi.search.GlobalSearchScope
|
import com.intellij.psi.search.GlobalSearchScope
|
||||||
|
import org.jetbrains.annotations.TestOnly
|
||||||
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
import org.jetbrains.kotlin.analyzer.ModuleInfo
|
||||||
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.PrivateSessionConstructor
|
import org.jetbrains.kotlin.fir.PrivateSessionConstructor
|
||||||
import org.jetbrains.kotlin.fir.java.*
|
import org.jetbrains.kotlin.fir.java.*
|
||||||
import org.jetbrains.kotlin.fir.java.deserialization.KotlinDeserializedJvmSymbolsProvider
|
import org.jetbrains.kotlin.fir.java.deserialization.KotlinDeserializedJvmSymbolsProvider
|
||||||
@@ -101,4 +103,9 @@ object FirSessionFactory {
|
|||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestOnly
|
||||||
|
fun createEmptySession(): FirSession {
|
||||||
|
return object : FirSession(null) {}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -22,7 +22,7 @@ import java.io.File
|
|||||||
import java.nio.file.Path
|
import java.nio.file.Path
|
||||||
|
|
||||||
class LightTree2Fir(
|
class LightTree2Fir(
|
||||||
val session: FirSession = @OptIn(PrivateSessionConstructor::class) object : FirSession(null) {},
|
val session: FirSession,
|
||||||
private val scopeProvider: FirScopeProvider,
|
private val scopeProvider: FirScopeProvider,
|
||||||
private val stubMode: Boolean = false
|
private val stubMode: Boolean = false
|
||||||
) {
|
) {
|
||||||
|
|||||||
+7
-2
@@ -8,6 +8,7 @@ package org.jetbrains.kotlin.fir.lightTree
|
|||||||
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
|
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
|
||||||
import org.jetbrains.kotlin.fir.builder.StubFirScopeProvider
|
import org.jetbrains.kotlin.fir.builder.StubFirScopeProvider
|
||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
|
import org.jetbrains.kotlin.fir.session.FirSessionFactory
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.nio.file.Paths
|
import java.nio.file.Paths
|
||||||
@@ -16,10 +17,14 @@ import java.nio.file.Paths
|
|||||||
abstract class AbstractLightTree2FirConverterTestCase : AbstractRawFirBuilderTestCase() {
|
abstract class AbstractLightTree2FirConverterTestCase : AbstractRawFirBuilderTestCase() {
|
||||||
|
|
||||||
override fun doTest(filePath: String) {
|
override fun doTest(filePath: String) {
|
||||||
val firFile = LightTree2Fir(scopeProvider = StubFirScopeProvider, stubMode = false).buildFirFile(Paths.get(filePath))
|
val firFile = LightTree2Fir(
|
||||||
|
session = FirSessionFactory.createEmptySession(),
|
||||||
|
scopeProvider = StubFirScopeProvider,
|
||||||
|
stubMode = false
|
||||||
|
).buildFirFile(Paths.get(filePath))
|
||||||
val firDump = firFile.render()
|
val firDump = firFile.render()
|
||||||
|
|
||||||
val expectedFile = File(filePath.replace(".kt", ".txt"))
|
val expectedFile = File(filePath.replace(".kt", ".txt"))
|
||||||
KotlinTestUtils.assertEqualsToFile(expectedFile, firDump)
|
KotlinTestUtils.assertEqualsToFile(expectedFile, firDump)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-3
@@ -12,11 +12,10 @@ import com.intellij.psi.impl.PsiManagerEx
|
|||||||
import com.intellij.testFramework.LightVirtualFile
|
import com.intellij.testFramework.LightVirtualFile
|
||||||
import com.intellij.testFramework.TestDataPath
|
import com.intellij.testFramework.TestDataPath
|
||||||
import org.jetbrains.kotlin.fir.FirRenderer
|
import org.jetbrains.kotlin.fir.FirRenderer
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
|
||||||
import org.jetbrains.kotlin.fir.PrivateSessionConstructor
|
|
||||||
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
|
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
|
||||||
import org.jetbrains.kotlin.fir.builder.StubFirScopeProvider
|
import org.jetbrains.kotlin.fir.builder.StubFirScopeProvider
|
||||||
import org.jetbrains.kotlin.fir.lightTree.converter.DeclarationsConverter
|
import org.jetbrains.kotlin.fir.lightTree.converter.DeclarationsConverter
|
||||||
|
import org.jetbrains.kotlin.fir.session.FirSessionFactory
|
||||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||||
import org.jetbrains.kotlin.parsing.KotlinParser
|
import org.jetbrains.kotlin.parsing.KotlinParser
|
||||||
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
|
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
|
||||||
@@ -64,7 +63,7 @@ class SimpleTestCase : AbstractRawFirBuilderTestCase() {
|
|||||||
println(DebugUtil.nodeTreeToString(builder.treeBuilt, false))
|
println(DebugUtil.nodeTreeToString(builder.treeBuilt, false))
|
||||||
|
|
||||||
val firFromLightTreeFile = DeclarationsConverter(
|
val firFromLightTreeFile = DeclarationsConverter(
|
||||||
@OptIn(PrivateSessionConstructor::class) object : FirSession(null) {},
|
FirSessionFactory.createEmptySession(),
|
||||||
StubFirScopeProvider,
|
StubFirScopeProvider,
|
||||||
true,
|
true,
|
||||||
builder.lightTree
|
builder.lightTree
|
||||||
|
|||||||
+7
-2
@@ -13,6 +13,7 @@ import com.intellij.util.PathUtil
|
|||||||
import org.jetbrains.kotlin.fir.FirRenderer
|
import org.jetbrains.kotlin.fir.FirRenderer
|
||||||
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
|
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
|
||||||
import org.jetbrains.kotlin.fir.builder.StubFirScopeProvider
|
import org.jetbrains.kotlin.fir.builder.StubFirScopeProvider
|
||||||
|
import org.jetbrains.kotlin.fir.session.FirSessionFactory
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners
|
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
@@ -47,7 +48,11 @@ class TotalKotlinTest : AbstractRawFirBuilderTestCase() {
|
|||||||
var counter = 0
|
var counter = 0
|
||||||
var time = 0L
|
var time = 0L
|
||||||
|
|
||||||
val lightTreeConverter = LightTree2Fir(scopeProvider = StubFirScopeProvider, stubMode = true)
|
val lightTreeConverter = LightTree2Fir(
|
||||||
|
session = FirSessionFactory.createEmptySession(),
|
||||||
|
scopeProvider = StubFirScopeProvider,
|
||||||
|
stubMode = true
|
||||||
|
)
|
||||||
|
|
||||||
if (onlyLightTree) println("LightTree generation") else println("Fir from LightTree converter")
|
if (onlyLightTree) println("LightTree generation") else println("Fir from LightTree converter")
|
||||||
println("BASE PATH: $path")
|
println("BASE PATH: $path")
|
||||||
@@ -104,4 +109,4 @@ class TotalKotlinTest : AbstractRawFirBuilderTestCase() {
|
|||||||
fun testTotalKotlinFirFromPsi() {
|
fun testTotalKotlinFirFromPsi() {
|
||||||
totalKotlinPsi(false)
|
totalKotlinPsi(false)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+12
-3
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.fir.FirRenderer
|
|||||||
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
|
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
|
||||||
import org.jetbrains.kotlin.fir.builder.StubFirScopeProvider
|
import org.jetbrains.kotlin.fir.builder.StubFirScopeProvider
|
||||||
import org.jetbrains.kotlin.fir.lightTree.LightTree2Fir
|
import org.jetbrains.kotlin.fir.lightTree.LightTree2Fir
|
||||||
|
import org.jetbrains.kotlin.fir.session.FirSessionFactory
|
||||||
import org.openjdk.jmh.annotations.Scope
|
import org.openjdk.jmh.annotations.Scope
|
||||||
import org.openjdk.jmh.annotations.State
|
import org.openjdk.jmh.annotations.State
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -17,13 +18,21 @@ import java.io.File
|
|||||||
@State(Scope.Benchmark)
|
@State(Scope.Benchmark)
|
||||||
open class LightTree2FirGenerator : TreeGenerator, AbstractRawFirBuilderTestCase() {
|
open class LightTree2FirGenerator : TreeGenerator, AbstractRawFirBuilderTestCase() {
|
||||||
override fun generateBaseTree(text: String, file: File) {
|
override fun generateBaseTree(text: String, file: File) {
|
||||||
val lightTreeConverter = LightTree2Fir(scopeProvider = StubFirScopeProvider, stubMode = false)
|
val lightTreeConverter = LightTree2Fir(
|
||||||
|
session = FirSessionFactory.createEmptySession(),
|
||||||
|
scopeProvider = StubFirScopeProvider,
|
||||||
|
stubMode = false
|
||||||
|
)
|
||||||
val lightTree = lightTreeConverter.buildLightTree(text)
|
val lightTree = lightTreeConverter.buildLightTree(text)
|
||||||
DebugUtil.lightTreeToString(lightTree, false)
|
DebugUtil.lightTreeToString(lightTree, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun generateFir(text: String, file: File, stubMode: Boolean) {
|
override fun generateFir(text: String, file: File, stubMode: Boolean) {
|
||||||
val lightTreeConverter = LightTree2Fir(scopeProvider = StubFirScopeProvider, stubMode = stubMode)
|
val lightTreeConverter = LightTree2Fir(
|
||||||
|
session = FirSessionFactory.createEmptySession(),
|
||||||
|
scopeProvider = StubFirScopeProvider,
|
||||||
|
stubMode = stubMode
|
||||||
|
)
|
||||||
val firFile = lightTreeConverter.buildFirFile(text, file.name)
|
val firFile = lightTreeConverter.buildFirFile(text, file.name)
|
||||||
StringBuilder().also { FirRenderer(it).visitFile(firFile) }.toString()
|
StringBuilder().also { FirRenderer(it).visitFile(firFile) }.toString()
|
||||||
}
|
}
|
||||||
@@ -35,4 +44,4 @@ open class LightTree2FirGenerator : TreeGenerator, AbstractRawFirBuilderTestCase
|
|||||||
override fun tearDown() {
|
override fun tearDown() {
|
||||||
super.tearDown()
|
super.tearDown()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+11
-2
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.fir.builder.StubFirScopeProvider
|
|||||||
import org.jetbrains.kotlin.fir.lightTree.LightTree2Fir
|
import org.jetbrains.kotlin.fir.lightTree.LightTree2Fir
|
||||||
import org.jetbrains.kotlin.fir.lightTree.walkTopDown
|
import org.jetbrains.kotlin.fir.lightTree.walkTopDown
|
||||||
import org.jetbrains.kotlin.fir.lightTree.walkTopDownWithTestData
|
import org.jetbrains.kotlin.fir.lightTree.walkTopDownWithTestData
|
||||||
|
import org.jetbrains.kotlin.fir.session.FirSessionFactory
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners
|
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
@@ -54,7 +55,11 @@ class TreesCompareTest : AbstractRawFirBuilderTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun compareAll(stubMode: Boolean) {
|
private fun compareAll(stubMode: Boolean) {
|
||||||
val lightTreeConverter = LightTree2Fir(scopeProvider = StubFirScopeProvider, stubMode = stubMode)
|
val lightTreeConverter = LightTree2Fir(
|
||||||
|
session = FirSessionFactory.createEmptySession(),
|
||||||
|
scopeProvider = StubFirScopeProvider,
|
||||||
|
stubMode = stubMode
|
||||||
|
)
|
||||||
compareBase(System.getProperty("user.dir"), withTestData = false) { file ->
|
compareBase(System.getProperty("user.dir"), withTestData = false) { file ->
|
||||||
val text = FileUtil.loadFile(file, CharsetToolkit.UTF8, true).trim()
|
val text = FileUtil.loadFile(file, CharsetToolkit.UTF8, true).trim()
|
||||||
|
|
||||||
@@ -72,7 +77,11 @@ class TreesCompareTest : AbstractRawFirBuilderTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun testCompareDiagnostics() {
|
fun testCompareDiagnostics() {
|
||||||
val lightTreeConverter = LightTree2Fir(scopeProvider = StubFirScopeProvider, stubMode = false)
|
val lightTreeConverter = LightTree2Fir(
|
||||||
|
session = FirSessionFactory.createEmptySession(),
|
||||||
|
scopeProvider = StubFirScopeProvider,
|
||||||
|
stubMode = false
|
||||||
|
)
|
||||||
compareBase("compiler/testData/diagnostics/tests", withTestData = true) { file ->
|
compareBase("compiler/testData/diagnostics/tests", withTestData = true) { file ->
|
||||||
if (file.name.endsWith(".fir.kt")) {
|
if (file.name.endsWith(".fir.kt")) {
|
||||||
return@compareBase true
|
return@compareBase true
|
||||||
|
|||||||
+2
-4
@@ -6,9 +6,8 @@
|
|||||||
package org.jetbrains.kotlin.fir.builder
|
package org.jetbrains.kotlin.fir.builder
|
||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirRenderer
|
import org.jetbrains.kotlin.fir.FirRenderer
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
|
||||||
import org.jetbrains.kotlin.fir.PrivateSessionConstructor
|
|
||||||
import org.jetbrains.kotlin.fir.render
|
import org.jetbrains.kotlin.fir.render
|
||||||
|
import org.jetbrains.kotlin.fir.session.FirSessionFactory
|
||||||
import org.jetbrains.kotlin.psi.KtNamedFunction
|
import org.jetbrains.kotlin.psi.KtNamedFunction
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.findDescendantOfType
|
import org.jetbrains.kotlin.psi.psiUtil.findDescendantOfType
|
||||||
import org.jetbrains.kotlin.test.KotlinTestUtils
|
import org.jetbrains.kotlin.test.KotlinTestUtils
|
||||||
@@ -25,8 +24,7 @@ abstract class AbstractPartialRawFirBuilderTestCase : AbstractRawFirBuilderTestC
|
|||||||
val file = createKtFile(filePath)
|
val file = createKtFile(filePath)
|
||||||
val functionToBuild = file.findDescendantOfType<KtNamedFunction> { it.name == nameToFind }!!
|
val functionToBuild = file.findDescendantOfType<KtNamedFunction> { it.name == nameToFind }!!
|
||||||
|
|
||||||
@OptIn(PrivateSessionConstructor::class)
|
val session = FirSessionFactory.createEmptySession()
|
||||||
val session = object : FirSession(null) {}
|
|
||||||
|
|
||||||
val firFunction = RawFirBuilder(session, StubFirScopeProvider, false)
|
val firFunction = RawFirBuilder(session, StubFirScopeProvider, false)
|
||||||
.buildFunctionWithBody(functionToBuild)
|
.buildFunctionWithBody(functionToBuild)
|
||||||
|
|||||||
+2
-2
@@ -24,6 +24,7 @@ import org.jetbrains.kotlin.fir.expressions.FirEmptyArgumentList
|
|||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
import org.jetbrains.kotlin.fir.expressions.impl.FirNoReceiverExpression
|
||||||
import org.jetbrains.kotlin.fir.expressions.impl.FirStubStatement
|
import org.jetbrains.kotlin.fir.expressions.impl.FirStubStatement
|
||||||
import org.jetbrains.kotlin.fir.references.impl.FirStubReference
|
import org.jetbrains.kotlin.fir.references.impl.FirStubReference
|
||||||
|
import org.jetbrains.kotlin.fir.session.FirSessionFactory
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
import org.jetbrains.kotlin.fir.types.FirTypeProjection
|
||||||
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
import org.jetbrains.kotlin.fir.types.FirTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.isExtensionFunctionAnnotationCall
|
import org.jetbrains.kotlin.fir.types.isExtensionFunctionAnnotationCall
|
||||||
@@ -74,8 +75,7 @@ abstract class AbstractRawFirBuilderTestCase : KtParsingTestCase(
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected fun KtFile.toFirFile(stubMode: Boolean): FirFile {
|
protected fun KtFile.toFirFile(stubMode: Boolean): FirFile {
|
||||||
@OptIn(PrivateSessionConstructor::class)
|
val session = FirSessionFactory.createEmptySession()
|
||||||
val session = object : FirSession(null) {}
|
|
||||||
return RawFirBuilder(session, StubFirScopeProvider, stubMode).buildFirFile(this)
|
return RawFirBuilder(session, StubFirScopeProvider, stubMode).buildFirFile(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user