Add FIR session argument to LightTree2Fir constructor

This commit is contained in:
Ivan Cilcic
2019-07-25 16:59:14 +03:00
committed by Mikhail Glukhikh
parent c253ff7953
commit 2a60f95a32
6 changed files with 18 additions and 28 deletions
+2 -5
View File
@@ -2,7 +2,6 @@ import org.ajoberstar.grgit.Grgit
plugins {
kotlin("jvm")
id("org.jetbrains.intellij") version "0.4.5"
//git plugin
id("org.ajoberstar.grgit") version "3.1.1"
@@ -20,9 +19,7 @@ repositories {
}
dependencies {
compile("com.jetbrains.intellij.java:java-psi-impl:183.5912.17")
compile("com.jetbrains.intellij.java:java-psi:183.5912.17")
compileOnly(intellijCoreDep()) { includeJars("intellij-core", "guava", rootProject = rootProject) }
compile(project(":compiler:psi"))
compile("junit", "junit", "4.4")
@@ -95,7 +92,7 @@ val jmhExec by tasks.creating(JavaExec::class) {
main = "org.openjdk.jmh.Main"
workingDir = rootDir
systemProperty("idea.home.path", project.intellij.localPath)
systemProperty("idea.home.path", project.intellijRootDir().absolutePath)
systemProperty("idea.max.intellisense.filesize", 5000 * 1024)
configurations.plusAssign(project.configurations["compile"])
}
@@ -6,35 +6,27 @@
package org.jetbrains.kotlin.fir.lightTree
import com.intellij.lang.LighterASTNode
import com.intellij.lang.ParserDefinition
import com.intellij.lang.impl.PsiBuilderFactoryImpl
import com.intellij.lexer.Lexer
import com.intellij.openapi.project.Project
import com.intellij.openapi.util.io.FileUtil
import com.intellij.openapi.vfs.CharsetToolkit
import com.intellij.psi.DummyHolderViewProvider
import com.intellij.psi.PsiManager
import com.intellij.psi.SingleRootFileViewProvider
import com.intellij.psi.impl.PsiManagerEx
import com.intellij.testFramework.LightVirtualFile
import com.intellij.util.diff.FlyweightCapableTreeStructure
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSessionBase
import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.lightTree.converter.DeclarationsConverter
import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.lexer.KotlinLexer
import org.jetbrains.kotlin.parsing.KotlinParser
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
import org.jetbrains.kotlin.parsing.MyKotlinParser
import org.jetbrains.kotlin.psi.KtFile
import java.io.File
import java.nio.file.Path
class LightTree2Fir(
private val project: Project,
private val stubMode: Boolean,
private val project: Project
private val session: FirSession = object : FirSessionBase(null) {}
) {
private val ktDummyFile = KtFile(SingleRootFileViewProvider(PsiManager.getInstance(project), LightVirtualFile()), false)
//private val ktDummyFile = KtFile(SingleRootFileViewProvider(PsiManager.getInstance(project), LightVirtualFile()), false)
companion object {
private val parserDefinition = KotlinParserDefinition()
@@ -74,7 +66,7 @@ class LightTree2Fir(
fun buildFirFile(code: String, fileName: String): FirFile {
val lightTree = buildLightTree(code)
return DeclarationsConverter(object : FirSessionBase(null) {}, stubMode, lightTree)
return DeclarationsConverter(session, stubMode, lightTree)
.convertFile(lightTree.root, fileName)
}
}
@@ -8,9 +8,9 @@ package org.jetbrains.kotlin.fir.lightTree
import com.intellij.testFramework.TestDataPath
import junit.framework.TestCase
import org.jetbrains.kotlin.fir.FirRenderer
import org.jetbrains.kotlin.fir.FirSessionBase
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners
import org.junit.runner.RunWith
import java.nio.file.Paths
@@ -21,7 +21,7 @@ class LightTree2FirConverterTestCases : AbstractRawFirBuilderTestCase() {
private val testDirPath = "compiler/fir/psi2fir/testData/rawBuilder/declarations"
private fun executeTest(filePath: String) {
val lightTree2Fir = LightTree2Fir(true, myProject).buildFirFile(Paths.get(filePath)).render()
val lightTree2Fir = LightTree2Fir(myProject, stubMode = true).buildFirFile(Paths.get(filePath)).render()
val file = createKtFile(filePath)
val firFile = file.toFirFile(stubMode = true)
@@ -11,8 +11,8 @@ import com.intellij.psi.impl.DebugUtil
import com.intellij.testFramework.TestDataPath
import com.intellij.util.PathUtil
import org.jetbrains.kotlin.fir.FirRenderer
import org.jetbrains.kotlin.fir.FirSessionBase
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
import org.jetbrains.kotlin.psi.KtFile
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners
import org.junit.runner.RunWith
@@ -47,7 +47,7 @@ class TotalKotlinTest : AbstractRawFirBuilderTestCase() {
var counter = 0
var time = 0L
val lightTreeConverter = LightTree2Fir(true, myProject)
val lightTreeConverter = LightTree2Fir(myProject, stubMode = true)
if (onlyLightTree) println("LightTree generation") else println("Fir from LightTree converter")
println("BASE PATH: $path")
@@ -7,9 +7,9 @@ package org.jetbrains.kotlin.fir.lightTree.benchmark.generators
import com.intellij.psi.impl.DebugUtil
import org.jetbrains.kotlin.fir.FirRenderer
import org.jetbrains.kotlin.fir.FirSessionBase
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
import org.jetbrains.kotlin.fir.lightTree.LightTree2Fir
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
import org.openjdk.jmh.annotations.Scope
import org.openjdk.jmh.annotations.State
import java.io.File
@@ -17,13 +17,13 @@ import java.io.File
@State(Scope.Benchmark)
open class LightTree2FirGenerator : TreeGenerator, AbstractRawFirBuilderTestCase() {
override fun generateBaseTree(text: String, file: File) {
val lightTreeConverter = LightTree2Fir(false, myProject)
val lightTreeConverter = LightTree2Fir(myProject, stubMode = false)
val lightTree = lightTreeConverter.buildLightTree(text)
DebugUtil.lightTreeToString(lightTree, false)
}
override fun generateFir(text: String, file: File, stubMode: Boolean) {
val lightTreeConverter = LightTree2Fir(stubMode, myProject)
val lightTreeConverter = LightTree2Fir(myProject, stubMode)
val firFile = lightTreeConverter.buildFirFile(text, file.name)
StringBuilder().also { FirRenderer(it).visitFile(firFile) }.toString()
}
@@ -11,6 +11,7 @@ import com.intellij.testFramework.TestDataPath
import com.intellij.util.PathUtil
import junit.framework.TestCase
import org.jetbrains.kotlin.fir.FirRenderer
import org.jetbrains.kotlin.fir.FirSessionBase
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
import org.jetbrains.kotlin.fir.lightTree.LightTree2Fir
import org.jetbrains.kotlin.fir.lightTree.walkTopDown
@@ -43,7 +44,7 @@ class TreesCompareTest : AbstractRawFirBuilderTestCase() {
}
private fun compareAll(stubMode: Boolean) {
val lightTreeConverter = LightTree2Fir(stubMode, myProject)
val lightTreeConverter = LightTree2Fir(myProject, stubMode)
compareBase(System.getProperty("user.dir"), withTestData = false) { file ->
val text = FileUtil.loadFile(file, CharsetToolkit.UTF8, true).trim()
@@ -61,7 +62,7 @@ class TreesCompareTest : AbstractRawFirBuilderTestCase() {
}
fun testCompareDiagnostics() {
val lightTreeConverter = LightTree2Fir(false, myProject)
val lightTreeConverter = LightTree2Fir(myProject, stubMode = false)
compareBase("compiler/testData/diagnostics/tests", withTestData = true) { file ->
val notEditedText = FileUtil.loadFile(file, CharsetToolkit.UTF8, true).trim()
val text = notEditedText.replace("(<!>)|(<!.*?!>)".toRegex(), "").replaceAfter(".java", "")
@@ -128,7 +129,7 @@ class TreesCompareTest : AbstractRawFirBuilderTestCase() {
visitLambdaArgumentExpression = visitLambdaArgumentExpression,
visitAnonymousObject = visitAnonymousObject
)
val lightTreeConverter = LightTree2Fir(stubMode, myProject)
val lightTreeConverter = LightTree2Fir(myProject, stubMode)
compareBase(path, withTestData) { file ->
val text = FileUtil.loadFile(file, CharsetToolkit.UTF8, true).trim()