Modify previously added test
This commit is contained in:
committed by
Mikhail Glukhikh
parent
200fe63fca
commit
f0a5408eb6
@@ -6,15 +6,19 @@
|
|||||||
package org.jetbrains.kotlin.fir.lightTree
|
package org.jetbrains.kotlin.fir.lightTree
|
||||||
|
|
||||||
import com.intellij.lang.impl.PsiBuilderFactoryImpl
|
import com.intellij.lang.impl.PsiBuilderFactoryImpl
|
||||||
|
import com.intellij.openapi.util.io.FileUtil
|
||||||
|
import com.intellij.openapi.vfs.CharsetToolkit
|
||||||
import com.intellij.psi.PsiManager
|
import com.intellij.psi.PsiManager
|
||||||
import com.intellij.psi.impl.DebugUtil
|
import com.intellij.psi.impl.DebugUtil
|
||||||
import com.intellij.psi.impl.PsiManagerEx
|
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 com.intellij.util.PathUtil
|
||||||
|
import org.jetbrains.kotlin.KtNodeTypes
|
||||||
import org.jetbrains.kotlin.idea.KotlinFileType
|
import org.jetbrains.kotlin.idea.KotlinFileType
|
||||||
import org.jetbrains.kotlin.parsing.KotlinParser
|
import org.jetbrains.kotlin.parsing.*
|
||||||
import org.jetbrains.kotlin.parsing.KotlinParserDefinition
|
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
import org.jetbrains.kotlin.psi.KtPsiFactory
|
||||||
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners
|
import org.jetbrains.kotlin.test.JUnit3RunnerWithInners
|
||||||
import org.jetbrains.kotlin.test.testFramework.KtParsingTestCase
|
import org.jetbrains.kotlin.test.testFramework.KtParsingTestCase
|
||||||
import org.junit.runner.RunWith
|
import org.junit.runner.RunWith
|
||||||
@@ -27,19 +31,21 @@ import kotlin.system.measureNanoTime
|
|||||||
*/
|
*/
|
||||||
@TestDataPath("\$PROJECT_ROOT")
|
@TestDataPath("\$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners::class)
|
@RunWith(JUnit3RunnerWithInners::class)
|
||||||
class BaseTestCase: KtParsingTestCase(
|
class BaseTestCase : KtParsingTestCase(
|
||||||
"",
|
"",
|
||||||
"kt",
|
"kt",
|
||||||
KotlinParserDefinition()
|
KotlinParserDefinition()
|
||||||
) {
|
) {
|
||||||
fun test() {
|
fun test() {
|
||||||
val file = KtFile((PsiManager.getInstance(myProject) as PsiManagerEx).fileManager.createFileViewProvider(
|
val file = KtFile(
|
||||||
LightVirtualFile(
|
(PsiManager.getInstance(myProject) as PsiManagerEx).fileManager.createFileViewProvider(
|
||||||
"foo",
|
LightVirtualFile(
|
||||||
KotlinFileType.INSTANCE,
|
"foo",
|
||||||
""
|
KotlinFileType.INSTANCE,
|
||||||
), true
|
""
|
||||||
), false)
|
), true
|
||||||
|
), false
|
||||||
|
)
|
||||||
val parserDefinition = KotlinParserDefinition()
|
val parserDefinition = KotlinParserDefinition()
|
||||||
val lexer = parserDefinition.createLexer(myProject)
|
val lexer = parserDefinition.createLexer(myProject)
|
||||||
val builder = PsiBuilderFactoryImpl().createBuilder(parserDefinition, lexer, "class Base { val x: Int = 1 }")
|
val builder = PsiBuilderFactoryImpl().createBuilder(parserDefinition, lexer, "class Base { val x: Int = 1 }")
|
||||||
@@ -51,22 +57,14 @@ class BaseTestCase: KtParsingTestCase(
|
|||||||
println(DebugUtil.nodeTreeToString(builder.treeBuilt, false))
|
println(DebugUtil.nodeTreeToString(builder.treeBuilt, false))
|
||||||
}
|
}
|
||||||
|
|
||||||
fun testTotalKotlinWithGivenMode() {
|
fun testTotalKotlinLight() {
|
||||||
val path = System.getProperty("user.dir")
|
val path = System.getProperty("user.dir")
|
||||||
val root = File(path)
|
val root = File(path)
|
||||||
var counter = 0
|
var counter = 0
|
||||||
var time = 0L
|
var time = 0L
|
||||||
|
|
||||||
val ktFile = KtFile((PsiManager.getInstance(myProject) as PsiManagerEx).fileManager.createFileViewProvider(
|
|
||||||
LightVirtualFile(
|
|
||||||
"foo",
|
|
||||||
KotlinFileType.INSTANCE,
|
|
||||||
""
|
|
||||||
), true
|
|
||||||
), false)
|
|
||||||
val parserDefinition = KotlinParserDefinition()
|
val parserDefinition = KotlinParserDefinition()
|
||||||
val lexer = parserDefinition.createLexer(myProject)
|
val lexer = parserDefinition.createLexer(myProject)
|
||||||
val parser = parserDefinition.createParser(myProject) as KotlinParser
|
|
||||||
|
|
||||||
println("BASE PATH: $path")
|
println("BASE PATH: $path")
|
||||||
for (file in root.walkTopDown()) {
|
for (file in root.walkTopDown()) {
|
||||||
@@ -75,8 +73,9 @@ class BaseTestCase: KtParsingTestCase(
|
|||||||
if (file.extension != "kt") continue
|
if (file.extension != "kt") continue
|
||||||
|
|
||||||
time += measureNanoTime {
|
time += measureNanoTime {
|
||||||
val builder = PsiBuilderFactoryImpl().createBuilder(parserDefinition, lexer, file.readText())
|
val text = FileUtil.loadFile(file, CharsetToolkit.UTF8, true).trim()
|
||||||
parser.parse(null, builder, ktFile)
|
val builder = PsiBuilderFactoryImpl().createBuilder(parserDefinition, lexer, text)
|
||||||
|
MyKotlinParser.parse(builder)
|
||||||
|
|
||||||
DebugUtil.lightTreeToString(builder.lightTree, false)
|
DebugUtil.lightTreeToString(builder.lightTree, false)
|
||||||
}
|
}
|
||||||
@@ -87,5 +86,30 @@ class BaseTestCase: KtParsingTestCase(
|
|||||||
println("TIME PER FILE: ${(time / counter) * 1e-6} ms, COUNTER: $counter")
|
println("TIME PER FILE: ${(time / counter) * 1e-6} ms, COUNTER: $counter")
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun testTotalKotlinPsi() {
|
||||||
|
val path = System.getProperty("user.dir")
|
||||||
|
val root = File(path)
|
||||||
|
var counter = 0
|
||||||
|
var time = 0L
|
||||||
|
|
||||||
|
println("BASE PATH: $path")
|
||||||
|
for (file in root.walkTopDown()) {
|
||||||
|
if (file.isDirectory) continue
|
||||||
|
if (file.path.contains("testData") || file.path.contains("resources")) continue
|
||||||
|
if (file.extension != "kt") continue
|
||||||
|
|
||||||
|
time += measureNanoTime {
|
||||||
|
val text = FileUtil.loadFile(file, CharsetToolkit.UTF8, true).trim()
|
||||||
|
val ktFile = createPsiFile(FileUtil.getNameWithoutExtension(PathUtil.getFileName(file.path)), text) as KtFile
|
||||||
|
ktFile.toString()
|
||||||
|
}
|
||||||
|
|
||||||
|
counter++
|
||||||
|
}
|
||||||
|
println("SUCCESS!")
|
||||||
|
println("TIME PER FILE: ${(time / counter) * 1e-6} ms, COUNTER: $counter")
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
|
||||||
|
* that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.parsing;
|
||||||
|
|
||||||
|
import com.intellij.lang.LighterASTNode;
|
||||||
|
import com.intellij.lang.PsiBuilder;
|
||||||
|
import com.intellij.util.diff.FlyweightCapableTreeStructure;
|
||||||
|
|
||||||
|
public class MyKotlinParser {
|
||||||
|
public static FlyweightCapableTreeStructure<LighterASTNode> parse(PsiBuilder builder) {
|
||||||
|
KotlinParsing ktParsing = KotlinParsing.createForTopLevel(new SemanticWhitespaceAwarePsiBuilderImpl(builder));
|
||||||
|
ktParsing.parseFile();
|
||||||
|
|
||||||
|
return builder.getLightTree();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user