JVM_IR. Generate SMAP information for anonymous classes

#KT-28092 Fixed
This commit is contained in:
Mikhael Bogdanov
2019-08-08 07:13:31 +02:00
parent a444a40849
commit 1eda42cb88
24 changed files with 12 additions and 27 deletions
@@ -41,7 +41,8 @@ import java.io.File
open class ClassCodegen protected constructor(
internal val irClass: IrClass,
val context: JvmBackendContext,
private val parentClassCodegen: ClassCodegen? = null
private val parentClassCodegen: ClassCodegen? = null,
private val withinInline: Boolean = false
) : InnerClassConsumer {
private val innerClasses = mutableListOf<IrClass>()
@@ -74,6 +75,9 @@ open class ClassCodegen protected constructor(
}
fun generate(): ReifiedTypeParametersUsages {
if (withinInline) {
getOrCreateSourceMapper() //initialize default mapping that would be later written in class file
}
val superClassInfo = irClass.getSuperClassInfo(typeMapper)
val signature = getSignature(irClass, type, superClassInfo, typeMapper)
@@ -232,8 +236,8 @@ open class ClassCodegen protected constructor(
}
}
fun generateLocalClass(klass: IrClass): ReifiedTypeParametersUsages {
return ClassCodegen(klass, context, this).generate()
fun generateLocalClass(klass: IrClass, withinInline: Boolean): ReifiedTypeParametersUsages {
return ClassCodegen(klass, context, this, withinInline = withinInline || this.withinInline).generate()
}
private fun generateField(field: IrField) {
@@ -576,9 +576,8 @@ class ExpressionCodegen(
"is not implemented, or it should have been lowered: ${element.render()}"
)
// TODO maybe remove?
override fun visitClass(declaration: IrClass, data: BlockInfo): PromisedValue {
classCodegen.generateLocalClass(declaration).also {
classCodegen.generateLocalClass(declaration, irFunction.isInline).also {
closureReifiedMarkers[declaration] = it
}
return immaterialUnitValue
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
fun returnNullable(): String? = null
inline fun Array<String>.matchAll(fn: (String) -> Unit) {
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// FILE: 1.kt
package test
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// FILE: 1.kt
package test
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// FILE: 1.kt
package test
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// FILE: 1.kt
package test
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// FILE: 1.kt
package test
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// FILE: 1.kt
// FULL_JDK
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// FILE: 1.kt
package test
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// FILE: inline.kt
// KOTLIN_CONFIGURATION_FLAGS: ASSERTIONS_MODE=jvm
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// FILE: inline.kt
// KOTLIN_CONFIGURATION_FLAGS: ASSERTIONS_MODE=jvm
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// TARGET_BACKEND: JVM
// FILE: inline.kt
// KOTLIN_CONFIGURATION_FLAGS: ASSERTIONS_MODE=jvm
-1
View File
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// FILE: 1.kt
// WITH_RUNTIME
package test
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// FILE: 1.kt
// SKIP_INLINE_CHECK_IN: inlineFun$default
package test
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// FILE: 1.kt
package zzz
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// FILE: 1.kt
package test
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// FILE: 1.kt
package test
@@ -1,5 +1,5 @@
// FILE: 1.kt
// IGNORE_BACKEND: JVM_IR
package builders
inline fun call(crossinline init: () -> Unit) {
@@ -1,6 +1,6 @@
// FILE: 1.kt
// SKIP_INLINE_CHECK_IN: lParams$default
// IGNORE_BACKEND: JVM_IR
package test
//A lot of blank lines [Don't delete]
//A lot of blank lines [Don't delete]
@@ -1,6 +1,6 @@
// FILE: 1.kt
// SKIP_INLINE_CHECK_IN: lParams$default
// IGNORE_BACKEND: JVM_IR
package test
//A lot of blank lines [Don't delete]
//A lot of blank lines [Don't delete]
@@ -1,6 +1,6 @@
// FILE: 1.kt
// SKIP_INLINE_CHECK_IN: lParams$default
// IGNORE_BACKEND: JVM_IR
package test
//A lot of blank lines [Don't delete]
//A lot of blank lines [Don't delete]
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
// FILE: 1.kt
inline fun cycle(p: String): String {
var z = p
@@ -1,4 +1,3 @@
// IGNORE_BACKEND: JVM_IR
interface Introspector {
fun test() {
class SchemaRetriever(val transaction: String) {