diff --git a/compiler/testData/codegen/boxInline/smap/anonymous/lambda.kt b/compiler/testData/codegen/boxInline/smap/anonymous/lambda.kt index f50c96357fd..ce7fb1f98ad 100644 --- a/compiler/testData/codegen/boxInline/smap/anonymous/lambda.kt +++ b/compiler/testData/codegen/boxInline/smap/anonymous/lambda.kt @@ -8,22 +8,11 @@ inline fun call(crossinline init: () -> Unit) { }() } -//SMAP -//lambda.2.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 lambda.2.kt -//builders/Lambda_2Kt$call$1 -//*L -//1#1,18:1 -//*E - // FILE: 2.kt import builders.* - +//NO_CHECK_LAMBDA_INLINING fun test(): String { var res = "Fail" @@ -38,32 +27,46 @@ fun test(): String { fun box(): String { return test() } -//NO_CHECK_LAMBDA_INLINING -//SMAP -//lambda.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 lambda.1.kt -//Lambda_1Kt -//+ 2 lambda.2.kt -//builders/Lambda_2Kt -//*L -//1#1,46:1 -//4#2:47 -//*E -// -//SMAP -//lambda.2.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 lambda.2.kt -//builders/Lambda_2Kt$call$1 -//+ 2 lambda.1.kt -//Lambda_1Kt -//*L -//1#1,18:1 -//8#2,2:19 -//*E +// FILE: 1.smap + +SMAP +1.kt +Kotlin +*S Kotlin +*F ++ 1 1.kt +builders/_1Kt$call$1 +*L +1#1,11:1 +*E + +// FILE: 2.smap + +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt ++ 2 1.kt +builders/_1Kt +*L +1#1,21:1 +6#2:22 +*E + +SMAP +1.kt +Kotlin +*S Kotlin +*F ++ 1 1.kt +builders/_1Kt$call$1 ++ 2 2.kt +_2Kt +*L +1#1,11:1 +10#2,2:12 +*E diff --git a/compiler/testData/codegen/boxInline/smap/anonymous/lambdaOnCallSite.kt b/compiler/testData/codegen/boxInline/smap/anonymous/lambdaOnCallSite.kt index f9572bc35f1..0b6389d0b57 100644 --- a/compiler/testData/codegen/boxInline/smap/anonymous/lambdaOnCallSite.kt +++ b/compiler/testData/codegen/boxInline/smap/anonymous/lambdaOnCallSite.kt @@ -6,7 +6,6 @@ inline fun call(crossinline init: () -> Unit) { return init() } //NO_CHECK_LAMBDA_INLINING -//SMAP ABSENT // FILE: 2.kt @@ -30,17 +29,20 @@ fun box(): String { return test() } +// FILE: 1.smap -//SMAP -//lambdaOnCallSite.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 lambdaOnCallSite.1.kt -//LambdaOnCallSite_1Kt -//+ 2 lambdaOnCallSite.2.kt -//builders/LambdaOnCallSite_2Kt -//*L -//1#1,34:1 -//4#2:35 -//*E +// FILE: 2.smap + +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt ++ 2 1.kt +builders/_1Kt +*L +1#1,23:1 +6#2:24 +*E diff --git a/compiler/testData/codegen/boxInline/smap/anonymous/lambdaOnInlineCallSite.kt b/compiler/testData/codegen/boxInline/smap/anonymous/lambdaOnInlineCallSite.kt index f77e688f7da..226de2f413f 100644 --- a/compiler/testData/codegen/boxInline/smap/anonymous/lambdaOnInlineCallSite.kt +++ b/compiler/testData/codegen/boxInline/smap/anonymous/lambdaOnInlineCallSite.kt @@ -6,8 +6,6 @@ inline fun call(crossinline init: () -> Unit) { return init() } -//SMAP ABSENT - // FILE: 2.kt import builders.* @@ -30,39 +28,44 @@ fun box(): String { return test() } //NO_CHECK_LAMBDA_INLINING + +// FILE: 1.smap + +// FILE: 2.smap + //TODO SHOULD BE LESS -//SMAP -//lambdaOnInlineCallSite.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 lambdaOnInlineCallSite.1.kt -//LambdaOnInlineCallSite_1Kt -//+ 2 lambdaOnInlineCallSite.2.kt -//builders/LambdaOnInlineCallSite_2Kt -//*L -//1#1,56:1 -//4#2:57 -//*E -// -//SMAP -//lambdaOnInlineCallSite.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 lambdaOnInlineCallSite.1.kt -//LambdaOnInlineCallSite_1Kt$test$1$1 -//*L -//1#1,56:1 -//*E -// -//SMAP -//lambdaOnInlineCallSite.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 lambdaOnInlineCallSite.1.kt -//LambdaOnInlineCallSite_1Kt$test$1$1 -//*L -//1#1,56:1 -//*E +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt ++ 2 1.kt +builders/_1Kt +*L +1#1,24:1 +6#2:25 +*E + +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt$test$1$1 +*L +1#1,24:1 +*E + +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt$test$1$1 +*L +1#1,24:1 +*E diff --git a/compiler/testData/codegen/boxInline/smap/anonymous/object.kt b/compiler/testData/codegen/boxInline/smap/anonymous/object.kt index a93a8fe2f42..11e77afbd95 100644 --- a/compiler/testData/codegen/boxInline/smap/anonymous/object.kt +++ b/compiler/testData/codegen/boxInline/smap/anonymous/object.kt @@ -10,18 +10,6 @@ inline fun call(crossinline init: () -> Unit) { }.run() } - -//SMAP -//object.2.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 object.2.kt -//builders/Object_2Kt$call$1 -//*L -//1#1,21:1 -//*E - // FILE: 2.kt import builders.* @@ -42,30 +30,46 @@ fun box(): String { return test() } //NO_CHECK_LAMBDA_INLINING -//SMAP -//object.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 object.1.kt -//Object_1Kt -//+ 2 object.2.kt -//builders/Object_2Kt -//*L -//1#1,45:1 -//4#2,5:46 -//*E -// -//SMAP -//object.2.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 object.2.kt -//builders/Object_2Kt$call$1 -//+ 2 object.1.kt -//Object_1Kt -//*L -//1#1,21:1 -//8#2,2:22 -//*E + +// FILE: 1.smap + +SMAP +1.kt +Kotlin +*S Kotlin +*F ++ 1 1.kt +builders/_1Kt$call$1 +*L +1#1,13:1 +*E + +// FILE: 2.smap + +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt ++ 2 1.kt +builders/_1Kt +*L +1#1,22:1 +6#2,5:23 +*E + +SMAP +1.kt +Kotlin +*S Kotlin +*F ++ 1 1.kt +builders/_1Kt$call$1 ++ 2 2.kt +_2Kt +*L +1#1,13:1 +10#2,2:14 +*E diff --git a/compiler/testData/codegen/boxInline/smap/anonymous/objectOnCallSite.kt b/compiler/testData/codegen/boxInline/smap/anonymous/objectOnCallSite.kt index fa441235977..d5faa361a9b 100644 --- a/compiler/testData/codegen/boxInline/smap/anonymous/objectOnCallSite.kt +++ b/compiler/testData/codegen/boxInline/smap/anonymous/objectOnCallSite.kt @@ -6,8 +6,6 @@ inline fun call(crossinline init: () -> Unit) { return init() } -//SMAP ABSENT - // FILE: 2.kt import builders.* @@ -33,16 +31,21 @@ fun box(): String { } //NO_CHECK_LAMBDA_INLINING +// FILE: 1.smap + +// FILE: 2.smap + //SMAP -//objectOnCallSite.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 objectOnCallSite.1.kt -//ObjectOnCallSite_1Kt -//+ 2 objectOnCallSite.2.kt -//builders/ObjectOnCallSite_2Kt -//*L -//1#1,36:1 -//4#2:37 -//*E +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt ++ 2 1.kt +builders/_1Kt +*L +1#1,26:1 +6#2:27 +*E diff --git a/compiler/testData/codegen/boxInline/smap/anonymous/objectOnInlineCallSite.kt b/compiler/testData/codegen/boxInline/smap/anonymous/objectOnInlineCallSite.kt index a4f558c93de..7b663abaa68 100644 --- a/compiler/testData/codegen/boxInline/smap/anonymous/objectOnInlineCallSite.kt +++ b/compiler/testData/codegen/boxInline/smap/anonymous/objectOnInlineCallSite.kt @@ -6,8 +6,6 @@ inline fun call(crossinline init: () -> Unit) { return init() } -//SMAP ABSENT - // FILE: 2.kt import builders.* @@ -32,39 +30,44 @@ fun box(): String { return test() } //NO_CHECK_LAMBDA_INLINING + +// FILE: 1.smap + +// FILE: 2.smap + //TODO SHOULD BE LESS -//SMAP -//objectOnInlineCallSite.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 objectOnInlineCallSite.1.kt -//ObjectOnInlineCallSite_1Kt -//+ 2 objectOnInlineCallSite.2.kt -//builders/ObjectOnInlineCallSite_2Kt -//*L -//1#1,58:1 -//4#2:59 -//*E -// -//SMAP -//objectOnInlineCallSite.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 objectOnInlineCallSite.1.kt -//ObjectOnInlineCallSite_1Kt$test$1$1 -//*L -//1#1,58:1 -//*E -// -//SMAP -//objectOnInlineCallSite.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 objectOnInlineCallSite.1.kt -//ObjectOnInlineCallSite_1Kt$test$1$1 -//*L -//1#1,58:1 -//*E +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt ++ 2 1.kt +builders/_1Kt +*L +1#1,26:1 +6#2:27 +*E + +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt$test$1$1 +*L +1#1,26:1 +*E + +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt$test$1$1 +*L +1#1,26:1 +*E diff --git a/compiler/testData/codegen/boxInline/smap/anonymous/objectOnInlineCallSite2.kt b/compiler/testData/codegen/boxInline/smap/anonymous/objectOnInlineCallSite2.kt index 3908f172187..5e91d05e299 100644 --- a/compiler/testData/codegen/boxInline/smap/anonymous/objectOnInlineCallSite2.kt +++ b/compiler/testData/codegen/boxInline/smap/anonymous/objectOnInlineCallSite2.kt @@ -19,29 +19,6 @@ inline fun test(): String { return res } -//TODO SHOULD BE LESS - -//SXMAP -//objectOnInlineCallSite2.2.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 objectOnInlineCallSite2.2.kt -//builders/BuildersPackage -//*L -//1#1,42:1 -//*E -// -//SXMAP -//objectOnInlineCallSite2.2.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 objectOnInlineCallSite2.2.kt -//builders/BuildersPackage$objectOnInlineCallSite2_2$HASH$test$1$1 -//*L -//1#1,42:1 -//*E // FILE: 2.kt @@ -53,27 +30,55 @@ fun box(): String { } //NO_CHECK_LAMBDA_INLINING -//SXMAP -//objectOnInlineCallSite2.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 objectOnInlineCallSite2.1.kt -//_DefaultPackage -//+ 2 objectOnInlineCallSite2.2.kt -//builders/BuildersPackage -//*L -//1#1,32:1 -//8#2,11:33 -//*E -// -//SXMAP -//objectOnInlineCallSite2.2.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 objectOnInlineCallSite2.2.kt -//builders/BuildersPackage$objectOnInlineCallSite2_2$HASH$test$1$1 -//*L -//1#1,42:1 -//*E +// FILE: 1.sxmap + +//TODO SHOULD BE LESS + +SXMAP +objectOnInlineCallSite2.2.kt +Kotlin +*S Kotlin +*F ++ 1 objectOnInlineCallSite2.2.kt +builders/BuildersPackage +*L +1#1,42:1 +*E + +SXMAP +objectOnInlineCallSite2.2.kt +Kotlin +*S Kotlin +*F ++ 1 objectOnInlineCallSite2.2.kt +builders/BuildersPackage$objectOnInlineCallSite2_2$HASH$test$1$1 +*L +1#1,42:1 +*E + +// FILE: 2.sxmap + +SXMAP +objectOnInlineCallSite2.1.kt +Kotlin +*S Kotlin +*F ++ 1 objectOnInlineCallSite2.1.kt +_DefaultPackage ++ 2 objectOnInlineCallSite2.2.kt +builders/BuildersPackage +*L +1#1,32:1 +8#2,11:33 +*E + +SXMAP +objectOnInlineCallSite2.2.kt +Kotlin +*S Kotlin +*F ++ 1 objectOnInlineCallSite2.2.kt +builders/BuildersPackage$objectOnInlineCallSite2_2$HASH$test$1$1 +*L +1#1,42:1 +*E diff --git a/compiler/testData/codegen/boxInline/smap/assertion.kt b/compiler/testData/codegen/boxInline/smap/assertion.kt index 4f0053ead18..a9b1191f366 100644 --- a/compiler/testData/codegen/boxInline/smap/assertion.kt +++ b/compiler/testData/codegen/boxInline/smap/assertion.kt @@ -22,8 +22,6 @@ public inline fun massert(value: Boolean, message: Any = "Assertion failed") { } } -//SMAP ABSENT - // FILE: 2.kt import test.* @@ -37,17 +35,21 @@ fun box(): String { return "OK" } -//SMAP -//assertion.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 assertion.1.kt -//Assertion_1Kt -//+ 2 assertion.2.kt -//test/Assertion_2Kt -//*L -//1#1,25:1 -//15#2,7:26 -//6#2,7:33 -//*E +// FILE: 1.smap + +// FILE: 2.smap + +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt ++ 2 1.kt +test/_1Kt +*L +1#1,14:1 +17#2,7:15 +8#2,7:22 +*E diff --git a/compiler/testData/codegen/boxInline/smap/classFromDefaultPackage.kt b/compiler/testData/codegen/boxInline/smap/classFromDefaultPackage.kt index 2e8df6318e0..3a87adb76cd 100644 --- a/compiler/testData/codegen/boxInline/smap/classFromDefaultPackage.kt +++ b/compiler/testData/codegen/boxInline/smap/classFromDefaultPackage.kt @@ -12,16 +12,18 @@ fun box(): String { return "OK" } -//SMAP -//classFromDefaultPackage.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 classFromDefaultPackage.1.kt -//ClassFromDefaultPackage_1Kt -//+ 2 classFromDefaultPackage.2.kt -//A -//*L -//1#1,20:1 -//2#2:21 -//*E +// FILE: 2.smap + +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt ++ 2 1.kt +A +*L +1#1,9:1 +4#2:10 +*E diff --git a/compiler/testData/codegen/boxInline/smap/inlineOnly/noSmap.kt b/compiler/testData/codegen/boxInline/smap/inlineOnly/noSmap.kt index 8342e7ebaef..142be4ab1c9 100644 --- a/compiler/testData/codegen/boxInline/smap/inlineOnly/noSmap.kt +++ b/compiler/testData/codegen/boxInline/smap/inlineOnly/noSmap.kt @@ -11,13 +11,15 @@ fun box(): String { return "KO".reversed() } -//SMAP -//noSmap.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 noSmap.1.kt -//NoSmap_1Kt -//*L -//1#1,14:1 -//*E +// FILE: 2.smap + +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt +*L +1#1,7:1 +*E diff --git a/compiler/testData/codegen/boxInline/smap/inlineOnly/reified.kt b/compiler/testData/codegen/boxInline/smap/inlineOnly/reified.kt index b61b1bdc77b..c9fca44a996 100644 --- a/compiler/testData/codegen/boxInline/smap/inlineOnly/reified.kt +++ b/compiler/testData/codegen/boxInline/smap/inlineOnly/reified.kt @@ -15,16 +15,18 @@ fun box(): String { return "OK" } -//SMAP -//reified.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 reified.1.kt -//Reified_1Kt -//+ 2 reified.2.kt -//test/Reified_2Kt -//*L -//1#1,22:1 -//3#2:23 -//*E +// FILE: 2.smap + +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt ++ 2 1.kt +test/_1Kt +*L +1#1,12:1 +5#2:13 +*E diff --git a/compiler/testData/codegen/boxInline/smap/oneFile.kt b/compiler/testData/codegen/boxInline/smap/oneFile.kt index 43e125b1681..a894217a0b2 100644 --- a/compiler/testData/codegen/boxInline/smap/oneFile.kt +++ b/compiler/testData/codegen/boxInline/smap/oneFile.kt @@ -4,8 +4,6 @@ package zzz inline fun nothing() {} -//SMAP ABSENT - // FILE: 2.kt fun box(): String { @@ -19,14 +17,19 @@ inline fun test(p: () -> String): String { pd = "O" return pd + p() } + +// FILE: 1.smap + +// FILE: 2.smap + //TODO should be empty -//SMAP -//oneFile.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 oneFile.1.kt -//OneFile_1Kt -//*L -//1#1,22:1 -//*E +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt +*L +1#1,15:1 +*E diff --git a/compiler/testData/codegen/boxInline/smap/resolve/inlineComponent.kt b/compiler/testData/codegen/boxInline/smap/resolve/inlineComponent.kt index 5d9b698b707..60d3c782b38 100644 --- a/compiler/testData/codegen/boxInline/smap/resolve/inlineComponent.kt +++ b/compiler/testData/codegen/boxInline/smap/resolve/inlineComponent.kt @@ -8,8 +8,6 @@ operator inline fun A.component1() = a operator inline fun A.component2() = b -//SMAP ABSENT - // FILE: 2.kt import zzz.* @@ -20,16 +18,20 @@ fun box(): String { return if (p == 1 && l == 11) "OK" else "fail: $p" } -//SMAP -//inlineComponent.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 inlineComponent.1.kt -//InlineComponent_1Kt -//+ 2 inlineComponent.2.kt -//zzz/InlineComponent_2Kt -//*L -//1#1,21:1 -//5#2,3:22 -//*E +// FILE: 1.smap + +// FILE: 2.smap + +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt ++ 2 1.kt +zzz/_1Kt +*L +1#1,11:1 +7#2,3:12 +*E diff --git a/compiler/testData/codegen/boxInline/smap/resolve/inlineIterator.kt b/compiler/testData/codegen/boxInline/smap/resolve/inlineIterator.kt index 4454915ce19..571816ffc22 100644 --- a/compiler/testData/codegen/boxInline/smap/resolve/inlineIterator.kt +++ b/compiler/testData/codegen/boxInline/smap/resolve/inlineIterator.kt @@ -6,8 +6,6 @@ public class A(val p: Int) operator inline fun A.iterator() = (1..p).iterator() -//SMAP ABSENT - // FILE: 2.kt import zzz.* @@ -21,16 +19,20 @@ fun box(): String { return if (p == 15) "OK" else "fail: $p" } -//SMAP -//inlineIterator.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 inlineIterator.1.kt -//InlineIterator_1Kt -//+ 2 inlineIterator.2.kt -//zzz/InlineIterator_2Kt -//*L -//1#1,24:1 -//5#2:25 -//*E +// FILE: 1.smap + +// FILE: 2.smap + +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt ++ 2 1.kt +zzz/_1Kt +*L +1#1,14:1 +7#2:15 +*E diff --git a/compiler/testData/codegen/boxInline/smap/smap.kt b/compiler/testData/codegen/boxInline/smap/smap.kt index c9fe719c601..42886a398fc 100644 --- a/compiler/testData/codegen/boxInline/smap/smap.kt +++ b/compiler/testData/codegen/boxInline/smap/smap.kt @@ -17,17 +17,6 @@ inline fun head(init: () -> Unit) {val p = initTag2(init); return p} inline fun html(init: () -> Unit) { return init(init) } -//TODO SHOULD BE EMPTY -//SMAP -//smap.2.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 smap.2.kt -//builders/Smap_2Kt -//*L -//1#1,28:1 -//*E // FILE: 2.kt @@ -53,19 +42,35 @@ fun box(): String { return expected } -//SMAP -//smap.1.kt -//Kotlin -//*S Kotlin -//*F -//+ 1 smap.1.kt -//Smap_1Kt -//+ 2 smap.2.kt -//builders/Smap_2Kt -//*L -//1#1,38:1 -//16#2:39 -//4#2,9:40 -//8#2,3:49 -//5#2:52 -//*E +// FILE: 1.smap + +//TODO SHOULD BE EMPTY +SMAP +1.kt +Kotlin +*S Kotlin +*F ++ 1 1.kt +builders/_1Kt +*L +1#1,21:1 +*E + +// FILE: 2.smap + +SMAP +2.kt +Kotlin +*S Kotlin +*F ++ 1 2.kt +_2Kt ++ 2 1.kt +builders/_1Kt +*L +1#1,25:1 +18#2:26 +6#2,9:27 +10#2,3:36 +7#2:39 +*E diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/generated/AbstractBlackBoxCodegenTest.java b/compiler/tests/org/jetbrains/kotlin/codegen/generated/AbstractBlackBoxCodegenTest.java index 0f03e5d34a4..c48ac4239f0 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/generated/AbstractBlackBoxCodegenTest.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/generated/AbstractBlackBoxCodegenTest.java @@ -101,7 +101,9 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase { List ktFiles = new ArrayList(files.size()); for (TestFile file : files) { - ktFiles.add(KotlinTestUtils.createFile(file.name, file.content, myEnvironment.getProject())); + if (file.name.endsWith(".kt")) { + ktFiles.add(KotlinTestUtils.createFile(file.name, file.content, myEnvironment.getProject())); + } } myFiles = CodegenTestFiles.create(ktFiles); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/generated/AbstractBlackBoxInlineCodegenTest.kt b/compiler/tests/org/jetbrains/kotlin/codegen/generated/AbstractBlackBoxInlineCodegenTest.kt index 0ff9faee53a..7a451519e02 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/generated/AbstractBlackBoxInlineCodegenTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/codegen/generated/AbstractBlackBoxInlineCodegenTest.kt @@ -34,7 +34,7 @@ abstract class AbstractBlackBoxInlineCodegenTest : AbstractBlackBoxCodegenTest() try { InlineTestUtil.checkNoCallsToInline(initializedClassLoader.allGeneratedFiles.filterClassFiles(), myFiles.psiFiles) - checkSMAP(myFiles.psiFiles, generateClassesInFile().getClassFiles()) + checkSMAP(files, generateClassesInFile().getClassFiles()) } catch (e: Throwable) { System.out.println(generateToText()) diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractCompileKotlinAgainstInlineKotlinTest.kt b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractCompileKotlinAgainstInlineKotlinTest.kt index 9efd4a5b141..64661294f43 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractCompileKotlinAgainstInlineKotlinTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractCompileKotlinAgainstInlineKotlinTest.kt @@ -27,13 +27,13 @@ abstract class AbstractCompileKotlinAgainstInlineKotlinTest : AbstractCompileKot override fun doMultiFileTest( file: File, modules: Map.ModuleAndDependencies>, files: List ) { - assert(files.size == 2) { "There should be exactly two files in this test" } + val kotlinFiles = files.filter { it.name.endsWith(".kt") } + assert(kotlinFiles.size == 2) { "There should be exactly two files in this test" } var factory1: ClassFileFactory? = null var factory2: ClassFileFactory? = null try { - val fileA = files[0] - val fileB = files[1] + val (fileA, fileB) = kotlinFiles factory1 = compileA(fileA.name, fileA.content) factory2 = compileB(fileB.name, fileB.content) invokeBox(PackagePartClassUtils.getFilePartShortName(File(fileB.name).name)) @@ -42,7 +42,7 @@ abstract class AbstractCompileKotlinAgainstInlineKotlinTest : AbstractCompileKot val sourceFiles = factory1.inputFiles + factory2.inputFiles InlineTestUtil.checkNoCallsToInline(allGeneratedFiles.filterClassFiles(), sourceFiles) - checkSMAP(sourceFiles, allGeneratedFiles.filterClassFiles()) + checkSMAP(files, allGeneratedFiles.filterClassFiles()) } catch (e: Throwable) { var result = "" diff --git a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractSMAPBaseTest.kt b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractSMAPBaseTest.kt index 03dcf1ad823..5bc353a97da 100644 --- a/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractSMAPBaseTest.kt +++ b/compiler/tests/org/jetbrains/kotlin/jvm/compiler/AbstractSMAPBaseTest.kt @@ -17,18 +17,18 @@ package org.jetbrains.kotlin.jvm.compiler import com.intellij.openapi.util.io.FileUtil +import com.intellij.openapi.util.text.StringUtil import org.jetbrains.kotlin.backend.common.output.OutputFile +import org.jetbrains.kotlin.codegen.CodegenTestCase import org.jetbrains.kotlin.codegen.inline.InlineCodegenUtil -import org.jetbrains.kotlin.psi.KtFile -import org.jetbrains.kotlin.test.InTextDirectivesUtils import org.jetbrains.org.objectweb.asm.ClassReader import org.jetbrains.org.objectweb.asm.ClassVisitor import org.jetbrains.org.objectweb.asm.Opcodes import org.junit.Assert import java.io.File +import java.io.StringReader interface AbstractSMAPBaseTest { - private fun extractSMAPFromClasses(outputFiles: Iterable): List { return outputFiles.mapNotNull { outputFile -> var debugInfo: String? = null @@ -42,52 +42,43 @@ interface AbstractSMAPBaseTest { } } - private fun extractSmapFromSource(file: KtFile): SMAPAndFile? { - val fileContent = file.text - val smapPrefix = "//SMAP" - if (InTextDirectivesUtils.isDirectiveDefined(fileContent, smapPrefix)) { - InTextDirectivesUtils.findLinesWithPrefixesRemoved(fileContent, smapPrefix) - var smapData = fileContent.substring(fileContent.indexOf(smapPrefix)) - smapData = smapData.replace("//", "").trim() + private fun extractSmapFromTestDataFile(file: CodegenTestCase.TestFile): SMAPAndFile? { + if (!file.name.endsWith(".smap")) return null - return SMAPAndFile(if (smapData.startsWith("SMAP ABSENT")) null else smapData, - SMAPAndFile.getPath(file.virtualFile.canonicalPath!!)) - } - return null; + val content = buildString { + StringReader(file.content).forEachLine { line -> + // Strip comments + if (!line.startsWith("//")) { + appendln(line.trim()) + } + } + }.trim() + + return SMAPAndFile(if (content.isNotEmpty()) content else null, SMAPAndFile.getPath(file.name)) } - fun checkSMAP(inputFiles: List, outputFiles: Iterable) { - if (!InlineCodegenUtil.GENERATE_SMAP) { - return - } + fun checkSMAP(inputFiles: List, outputFiles: Iterable) { + if (!InlineCodegenUtil.GENERATE_SMAP) return - val sourceData = inputFiles.mapNotNull { extractSmapFromSource(it) } + val sourceData = inputFiles.mapNotNull { extractSmapFromTestDataFile(it) } val compiledData = extractSMAPFromClasses(outputFiles).groupBy { it.sourceFile }.map { - val smap = it.value.mapNotNull { it.smap?.replaceHash() }.joinToString("\n") + val smap = it.value.mapNotNull { it.smap }.joinToString("\n") SMAPAndFile(if (smap.isNotEmpty()) smap else null, it.key) }.associateBy { it.sourceFile } for (source in sourceData) { - val data = compiledData[source.sourceFile] - Assert.assertEquals("Smap data differs for ${source.sourceFile}", source.smap, data?.smap?.trim()) + val ktFileName = "/" + source.sourceFile.replace(".smap", ".kt") + val data = compiledData[ktFileName] + Assert.assertEquals("Smap data differs for $ktFileName", normalize(source.smap), normalize(data?.smap)) } } + private fun normalize(text: String?) = + text?.let { StringUtil.convertLineSeparators(it.trim()) } - private fun String.replaceHash(): String { - val fileSectionStart = indexOf("*F") + 3 - val lineSection = indexOf("*L") - 1 - - val files = substring(fileSectionStart, lineSection).split("\n") - - val cleaned = files.joinToString("\n") - - return substring(0, fileSectionStart) + cleaned + substring(lineSection) - } - - class SMAPAndFile(val smap: String?, val sourceFile: String) { + private class SMAPAndFile(val smap: String?, val sourceFile: String) { companion object { fun SMAPAndFile(smap: String?, sourceFile: File) = SMAPAndFile(smap, getPath(sourceFile)) @@ -101,4 +92,4 @@ interface AbstractSMAPBaseTest { } } } -} \ No newline at end of file +}