From ce21a5594374b9567f92b6e7a79f4d3f502f998c Mon Sep 17 00:00:00 2001 From: Yan Zhulanow Date: Tue, 26 Nov 2019 18:44:22 +0900 Subject: [PATCH] Debugger: Add IR-powered ranking tests --- .../backend/jvm/codegen/ClassCodegen.kt | 2 +- .../kotlin/generators/tests/GenerateTests.kt | 5 +- .../generators/tests/GenerateTests.kt.183 | 5 +- .../generators/tests/GenerateTests.kt.as34 | 5 +- .../generators/tests/GenerateTests.kt.as35 | 5 +- .../generators/tests/GenerateTests.kt.as36 | 5 +- .../test/AbstractIrFileRankingTest.kt | 12 +++ .../test/IrFileRankingTestGenerated.java | 91 +++++++++++++++++++ .../testData/fileRanking/lambdas.kt | 4 +- .../testData/fileRanking/propertyDelegates.kt | 4 +- 10 files changed, 130 insertions(+), 8 deletions(-) create mode 100644 idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/AbstractIrFileRankingTest.kt create mode 100644 idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/IrFileRankingTestGenerated.java diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt index c339ff1d0c3..dbeb527a23b 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/ClassCodegen.kt @@ -75,7 +75,7 @@ open class ClassCodegen protected constructor( val descriptor = WrappedClassDescriptor() descriptor.bind(irClass) return state.factory.newVisitor( - OtherOrigin(descriptor.psiElement, descriptor), + irClass.OtherOrigin, type, irClass.fileParent.loadSourceFilesInfo() ) diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt index 547af9a4ba9..d7014cb6bd4 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt @@ -58,7 +58,6 @@ import org.jetbrains.kotlin.idea.coverage.AbstractKotlinCoverageOutputFilesTest import org.jetbrains.kotlin.idea.debugger.evaluate.* import org.jetbrains.kotlin.idea.debugger.test.sequence.exec.AbstractSequenceTraceTestCase import org.jetbrains.kotlin.idea.debugger.test.* -import org.jetbrains.kotlin.idea.debugger.test.AbstractFileRankingTest import org.jetbrains.kotlin.idea.decompiler.navigation.AbstractNavigateToDecompiledLibraryTest import org.jetbrains.kotlin.idea.decompiler.navigation.AbstractNavigateToLibrarySourceTest import org.jetbrains.kotlin.idea.decompiler.navigation.AbstractNavigateToLibrarySourceTestWithJS @@ -221,6 +220,10 @@ fun main(args: Array) { model("fileRanking") } + testClass { + model("fileRanking", targetBackend = TargetBackend.JVM_IR) + } + testClass { model("asyncStackTrace") } diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.183 b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.183 index f998a0873c3..e31b4cddf16 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.183 +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.183 @@ -69,7 +69,6 @@ import org.jetbrains.kotlin.idea.coverage.AbstractKotlinCoverageOutputFilesTest import org.jetbrains.kotlin.idea.debugger.evaluate.* import org.jetbrains.kotlin.idea.debugger.test.sequence.exec.AbstractSequenceTraceTestCase import org.jetbrains.kotlin.idea.debugger.test.* -import org.jetbrains.kotlin.idea.debugger.test.AbstractFileRankingTest import org.jetbrains.kotlin.idea.decompiler.navigation.AbstractNavigateToDecompiledLibraryTest import org.jetbrains.kotlin.idea.decompiler.navigation.AbstractNavigateToLibrarySourceTest import org.jetbrains.kotlin.idea.decompiler.navigation.AbstractNavigateToLibrarySourceTestWithJS @@ -228,6 +227,10 @@ fun main(args: Array) { model("fileRanking") } + testClass { + model("fileRanking", targetBackend = TargetBackend.JVM_IR) + } + testClass { model("asyncStackTrace") } diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as34 b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as34 index 7d922ef244c..a1905718cbb 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as34 +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as34 @@ -66,7 +66,6 @@ import org.jetbrains.kotlin.idea.coverage.AbstractKotlinCoverageOutputFilesTest import org.jetbrains.kotlin.idea.debugger.evaluate.* import org.jetbrains.kotlin.idea.debugger.test.sequence.exec.AbstractSequenceTraceTestCase import org.jetbrains.kotlin.idea.debugger.test.* -import org.jetbrains.kotlin.idea.debugger.test.AbstractFileRankingTest import org.jetbrains.kotlin.idea.decompiler.navigation.AbstractNavigateToDecompiledLibraryTest import org.jetbrains.kotlin.idea.decompiler.navigation.AbstractNavigateToLibrarySourceTest import org.jetbrains.kotlin.idea.decompiler.navigation.AbstractNavigateToLibrarySourceTestWithJS @@ -218,6 +217,10 @@ fun main(args: Array) { model("fileRanking") } + testClass { + model("fileRanking", targetBackend = TargetBackend.JVM_IR) + } + testClass { model("asyncStackTrace") } diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as35 b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as35 index 7d922ef244c..a1905718cbb 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as35 +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as35 @@ -66,7 +66,6 @@ import org.jetbrains.kotlin.idea.coverage.AbstractKotlinCoverageOutputFilesTest import org.jetbrains.kotlin.idea.debugger.evaluate.* import org.jetbrains.kotlin.idea.debugger.test.sequence.exec.AbstractSequenceTraceTestCase import org.jetbrains.kotlin.idea.debugger.test.* -import org.jetbrains.kotlin.idea.debugger.test.AbstractFileRankingTest import org.jetbrains.kotlin.idea.decompiler.navigation.AbstractNavigateToDecompiledLibraryTest import org.jetbrains.kotlin.idea.decompiler.navigation.AbstractNavigateToLibrarySourceTest import org.jetbrains.kotlin.idea.decompiler.navigation.AbstractNavigateToLibrarySourceTestWithJS @@ -218,6 +217,10 @@ fun main(args: Array) { model("fileRanking") } + testClass { + model("fileRanking", targetBackend = TargetBackend.JVM_IR) + } + testClass { model("asyncStackTrace") } diff --git a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as36 b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as36 index 7d922ef244c..a1905718cbb 100644 --- a/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as36 +++ b/generators/tests/org/jetbrains/kotlin/generators/tests/GenerateTests.kt.as36 @@ -66,7 +66,6 @@ import org.jetbrains.kotlin.idea.coverage.AbstractKotlinCoverageOutputFilesTest import org.jetbrains.kotlin.idea.debugger.evaluate.* import org.jetbrains.kotlin.idea.debugger.test.sequence.exec.AbstractSequenceTraceTestCase import org.jetbrains.kotlin.idea.debugger.test.* -import org.jetbrains.kotlin.idea.debugger.test.AbstractFileRankingTest import org.jetbrains.kotlin.idea.decompiler.navigation.AbstractNavigateToDecompiledLibraryTest import org.jetbrains.kotlin.idea.decompiler.navigation.AbstractNavigateToLibrarySourceTest import org.jetbrains.kotlin.idea.decompiler.navigation.AbstractNavigateToLibrarySourceTestWithJS @@ -218,6 +217,10 @@ fun main(args: Array) { model("fileRanking") } + testClass { + model("fileRanking", targetBackend = TargetBackend.JVM_IR) + } + testClass { model("asyncStackTrace") } diff --git a/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/AbstractIrFileRankingTest.kt b/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/AbstractIrFileRankingTest.kt new file mode 100644 index 00000000000..62935e2f170 --- /dev/null +++ b/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/AbstractIrFileRankingTest.kt @@ -0,0 +1,12 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.idea.debugger.test + +import org.jetbrains.kotlin.test.TargetBackend + +abstract class AbstractIrFileRankingTest : AbstractFileRankingTest() { + override fun getBackend() = TargetBackend.JVM_IR +} \ No newline at end of file diff --git a/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/IrFileRankingTestGenerated.java b/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/IrFileRankingTestGenerated.java new file mode 100644 index 00000000000..560d3648d15 --- /dev/null +++ b/idea/jvm-debugger/jvm-debugger-test/test/org/jetbrains/kotlin/idea/debugger/test/IrFileRankingTestGenerated.java @@ -0,0 +1,91 @@ +/* + * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * 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.idea.debugger.test; + +import com.intellij.testFramework.TestDataPath; +import org.jetbrains.kotlin.test.JUnit3RunnerWithInners; +import org.jetbrains.kotlin.test.KotlinTestUtils; +import org.jetbrains.kotlin.test.TargetBackend; +import org.jetbrains.kotlin.test.TestMetadata; +import org.junit.runner.RunWith; + +import java.io.File; +import java.util.regex.Pattern; + +/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.TestsPackage}. DO NOT MODIFY MANUALLY */ +@SuppressWarnings("all") +@TestMetadata("idea/jvm-debugger/jvm-debugger-test/testData/fileRanking") +@TestDataPath("$PROJECT_ROOT") +@RunWith(JUnit3RunnerWithInners.class) +public class IrFileRankingTestGenerated extends AbstractIrFileRankingTest { + private void runTest(String testDataFilePath) throws Exception { + KotlinTestUtils.runTest(this::doTest, TargetBackend.JVM_IR, testDataFilePath); + } + + public void testAllFilesPresentInFileRanking() throws Exception { + KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/jvm-debugger/jvm-debugger-test/testData/fileRanking"), Pattern.compile("^(.+)\\.kt$"), TargetBackend.JVM_IR, true); + } + + @TestMetadata("anonymousClasses.kt") + public void testAnonymousClasses() throws Exception { + runTest("idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/anonymousClasses.kt"); + } + + @TestMetadata("differentFlags.kt") + public void testDifferentFlags() throws Exception { + runTest("idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/differentFlags.kt"); + } + + @TestMetadata("init.kt") + public void testInit() throws Exception { + runTest("idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/init.kt"); + } + + @TestMetadata("lambdas.kt") + public void testLambdas() throws Exception { + runTest("idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/lambdas.kt"); + } + + @TestMetadata("multilinePrimaryConstructor.kt") + public void testMultilinePrimaryConstructor() throws Exception { + runTest("idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/multilinePrimaryConstructor.kt"); + } + + @TestMetadata("multilinePrimaryConstructorWithBody.kt") + public void testMultilinePrimaryConstructorWithBody() throws Exception { + runTest("idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/multilinePrimaryConstructorWithBody.kt"); + } + + @TestMetadata("parametersWithUnloadedClass.kt") + public void testParametersWithUnloadedClass() throws Exception { + runTest("idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/parametersWithUnloadedClass.kt"); + } + + @TestMetadata("propertyDelegates.kt") + public void testPropertyDelegates() throws Exception { + runTest("idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/propertyDelegates.kt"); + } + + @TestMetadata("sameClassName.kt") + public void testSameClassName() throws Exception { + runTest("idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/sameClassName.kt"); + } + + @TestMetadata("sameClassNameDifferentMethodNames.kt") + public void testSameClassNameDifferentMethodNames() throws Exception { + runTest("idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/sameClassNameDifferentMethodNames.kt"); + } + + @TestMetadata("simple.kt") + public void testSimple() throws Exception { + runTest("idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/simple.kt"); + } + + @TestMetadata("topLevel.kt") + public void testTopLevel() throws Exception { + runTest("idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/topLevel.kt"); + } +} diff --git a/idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/lambdas.kt b/idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/lambdas.kt index e49a637fe3a..af610ef77d4 100644 --- a/idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/lambdas.kt +++ b/idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/lambdas.kt @@ -33,4 +33,6 @@ class A { block { block { val x = 4 }} } } -} \ No newline at end of file +} + +// IGNORE_BACKEND: JVM_IR \ No newline at end of file diff --git a/idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/propertyDelegates.kt b/idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/propertyDelegates.kt index 6d60b7ceb61..86037e9c931 100644 --- a/idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/propertyDelegates.kt +++ b/idea/jvm-debugger/jvm-debugger-test/testData/fileRanking/propertyDelegates.kt @@ -18,4 +18,6 @@ class B { val a by lazy { val b = 0 } -} \ No newline at end of file +} + +// IGNORE_BACKEND: JVM_IR \ No newline at end of file