Improve test data format for SMAP codegen tests
Instead of comments in a Kotlin source file, add a .smap with the contents of the source mapping data (and possible comments)
This commit is contained in:
committed by
Alexander Udalov
parent
cc84aabdcf
commit
f7958edf21
+43
-40
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+40
-37
@@ -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
|
||||
|
||||
+43
-39
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+40
-37
@@ -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
|
||||
|
||||
+52
-47
@@ -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
|
||||
|
||||
+18
-16
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+12
-10
@@ -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
|
||||
|
||||
+15
-13
@@ -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
|
||||
|
||||
+15
-12
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
+32
-27
@@ -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
|
||||
|
||||
+3
-1
@@ -101,7 +101,9 @@ public abstract class AbstractBlackBoxCodegenTest extends CodegenTestCase {
|
||||
|
||||
List<KtFile> ktFiles = new ArrayList<KtFile>(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);
|
||||
|
||||
+1
-1
@@ -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())
|
||||
|
||||
+4
-4
@@ -27,13 +27,13 @@ abstract class AbstractCompileKotlinAgainstInlineKotlinTest : AbstractCompileKot
|
||||
override fun doMultiFileTest(
|
||||
file: File, modules: Map<String, KotlinMultiFileTestWithJava<Void, TestFile>.ModuleAndDependencies>, files: List<TestFile>
|
||||
) {
|
||||
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 = ""
|
||||
|
||||
@@ -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<OutputFile>): List<SMAPAndFile> {
|
||||
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<KtFile>, outputFiles: Iterable<OutputFile>) {
|
||||
if (!InlineCodegenUtil.GENERATE_SMAP) {
|
||||
return
|
||||
}
|
||||
fun checkSMAP(inputFiles: List<CodegenTestCase.TestFile>, outputFiles: Iterable<OutputFile>) {
|
||||
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 {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user