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