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 { plugins {
kotlin("jvm") kotlin("jvm")
id("org.jetbrains.intellij") version "0.4.5"
//git plugin //git plugin
id("org.ajoberstar.grgit") version "3.1.1" id("org.ajoberstar.grgit") version "3.1.1"
@@ -20,9 +19,7 @@ repositories {
} }
dependencies { dependencies {
compile("com.jetbrains.intellij.java:java-psi-impl:183.5912.17") compileOnly(intellijCoreDep()) { includeJars("intellij-core", "guava", rootProject = rootProject) }
compile("com.jetbrains.intellij.java:java-psi:183.5912.17")
compile(project(":compiler:psi")) compile(project(":compiler:psi"))
compile("junit", "junit", "4.4") compile("junit", "junit", "4.4")
@@ -95,7 +92,7 @@ val jmhExec by tasks.creating(JavaExec::class) {
main = "org.openjdk.jmh.Main" main = "org.openjdk.jmh.Main"
workingDir = rootDir workingDir = rootDir
systemProperty("idea.home.path", project.intellij.localPath) systemProperty("idea.home.path", project.intellijRootDir().absolutePath)
systemProperty("idea.max.intellisense.filesize", 5000 * 1024) systemProperty("idea.max.intellisense.filesize", 5000 * 1024)
configurations.plusAssign(project.configurations["compile"]) configurations.plusAssign(project.configurations["compile"])
} }
@@ -6,35 +6,27 @@
package org.jetbrains.kotlin.fir.lightTree package org.jetbrains.kotlin.fir.lightTree
import com.intellij.lang.LighterASTNode import com.intellij.lang.LighterASTNode
import com.intellij.lang.ParserDefinition
import com.intellij.lang.impl.PsiBuilderFactoryImpl import com.intellij.lang.impl.PsiBuilderFactoryImpl
import com.intellij.lexer.Lexer
import com.intellij.openapi.project.Project import com.intellij.openapi.project.Project
import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.util.io.FileUtil
import com.intellij.openapi.vfs.CharsetToolkit 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 com.intellij.util.diff.FlyweightCapableTreeStructure
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.FirSessionBase import org.jetbrains.kotlin.fir.FirSessionBase
import org.jetbrains.kotlin.fir.declarations.FirFile import org.jetbrains.kotlin.fir.declarations.FirFile
import org.jetbrains.kotlin.fir.lightTree.converter.DeclarationsConverter import org.jetbrains.kotlin.fir.lightTree.converter.DeclarationsConverter
import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.lexer.KotlinLexer import org.jetbrains.kotlin.lexer.KotlinLexer
import org.jetbrains.kotlin.parsing.KotlinParser
import org.jetbrains.kotlin.parsing.KotlinParserDefinition import org.jetbrains.kotlin.parsing.KotlinParserDefinition
import org.jetbrains.kotlin.parsing.MyKotlinParser import org.jetbrains.kotlin.parsing.MyKotlinParser
import org.jetbrains.kotlin.psi.KtFile
import java.io.File import java.io.File
import java.nio.file.Path import java.nio.file.Path
class LightTree2Fir( class LightTree2Fir(
private val project: Project,
private val stubMode: Boolean, 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 { companion object {
private val parserDefinition = KotlinParserDefinition() private val parserDefinition = KotlinParserDefinition()
@@ -74,7 +66,7 @@ class LightTree2Fir(
fun buildFirFile(code: String, fileName: String): FirFile { fun buildFirFile(code: String, fileName: String): FirFile {
val lightTree = buildLightTree(code) val lightTree = buildLightTree(code)
return DeclarationsConverter(object : FirSessionBase(null) {}, stubMode, lightTree) return DeclarationsConverter(session, stubMode, lightTree)
.convertFile(lightTree.root, fileName) .convertFile(lightTree.root, fileName)
} }
} }
@@ -8,9 +8,9 @@ package org.jetbrains.kotlin.fir.lightTree
import com.intellij.testFramework.TestDataPath import com.intellij.testFramework.TestDataPath
import junit.framework.TestCase import junit.framework.TestCase
import org.jetbrains.kotlin.fir.FirRenderer import org.jetbrains.kotlin.fir.FirRenderer
import org.jetbrains.kotlin.fir.FirSessionBase
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
import org.jetbrains.kotlin.fir.render import org.jetbrains.kotlin.fir.render
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners import org.jetbrains.kotlin.test.JUnit3RunnerWithInners
import org.junit.runner.RunWith import org.junit.runner.RunWith
import java.nio.file.Paths import java.nio.file.Paths
@@ -21,7 +21,7 @@ class LightTree2FirConverterTestCases : AbstractRawFirBuilderTestCase() {
private val testDirPath = "compiler/fir/psi2fir/testData/rawBuilder/declarations" private val testDirPath = "compiler/fir/psi2fir/testData/rawBuilder/declarations"
private fun executeTest(filePath: String) { 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 file = createKtFile(filePath)
val firFile = file.toFirFile(stubMode = true) val firFile = file.toFirFile(stubMode = true)
@@ -11,8 +11,8 @@ import com.intellij.psi.impl.DebugUtil
import com.intellij.testFramework.TestDataPath import com.intellij.testFramework.TestDataPath
import com.intellij.util.PathUtil import com.intellij.util.PathUtil
import org.jetbrains.kotlin.fir.FirRenderer import org.jetbrains.kotlin.fir.FirRenderer
import org.jetbrains.kotlin.fir.FirSessionBase
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
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 +47,7 @@ class TotalKotlinTest : AbstractRawFirBuilderTestCase() {
var counter = 0 var counter = 0
var time = 0L 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") if (onlyLightTree) println("LightTree generation") else println("Fir from LightTree converter")
println("BASE PATH: $path") println("BASE PATH: $path")
@@ -7,9 +7,9 @@ package org.jetbrains.kotlin.fir.lightTree.benchmark.generators
import com.intellij.psi.impl.DebugUtil import com.intellij.psi.impl.DebugUtil
import org.jetbrains.kotlin.fir.FirRenderer import org.jetbrains.kotlin.fir.FirRenderer
import org.jetbrains.kotlin.fir.FirSessionBase
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
import org.jetbrains.kotlin.fir.lightTree.LightTree2Fir import org.jetbrains.kotlin.fir.lightTree.LightTree2Fir
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
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 +17,13 @@ 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(false, myProject) val lightTreeConverter = LightTree2Fir(myProject, 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(stubMode, myProject) val lightTreeConverter = LightTree2Fir(myProject, 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()
} }
@@ -11,6 +11,7 @@ import com.intellij.testFramework.TestDataPath
import com.intellij.util.PathUtil import com.intellij.util.PathUtil
import junit.framework.TestCase import junit.framework.TestCase
import org.jetbrains.kotlin.fir.FirRenderer import org.jetbrains.kotlin.fir.FirRenderer
import org.jetbrains.kotlin.fir.FirSessionBase
import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase import org.jetbrains.kotlin.fir.builder.AbstractRawFirBuilderTestCase
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
@@ -43,7 +44,7 @@ class TreesCompareTest : AbstractRawFirBuilderTestCase() {
} }
private fun compareAll(stubMode: Boolean) { private fun compareAll(stubMode: Boolean) {
val lightTreeConverter = LightTree2Fir(stubMode, myProject) val lightTreeConverter = LightTree2Fir(myProject, 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()
@@ -61,7 +62,7 @@ class TreesCompareTest : AbstractRawFirBuilderTestCase() {
} }
fun testCompareDiagnostics() { fun testCompareDiagnostics() {
val lightTreeConverter = LightTree2Fir(false, myProject) val lightTreeConverter = LightTree2Fir(myProject, stubMode = false)
compareBase("compiler/testData/diagnostics/tests", withTestData = true) { file -> compareBase("compiler/testData/diagnostics/tests", withTestData = true) { file ->
val notEditedText = FileUtil.loadFile(file, CharsetToolkit.UTF8, true).trim() val notEditedText = FileUtil.loadFile(file, CharsetToolkit.UTF8, true).trim()
val text = notEditedText.replace("(<!>)|(<!.*?!>)".toRegex(), "").replaceAfter(".java", "") val text = notEditedText.replace("(<!>)|(<!.*?!>)".toRegex(), "").replaceAfter(".java", "")
@@ -128,7 +129,7 @@ class TreesCompareTest : AbstractRawFirBuilderTestCase() {
visitLambdaArgumentExpression = visitLambdaArgumentExpression, visitLambdaArgumentExpression = visitLambdaArgumentExpression,
visitAnonymousObject = visitAnonymousObject visitAnonymousObject = visitAnonymousObject
) )
val lightTreeConverter = LightTree2Fir(stubMode, myProject) val lightTreeConverter = LightTree2Fir(myProject, stubMode)
compareBase(path, withTestData) { file -> compareBase(path, withTestData) { file ->
val text = FileUtil.loadFile(file, CharsetToolkit.UTF8, true).trim() val text = FileUtil.loadFile(file, CharsetToolkit.UTF8, true).trim()