Track fake overrides for IrField
This commit is contained in:
@@ -17,11 +17,11 @@
|
||||
package org.jetbrains.kotlin.descriptors
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.impl.SyntheticFieldDescriptor
|
||||
import org.jetbrains.kotlin.psi.KtPropertyAccessor
|
||||
import org.jetbrains.kotlin.psi.KtDeclarationWithBody
|
||||
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
||||
|
||||
fun PropertyAccessorDescriptor.hasBody(): Boolean {
|
||||
val ktAccessor = DescriptorToSourceUtils.getSourceFromDescriptor(this) as? KtPropertyAccessor
|
||||
val ktAccessor = DescriptorToSourceUtils.getSourceFromDescriptor(this) as? KtDeclarationWithBody
|
||||
return ktAccessor != null && ktAccessor.hasBody()
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Copyright 2010-2018 JetBrains s.r.o. 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.resolve
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.kotlin.resolve.source.KotlinSourceElement
|
||||
|
||||
fun PropertyDescriptor.hasBackingField(bindingContext: BindingContext?): Boolean = when {
|
||||
kind == CallableMemberDescriptor.Kind.FAKE_OVERRIDE -> overriddenDescriptors.any { it.hasBackingField(bindingContext) }
|
||||
source is KotlinSourceElement && bindingContext != null -> bindingContext.get(BindingContext.BACKING_FIELD_REQUIRED, this) ?: false
|
||||
getter != null -> false
|
||||
else -> true
|
||||
}
|
||||
+2
-23
@@ -155,29 +155,8 @@ class DeclarationGenerator(override val context: GeneratorContext) : Generator {
|
||||
}
|
||||
}
|
||||
|
||||
private fun generateFakeOverrideProperty(propertyDescriptor: PropertyDescriptor, ktElement: KtPureElement): IrProperty {
|
||||
val startOffset = ktElement.pureStartOffsetOrUndefined
|
||||
val endOffset = ktElement.pureEndOffsetOrUndefined
|
||||
|
||||
val backingField =
|
||||
if (propertyDescriptor.getter == null)
|
||||
context.symbolTable.declareField(
|
||||
startOffset, endOffset, IrDeclarationOrigin.FAKE_OVERRIDE,
|
||||
propertyDescriptor, propertyDescriptor.type.toIrType()
|
||||
)
|
||||
else
|
||||
null
|
||||
|
||||
return IrPropertyImpl(
|
||||
startOffset, endOffset,
|
||||
IrDeclarationOrigin.FAKE_OVERRIDE,
|
||||
false,
|
||||
propertyDescriptor,
|
||||
backingField,
|
||||
propertyDescriptor.getter?.let { generateFakeOverrideFunction(it, ktElement) },
|
||||
propertyDescriptor.setter?.let { generateFakeOverrideFunction(it, ktElement) }
|
||||
)
|
||||
}
|
||||
private fun generateFakeOverrideProperty(propertyDescriptor: PropertyDescriptor, ktElement: KtPureElement): IrProperty =
|
||||
PropertyGenerator(this).generateFakeOverrideProperty(propertyDescriptor, ktElement)
|
||||
|
||||
private fun generateFakeOverrideFunction(functionDescriptor: FunctionDescriptor, ktElement: KtPureElement): IrSimpleFunction =
|
||||
FunctionGenerator(this).generateFakeOverrideFunction(functionDescriptor, ktElement)
|
||||
|
||||
@@ -42,7 +42,7 @@ class ModuleGenerator(override val context: GeneratorContext) : Generator {
|
||||
fun generateUnboundSymbolsAsDependencies(irModule: IrModuleFragment) {
|
||||
ExternalDependenciesGenerator(
|
||||
irModule.descriptor, context.symbolTable, context.irBuiltIns
|
||||
).generateUnboundSymbolsAsDependencies(irModule)
|
||||
).generateUnboundSymbolsAsDependencies(irModule, context.bindingContext)
|
||||
}
|
||||
|
||||
private fun generateFiles(ktFiles: Collection<KtFile>): List<IrFile> {
|
||||
|
||||
+33
-7
@@ -16,6 +16,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.psi2ir.generators
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrPropertyImpl
|
||||
@@ -23,13 +24,15 @@ import org.jetbrains.kotlin.ir.expressions.IrExpressionBody
|
||||
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrExpressionBodyImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrGetValueImpl
|
||||
import org.jetbrains.kotlin.psi.KtElement
|
||||
import org.jetbrains.kotlin.psi.KtParameter
|
||||
import org.jetbrains.kotlin.psi.KtProperty
|
||||
import org.jetbrains.kotlin.psi.KtPropertyDelegate
|
||||
import org.jetbrains.kotlin.ir.util.declareFieldWithOverrides
|
||||
import org.jetbrains.kotlin.psi.*
|
||||
import org.jetbrains.kotlin.psi.psiUtil.endOffset
|
||||
import org.jetbrains.kotlin.psi.psiUtil.startOffset
|
||||
import org.jetbrains.kotlin.psi2ir.pureEndOffsetOrUndefined
|
||||
import org.jetbrains.kotlin.psi2ir.pureStartOffsetOrUndefined
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.hasBackingField
|
||||
import org.jetbrains.kotlin.resolve.source.KotlinSourceElement
|
||||
|
||||
class PropertyGenerator(declarationGenerator: DeclarationGenerator) : DeclarationGeneratorExtension(declarationGenerator) {
|
||||
fun generatePropertyDeclaration(ktProperty: KtProperty): IrProperty {
|
||||
@@ -106,7 +109,7 @@ class PropertyGenerator(declarationGenerator: DeclarationGenerator) : Declaratio
|
||||
propertyDescriptor
|
||||
).buildWithScope { irProperty ->
|
||||
irProperty.backingField =
|
||||
if (propertyDescriptor.hasBackingField())
|
||||
if (propertyDescriptor.hasBackingField(context.bindingContext))
|
||||
generatePropertyBackingField(ktProperty, propertyDescriptor) { irField ->
|
||||
ktProperty.initializer?.let { ktInitializer ->
|
||||
declarationGenerator.generateInitializerBody(irField.symbol, ktInitializer)
|
||||
@@ -119,8 +122,30 @@ class PropertyGenerator(declarationGenerator: DeclarationGenerator) : Declaratio
|
||||
irProperty.setter = generateSetterIfRequired(ktProperty, propertyDescriptor)
|
||||
}
|
||||
|
||||
private fun PropertyDescriptor.hasBackingField(): Boolean =
|
||||
get(BindingContext.BACKING_FIELD_REQUIRED, this) ?: false
|
||||
fun generateFakeOverrideProperty(propertyDescriptor: PropertyDescriptor, ktElement: KtPureElement): IrProperty {
|
||||
val startOffset = ktElement.pureStartOffsetOrUndefined
|
||||
val endOffset = ktElement.pureEndOffsetOrUndefined
|
||||
|
||||
val backingField =
|
||||
if (propertyDescriptor.hasBackingField(context.bindingContext))
|
||||
context.symbolTable.declareFieldWithOverrides(
|
||||
startOffset, endOffset, IrDeclarationOrigin.FAKE_OVERRIDE,
|
||||
propertyDescriptor, propertyDescriptor.type.toIrType(),
|
||||
{ it.hasBackingField(context.bindingContext) }
|
||||
)
|
||||
else
|
||||
null
|
||||
|
||||
return IrPropertyImpl(
|
||||
startOffset, endOffset,
|
||||
IrDeclarationOrigin.FAKE_OVERRIDE,
|
||||
false,
|
||||
propertyDescriptor,
|
||||
backingField,
|
||||
propertyDescriptor.getter?.let { FunctionGenerator(declarationGenerator).generateFakeOverrideFunction(it, ktElement) },
|
||||
propertyDescriptor.setter?.let { FunctionGenerator(declarationGenerator).generateFakeOverrideFunction(it, ktElement) }
|
||||
)
|
||||
}
|
||||
|
||||
private fun generateGetterIfRequired(ktProperty: KtProperty, property: PropertyDescriptor): IrSimpleFunction? {
|
||||
val getter = property.getter ?: return null
|
||||
@@ -138,3 +163,4 @@ class PropertyGenerator(declarationGenerator: DeclarationGenerator) : Declaratio
|
||||
return variableDescriptor as? PropertyDescriptor ?: TODO("not a property?")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -41,6 +41,11 @@ interface IrSymbolDeclaration<out S : IrSymbol> : IrDeclaration, IrSymbolOwner {
|
||||
override val symbol: S
|
||||
}
|
||||
|
||||
interface IrOverridableDeclaration<S : IrSymbol> : IrDeclaration {
|
||||
val overriddenSymbols: MutableList<S>
|
||||
}
|
||||
|
||||
interface IrDeclarationWithVisibility : IrDeclaration {
|
||||
val visibility: Visibility
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ import org.jetbrains.kotlin.ir.symbols.IrFieldSymbol
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.name.Name
|
||||
|
||||
interface IrField : IrSymbolDeclaration<IrFieldSymbol>, IrDeclarationWithVisibility {
|
||||
interface IrField : IrSymbolDeclaration<IrFieldSymbol>, IrOverridableDeclaration<IrFieldSymbol>, IrDeclarationWithVisibility {
|
||||
override val descriptor: PropertyDescriptor
|
||||
|
||||
val name: Name
|
||||
@@ -23,4 +23,4 @@ interface IrField : IrSymbolDeclaration<IrFieldSymbol>, IrDeclarationWithVisibil
|
||||
|
||||
var initializer: IrExpressionBody?
|
||||
var correspondingProperty: IrProperty?
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,14 +19,12 @@ package org.jetbrains.kotlin.ir.declarations
|
||||
import org.jetbrains.kotlin.descriptors.Modality
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
|
||||
interface IrSimpleFunction : IrFunction, IrSymbolDeclaration<IrSimpleFunctionSymbol> {
|
||||
interface IrSimpleFunction : IrFunction, IrSymbolDeclaration<IrSimpleFunctionSymbol>, IrOverridableDeclaration<IrSimpleFunctionSymbol> {
|
||||
val modality: Modality
|
||||
val isTailrec: Boolean
|
||||
val isSuspend: Boolean
|
||||
|
||||
var correspondingProperty: IrProperty?
|
||||
|
||||
val overriddenSymbols: MutableList<IrSimpleFunctionSymbol>
|
||||
}
|
||||
|
||||
val IrFunction.isPropertyAccessor: Boolean
|
||||
|
||||
@@ -88,6 +88,7 @@ class IrFieldImpl(
|
||||
|
||||
override var initializer: IrExpressionBody? = null
|
||||
override var correspondingProperty: IrProperty? = null
|
||||
override val overriddenSymbols: MutableList<IrFieldSymbol> = mutableListOf()
|
||||
|
||||
override fun <R, D> accept(visitor: IrElementVisitor<R, D>, data: D): R {
|
||||
return visitor.visitField(this, data)
|
||||
|
||||
@@ -20,14 +20,14 @@ import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.ir.UNDEFINED_OFFSET
|
||||
import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrModuleFragmentImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrPropertyImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.IrValueParameterImpl
|
||||
import org.jetbrains.kotlin.ir.declarations.lazy.*
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrErrorExpressionImpl
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.IrExpressionBodyImpl
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.resolve.hasBackingField
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
|
||||
class DeclarationStubGenerator(
|
||||
@@ -79,10 +79,10 @@ class DeclarationStubGenerator(
|
||||
throw AssertionError("Unexpected member descriptor: $descriptor")
|
||||
}
|
||||
|
||||
internal fun generatePropertyStub(descriptor: PropertyDescriptor): IrProperty =
|
||||
internal fun generatePropertyStub(descriptor: PropertyDescriptor, bindingContext: BindingContext? = null): IrProperty =
|
||||
IrPropertyImpl(UNDEFINED_OFFSET, UNDEFINED_OFFSET, origin, descriptor).also { irProperty ->
|
||||
val getterDescriptor = descriptor.getter
|
||||
if (getterDescriptor == null) {
|
||||
if (descriptor.hasBackingField(bindingContext)) {
|
||||
irProperty.backingField =
|
||||
symbolTable.declareField(
|
||||
UNDEFINED_OFFSET,
|
||||
@@ -91,7 +91,8 @@ class DeclarationStubGenerator(
|
||||
descriptor.original,
|
||||
descriptor.type.toIrType()
|
||||
)
|
||||
} else {
|
||||
}
|
||||
if (getterDescriptor != null) {
|
||||
irProperty.getter = generateFunctionStub(getterDescriptor)
|
||||
}
|
||||
|
||||
|
||||
@@ -243,6 +243,15 @@ open class DeepCopyIrTree : IrElementTransformerVoid() {
|
||||
declaration.initializer?.transform()
|
||||
).apply {
|
||||
transformAnnotations(declaration)
|
||||
if (declaration.origin == IrDeclarationOrigin.FAKE_OVERRIDE) {
|
||||
descriptor.overriddenDescriptors.mapIndexedTo(overriddenSymbols) { index, overriddenDescriptor ->
|
||||
val oldOverriddenSymbol = declaration.overriddenSymbols.getOrNull(index)
|
||||
if (overriddenDescriptor.original == oldOverriddenSymbol?.descriptor?.original)
|
||||
oldOverriddenSymbol
|
||||
else
|
||||
IrFieldSymbolImpl(overriddenDescriptor.original)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitLocalDelegatedProperty(declaration: IrLocalDelegatedProperty): IrLocalDelegatedProperty =
|
||||
|
||||
@@ -22,10 +22,7 @@ import org.jetbrains.kotlin.ir.declarations.*
|
||||
import org.jetbrains.kotlin.ir.declarations.impl.*
|
||||
import org.jetbrains.kotlin.ir.expressions.*
|
||||
import org.jetbrains.kotlin.ir.expressions.impl.*
|
||||
import org.jetbrains.kotlin.ir.symbols.IrFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrReturnTargetSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrReturnableBlockSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
|
||||
import org.jetbrains.kotlin.ir.symbols.*
|
||||
import org.jetbrains.kotlin.ir.symbols.impl.IrAnonymousInitializerSymbolImpl
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
import org.jetbrains.kotlin.ir.visitors.IrElementTransformerVoid
|
||||
@@ -175,6 +172,9 @@ open class DeepCopyIrTreeWithSymbols(
|
||||
declaration.type.remapType()
|
||||
).apply {
|
||||
transformAnnotations(declaration)
|
||||
declaration.overriddenSymbols.mapTo(overriddenSymbols) {
|
||||
symbolRemapper.getReferencedField(it)
|
||||
}
|
||||
initializer = declaration.initializer?.transform()
|
||||
}
|
||||
|
||||
|
||||
@@ -144,6 +144,16 @@ class DumpIrTreeVisitor(out: Appendable) : IrElementVisitor<Unit, String> {
|
||||
}
|
||||
}
|
||||
|
||||
override fun visitField(declaration: IrField, data: String) {
|
||||
declaration.dumpLabeledElementWith(data) {
|
||||
dumpAnnotations(declaration)
|
||||
declaration.overriddenSymbols.dumpItems("overridden") {
|
||||
it.dumpDeclarationElementOrDescriptor()
|
||||
}
|
||||
declaration.initializer?.accept(this, "")
|
||||
}
|
||||
}
|
||||
|
||||
private fun List<IrElement>.dumpElements() {
|
||||
forEach { it.accept(this@DumpIrTreeVisitor, "") }
|
||||
}
|
||||
|
||||
+5
-4
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||
import org.jetbrains.kotlin.ir.declarations.IrModuleFragment
|
||||
import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns
|
||||
import org.jetbrains.kotlin.resolve.BindingContext
|
||||
|
||||
class ExternalDependenciesGenerator(
|
||||
moduleDescriptor: ModuleDescriptor,
|
||||
@@ -30,11 +31,11 @@ class ExternalDependenciesGenerator(
|
||||
moduleDescriptor, symbolTable, IrDeclarationOrigin.IR_EXTERNAL_DECLARATION_STUB, irBuiltIns.languageVersionSettings
|
||||
)
|
||||
|
||||
fun generateUnboundSymbolsAsDependencies(irModule: IrModuleFragment) {
|
||||
DependencyGenerationTask(irModule).run()
|
||||
fun generateUnboundSymbolsAsDependencies(irModule: IrModuleFragment, bindingContext: BindingContext? = null) {
|
||||
DependencyGenerationTask(irModule, bindingContext).run()
|
||||
}
|
||||
|
||||
private inner class DependencyGenerationTask(val irModule: IrModuleFragment) {
|
||||
private inner class DependencyGenerationTask(val irModule: IrModuleFragment, val bindingContext: BindingContext?) {
|
||||
|
||||
fun run() {
|
||||
stubGenerator.unboundSymbolGeneration = true
|
||||
@@ -48,7 +49,7 @@ class ExternalDependenciesGenerator(
|
||||
stubGenerator.generateEnumEntryStub(it.descriptor)
|
||||
}
|
||||
ArrayList(symbolTable.unboundFields).forEach {
|
||||
stubGenerator.generatePropertyStub(it.descriptor)
|
||||
stubGenerator.generatePropertyStub(it.descriptor, bindingContext)
|
||||
}
|
||||
ArrayList(symbolTable.unboundSimpleFunctions).forEach {
|
||||
stubGenerator.generateFunctionStub(it.descriptor)
|
||||
|
||||
@@ -124,8 +124,7 @@ open class SymbolTable : ReferenceSymbolTable {
|
||||
private var currentScope: Scope? = null
|
||||
|
||||
override fun get(d: D): S? {
|
||||
val scope = currentScope
|
||||
?: throw AssertionError("No active scope")
|
||||
val scope = currentScope ?: return null
|
||||
return scope[d]
|
||||
}
|
||||
|
||||
|
||||
@@ -6,7 +6,9 @@
|
||||
package org.jetbrains.kotlin.ir.util
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||
import org.jetbrains.kotlin.descriptors.PropertyDescriptor
|
||||
import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin
|
||||
import org.jetbrains.kotlin.ir.declarations.IrField
|
||||
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
|
||||
import org.jetbrains.kotlin.ir.types.IrType
|
||||
|
||||
@@ -17,10 +19,11 @@ fun SymbolTable.declareSimpleFunctionWithOverrides(
|
||||
descriptor: FunctionDescriptor
|
||||
) =
|
||||
declareSimpleFunction(startOffset, endOffset, origin, descriptor).also { declaration ->
|
||||
generateOverriddenSymbols(declaration, this)
|
||||
generateOverriddenFunctionSymbols(declaration, this)
|
||||
}
|
||||
|
||||
fun generateOverriddenSymbols(
|
||||
|
||||
fun generateOverriddenFunctionSymbols(
|
||||
declaration: IrSimpleFunction,
|
||||
symbolTable: SymbolTable
|
||||
) {
|
||||
@@ -28,3 +31,27 @@ fun generateOverriddenSymbols(
|
||||
symbolTable.referenceSimpleFunction(it.original)
|
||||
}
|
||||
}
|
||||
|
||||
fun SymbolTable.declareFieldWithOverrides(
|
||||
startOffset: Int,
|
||||
endOffset: Int,
|
||||
origin: IrDeclarationOrigin,
|
||||
descriptor: PropertyDescriptor,
|
||||
type: IrType,
|
||||
hasBackingField: (PropertyDescriptor) -> Boolean
|
||||
) =
|
||||
declareField(startOffset, endOffset, origin, descriptor, type).also { declaration ->
|
||||
generateOverriddenFieldSymbols(declaration, this, hasBackingField)
|
||||
}
|
||||
|
||||
fun generateOverriddenFieldSymbols(
|
||||
declaration: IrField,
|
||||
symbolTable: SymbolTable,
|
||||
hasBackingField: (PropertyDescriptor) -> Boolean
|
||||
) {
|
||||
declaration.descriptor.overriddenDescriptors.mapNotNullTo(declaration.overriddenSymbols) {
|
||||
if (hasBackingField(it)) {
|
||||
symbolTable.referenceField(it.original)
|
||||
} else null
|
||||
}
|
||||
}
|
||||
+12
@@ -58,12 +58,18 @@ FILE fqName:<root> fileName:/argumentReorderingInDelegatingConstructorCall.kt
|
||||
y: GET_VAR 'tmp0_y: Int' type=kotlin.Int origin=null
|
||||
INSTANCE_INITIALIZER_CALL classDescriptor='Test1'
|
||||
PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
FIELD FAKE_OVERRIDE name:x type:kotlin.Int visibility:public flags:final
|
||||
overridden:
|
||||
FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:public flags:final
|
||||
FUN FAKE_OVERRIDE name:<get-x> visibility:public modality:FINAL <> ($this:Base) returnType:kotlin.Int flags:
|
||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
overridden:
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-x> visibility:public modality:FINAL <> ($this:Base) returnType:kotlin.Int flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:Base flags:
|
||||
PROPERTY FAKE_OVERRIDE name:y visibility:public modality:FINAL flags:val
|
||||
FIELD FAKE_OVERRIDE name:y type:kotlin.Int visibility:public flags:final
|
||||
overridden:
|
||||
FIELD PROPERTY_BACKING_FIELD name:y type:kotlin.Int visibility:public flags:final
|
||||
FUN FAKE_OVERRIDE name:<get-y> visibility:public modality:FINAL <> ($this:Base) returnType:kotlin.Int flags:
|
||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:y visibility:public modality:FINAL flags:val
|
||||
overridden:
|
||||
@@ -111,12 +117,18 @@ FILE fqName:<root> fileName:/argumentReorderingInDelegatingConstructorCall.kt
|
||||
xx: GET_VAR 'tmp1_xx: Int' type=kotlin.Int origin=null
|
||||
yy: GET_VAR 'tmp0_yy: Int' type=kotlin.Int origin=null
|
||||
PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
FIELD FAKE_OVERRIDE name:x type:kotlin.Int visibility:public flags:final
|
||||
overridden:
|
||||
FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:public flags:final
|
||||
FUN FAKE_OVERRIDE name:<get-x> visibility:public modality:FINAL <> ($this:Base) returnType:kotlin.Int flags:
|
||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
overridden:
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-x> visibility:public modality:FINAL <> ($this:Base) returnType:kotlin.Int flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:Base flags:
|
||||
PROPERTY FAKE_OVERRIDE name:y visibility:public modality:FINAL flags:val
|
||||
FIELD FAKE_OVERRIDE name:y type:kotlin.Int visibility:public flags:final
|
||||
overridden:
|
||||
FIELD PROPERTY_BACKING_FIELD name:y type:kotlin.Int visibility:public flags:final
|
||||
FUN FAKE_OVERRIDE name:<get-y> visibility:public modality:FINAL <> ($this:Base) returnType:kotlin.Int flags:
|
||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:y visibility:public modality:FINAL flags:val
|
||||
overridden:
|
||||
|
||||
@@ -122,4 +122,3 @@ FILE fqName:<root> fileName:/classes.kt
|
||||
FUN ENUM_CLASS_SPECIAL_MEMBER name:valueOf visibility:public modality:FINAL <> (value:kotlin.String) returnType:TestEnumClass flags:
|
||||
VALUE_PARAMETER name:value index:0 type:kotlin.String flags:
|
||||
SYNTHETIC_BODY kind=ENUM_VALUEOF
|
||||
|
||||
|
||||
-1
@@ -87,4 +87,3 @@ FILE fqName:<root> fileName:/delegatingConstructorCallToTypeAliasConstructor.kt
|
||||
overridden:
|
||||
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
|
||||
|
||||
|
||||
+6
-1
@@ -323,6 +323,9 @@ FILE fqName:<root> fileName:/enum.kt
|
||||
FUN FAKE_OVERRIDE name:<get-ordinal> visibility:public modality:FINAL <> ($this:kotlin.Enum<TestEnum4>) returnType:kotlin.Int flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Enum<TestEnum4> flags:
|
||||
PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
FIELD FAKE_OVERRIDE name:x type:kotlin.Int visibility:public flags:final
|
||||
overridden:
|
||||
FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:public flags:final
|
||||
FUN FAKE_OVERRIDE name:<get-x> visibility:public modality:FINAL <> ($this:TestEnum4) returnType:kotlin.Int flags:
|
||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
overridden:
|
||||
@@ -404,6 +407,9 @@ FILE fqName:<root> fileName:/enum.kt
|
||||
FUN FAKE_OVERRIDE name:<get-ordinal> visibility:public modality:FINAL <> ($this:kotlin.Enum<TestEnum4>) returnType:kotlin.Int flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Enum<TestEnum4> flags:
|
||||
PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
FIELD FAKE_OVERRIDE name:x type:kotlin.Int visibility:public flags:final
|
||||
overridden:
|
||||
FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:public flags:final
|
||||
FUN FAKE_OVERRIDE name:<get-x> visibility:public modality:FINAL <> ($this:TestEnum4) returnType:kotlin.Int flags:
|
||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
overridden:
|
||||
@@ -537,4 +543,3 @@ FILE fqName:<root> fileName:/enum.kt
|
||||
FUN ENUM_CLASS_SPECIAL_MEMBER name:valueOf visibility:public modality:FINAL <> (value:kotlin.String) returnType:TestEnum5 flags:
|
||||
VALUE_PARAMETER name:value index:0 type:kotlin.String flags:
|
||||
SYNTHETIC_BODY kind=ENUM_VALUEOF
|
||||
|
||||
|
||||
@@ -221,6 +221,9 @@ FILE fqName:<root> fileName:/enumWithSecondaryCtor.kt
|
||||
FUN FAKE_OVERRIDE name:<get-ordinal> visibility:public modality:FINAL <> ($this:kotlin.Enum<Test2>) returnType:kotlin.Int flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Enum<Test2> flags:
|
||||
PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
FIELD FAKE_OVERRIDE name:x type:kotlin.Int visibility:public flags:final
|
||||
overridden:
|
||||
FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:public flags:final
|
||||
FUN FAKE_OVERRIDE name:<get-x> visibility:public modality:FINAL <> ($this:Test2) returnType:kotlin.Int flags:
|
||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
overridden:
|
||||
@@ -287,6 +290,9 @@ FILE fqName:<root> fileName:/enumWithSecondaryCtor.kt
|
||||
FUN FAKE_OVERRIDE name:<get-ordinal> visibility:public modality:FINAL <> ($this:kotlin.Enum<Test2>) returnType:kotlin.Int flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Enum<Test2> flags:
|
||||
PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
FIELD FAKE_OVERRIDE name:x type:kotlin.Int visibility:public flags:final
|
||||
overridden:
|
||||
FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:public flags:final
|
||||
FUN FAKE_OVERRIDE name:<get-x> visibility:public modality:FINAL <> ($this:Test2) returnType:kotlin.Int flags:
|
||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
overridden:
|
||||
@@ -349,4 +355,3 @@ FILE fqName:<root> fileName:/enumWithSecondaryCtor.kt
|
||||
FUN ENUM_CLASS_SPECIAL_MEMBER name:valueOf visibility:public modality:FINAL <> (value:kotlin.String) returnType:Test2 flags:
|
||||
VALUE_PARAMETER name:value index:0 type:kotlin.String flags:
|
||||
SYNTHETIC_BODY kind=ENUM_VALUEOF
|
||||
|
||||
|
||||
-1
@@ -206,4 +206,3 @@ FILE fqName:<root> fileName:/classesWithAnnotations.kt
|
||||
overridden:
|
||||
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
|
||||
|
||||
|
||||
-1
@@ -155,4 +155,3 @@ FILE fqName:<root> fileName:/enumEntriesWithAnnotations.kt
|
||||
FUN ENUM_CLASS_SPECIAL_MEMBER name:valueOf visibility:public modality:FINAL <> (value:kotlin.String) returnType:TestEnum flags:
|
||||
VALUE_PARAMETER name:value index:0 type:kotlin.String flags:
|
||||
SYNTHETIC_BODY kind=ENUM_VALUEOF
|
||||
|
||||
|
||||
-1
@@ -94,4 +94,3 @@ FILE fqName:<root> fileName:/enumsInAnnotationArguments.kt
|
||||
CALL 'constructor TestAnn(En)' type=TestAnn origin=null
|
||||
x: GET_ENUM 'A' type=En
|
||||
BLOCK_BODY
|
||||
|
||||
|
||||
@@ -110,4 +110,3 @@ FILE fqName:<root> fileName:/expectedEnumClass.kt
|
||||
FUN ENUM_CLASS_SPECIAL_MEMBER name:valueOf visibility:public modality:FINAL <> (value:kotlin.String) returnType:MyEnum flags:
|
||||
VALUE_PARAMETER name:value index:0 type:kotlin.String flags:
|
||||
SYNTHETIC_BODY kind=ENUM_VALUEOF
|
||||
|
||||
|
||||
@@ -145,4 +145,3 @@ FILE fqName:<root> fileName:/enumEntryAsReceiver.kt
|
||||
CALL 'invoke(): String' type=kotlin.String origin=INVOKE
|
||||
$this: CALL '<get-value>(): () -> String' type=() -> kotlin.String origin=GET_PROPERTY
|
||||
$this: GET_ENUM 'B' type=X
|
||||
|
||||
|
||||
@@ -25,6 +25,8 @@ FILE fqName:<root> fileName:/Derived.kt
|
||||
value: GET_VAR 'value-parameter value: Int' type=kotlin.Int origin=null
|
||||
PROPERTY FAKE_OVERRIDE name:value visibility:public modality:FINAL flags:var
|
||||
FIELD FAKE_OVERRIDE name:value type:kotlin.Int visibility:public flags:
|
||||
overridden:
|
||||
FIELD IR_EXTERNAL_DECLARATION_STUB name:value type:kotlin.Int visibility:public flags:
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
|
||||
overridden:
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
|
||||
|
||||
+8
-1
@@ -94,12 +94,18 @@ FILE fqName:<root> fileName:/kt16904.kt
|
||||
$this: GET_VAR 'tmp1_this: Test1' type=Test1 origin=null
|
||||
other: CONST Int type=kotlin.Int value=42
|
||||
PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
FIELD FAKE_OVERRIDE name:x type:B visibility:public flags:final
|
||||
overridden:
|
||||
FIELD PROPERTY_BACKING_FIELD name:x type:B visibility:public flags:final
|
||||
FUN FAKE_OVERRIDE name:<get-x> visibility:public modality:FINAL <> ($this:A) returnType:B flags:
|
||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
overridden:
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-x> visibility:public modality:FINAL <> ($this:A) returnType:B flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:A flags:
|
||||
PROPERTY FAKE_OVERRIDE name:y visibility:public modality:FINAL flags:var
|
||||
FIELD FAKE_OVERRIDE name:y type:kotlin.Int visibility:public flags:
|
||||
overridden:
|
||||
FIELD PROPERTY_BACKING_FIELD name:y type:kotlin.Int visibility:public flags:
|
||||
FUN FAKE_OVERRIDE name:<get-y> visibility:public modality:FINAL <> ($this:A) returnType:kotlin.Int flags:
|
||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:y visibility:public modality:FINAL flags:var
|
||||
overridden:
|
||||
@@ -137,6 +143,8 @@ FILE fqName:<root> fileName:/kt16904.kt
|
||||
value: CONST Int type=kotlin.Int value=42
|
||||
PROPERTY FAKE_OVERRIDE name:field visibility:public modality:FINAL flags:var
|
||||
FIELD FAKE_OVERRIDE name:field type:kotlin.Int visibility:public flags:
|
||||
overridden:
|
||||
FIELD IR_EXTERNAL_DECLARATION_STUB name:field type:kotlin.Int visibility:public flags:
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
|
||||
overridden:
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
|
||||
@@ -150,4 +158,3 @@ FILE fqName:<root> fileName:/kt16904.kt
|
||||
overridden:
|
||||
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
|
||||
|
||||
|
||||
@@ -98,6 +98,9 @@ FILE fqName:<root> fileName:/multipleThisReferences.kt
|
||||
GET_FIELD 'xx: Int' type=kotlin.Int origin=null
|
||||
receiver: GET_VAR 'this@<no name provided>: <no name provided>' type=Host.test.<no name provided> origin=null
|
||||
PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
FIELD FAKE_OVERRIDE name:x type:kotlin.Int visibility:public flags:final
|
||||
overridden:
|
||||
FIELD PROPERTY_BACKING_FIELD name:x type:kotlin.Int visibility:public flags:final
|
||||
FUN FAKE_OVERRIDE name:<get-x> visibility:public modality:FINAL <> ($this:Outer.Inner) returnType:kotlin.Int flags:
|
||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
overridden:
|
||||
@@ -130,4 +133,3 @@ FILE fqName:<root> fileName:/multipleThisReferences.kt
|
||||
overridden:
|
||||
FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
|
||||
|
||||
|
||||
@@ -108,4 +108,3 @@ FILE fqName:<root> fileName:/objectAsCallable.kt
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='<get-test2>(): Int'
|
||||
GET_FIELD 'test2: Int' type=kotlin.Int origin=null
|
||||
|
||||
|
||||
+3
@@ -43,6 +43,9 @@ FILE fqName:<root> fileName:/objectReferenceInClosureInSuperConstructorCall.kt
|
||||
FUNCTION_REFERENCE '<anonymous>(): Test' type=() -> Test origin=LAMBDA
|
||||
INSTANCE_INITIALIZER_CALL classDescriptor='Test'
|
||||
PROPERTY FAKE_OVERRIDE name:lambda visibility:public modality:FINAL flags:val
|
||||
FIELD FAKE_OVERRIDE name:lambda type:() -> kotlin.Any visibility:public flags:final
|
||||
overridden:
|
||||
FIELD PROPERTY_BACKING_FIELD name:lambda type:() -> kotlin.Any visibility:public flags:final
|
||||
FUN FAKE_OVERRIDE name:<get-lambda> visibility:public modality:FINAL <> ($this:Base) returnType:() -> kotlin.Any flags:
|
||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:lambda visibility:public modality:FINAL flags:val
|
||||
overridden:
|
||||
|
||||
@@ -22,6 +22,8 @@ FILE fqName:<root> fileName:/Derived.kt
|
||||
GET_VAR 'value-parameter v: Any' type=kotlin.Any origin=null
|
||||
PROPERTY FAKE_OVERRIDE name:value visibility:public modality:FINAL flags:var
|
||||
FIELD FAKE_OVERRIDE name:value type:kotlin.String? visibility:public flags:
|
||||
overridden:
|
||||
FIELD IR_EXTERNAL_DECLARATION_STUB name:value type:kotlin.String? visibility:public flags:
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
|
||||
overridden:
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
|
||||
|
||||
@@ -111,4 +111,3 @@ FILE fqName:<root> fileName:/thisOfGenericOuterClass.kt
|
||||
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
|
||||
CALL 'constructor <no name provided>()' type=test.<no name provided> origin=OBJECT_LITERAL
|
||||
|
||||
|
||||
@@ -137,4 +137,3 @@ FILE fqName:<root> fileName:/values.kt
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='test4(): Z.Companion'
|
||||
GET_OBJECT 'companion object of Z' type=Z.Companion
|
||||
|
||||
|
||||
@@ -132,4 +132,3 @@ FILE fqName:<root> fileName:/enumEntry.kt
|
||||
FUN ENUM_CLASS_SPECIAL_MEMBER name:valueOf visibility:public modality:FINAL <> (value:kotlin.String) returnType:Z flags:
|
||||
VALUE_PARAMETER name:value index:0 type:kotlin.String flags:
|
||||
SYNTHETIC_BODY kind=ENUM_VALUEOF
|
||||
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
// MODULE: m1
|
||||
// FILE: genericClassInDifferentModule_m1.kt
|
||||
|
||||
abstract class Base<T>(val x: T) {
|
||||
abstract fun <Y> foo(y: Y): T
|
||||
|
||||
abstract var bar: T
|
||||
|
||||
abstract var <Z> Z.exn: T
|
||||
}
|
||||
|
||||
// MODULE: m2(m1)
|
||||
// FILE: genericClassInDifferentModule_m2.kt
|
||||
|
||||
class Derived1<T>(x: T) : Base<T>(x) {
|
||||
override fun <Y> foo(y: Y): T = x
|
||||
|
||||
override var bar: T = x
|
||||
|
||||
override var <Z> Z.exn: T
|
||||
get() = x
|
||||
set(value) {}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
FILE fqName:<root> fileName:/genericClassInDifferentModule_m1.kt
|
||||
CLASS CLASS name:Base modality:ABSTRACT visibility:public flags: superTypes:[kotlin.Any]
|
||||
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:Base<T> flags:
|
||||
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
|
||||
CONSTRUCTOR visibility:public <> (x:T) returnType:Base<T> flags:primary
|
||||
VALUE_PARAMETER name:x index:0 type:T flags:
|
||||
BLOCK_BODY
|
||||
DELEGATING_CONSTRUCTOR_CALL 'constructor Any()'
|
||||
INSTANCE_INITIALIZER_CALL classDescriptor='Base'
|
||||
PROPERTY name:x visibility:public modality:FINAL flags:val
|
||||
FIELD PROPERTY_BACKING_FIELD name:x type:T visibility:public flags:final
|
||||
EXPRESSION_BODY
|
||||
GET_VAR 'value-parameter x: T' type=T origin=INITIALIZE_PROPERTY_FROM_PARAMETER
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-x> visibility:public modality:FINAL <> ($this:Base<T>) returnType:T flags:
|
||||
correspondingProperty: PROPERTY name:x visibility:public modality:FINAL flags:val
|
||||
$this: VALUE_PARAMETER name:<this> type:Base<T> flags:
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='<get-x>(): T'
|
||||
GET_FIELD 'x: T' type=T origin=null
|
||||
receiver: GET_VAR 'this@Base: Base<T>' type=Base<T> origin=null
|
||||
FUN name:foo visibility:public modality:ABSTRACT <Y> ($this:Base<T>, y:Y) returnType:T flags:
|
||||
TYPE_PARAMETER name:Y index:0 variance: superTypes:[kotlin.Any?]
|
||||
$this: VALUE_PARAMETER name:<this> type:Base<T> flags:
|
||||
VALUE_PARAMETER name:y index:0 type:Y flags:
|
||||
PROPERTY name:bar visibility:public modality:ABSTRACT flags:var
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-bar> visibility:public modality:ABSTRACT <> ($this:Base<T>) returnType:T flags:
|
||||
correspondingProperty: PROPERTY name:bar visibility:public modality:ABSTRACT flags:var
|
||||
$this: VALUE_PARAMETER name:<this> type:Base<T> flags:
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-bar> visibility:public modality:ABSTRACT <> ($this:Base<T>, <set-?>:T) returnType:kotlin.Unit flags:
|
||||
correspondingProperty: PROPERTY name:bar visibility:public modality:ABSTRACT flags:var
|
||||
$this: VALUE_PARAMETER name:<this> type:Base<T> flags:
|
||||
VALUE_PARAMETER name:<set-?> index:0 type:T flags:
|
||||
PROPERTY name:exn visibility:public modality:ABSTRACT flags:var
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-exn> visibility:public modality:ABSTRACT <Z> ($this:Base<T>, $receiver:Z) returnType:T flags:
|
||||
correspondingProperty: PROPERTY name:exn visibility:public modality:ABSTRACT flags:var
|
||||
TYPE_PARAMETER name:Z index:0 variance: superTypes:[kotlin.Any?]
|
||||
$this: VALUE_PARAMETER name:<this> type:Base<T> flags:
|
||||
$receiver: VALUE_PARAMETER name:<this> type:Z flags:
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-exn> visibility:public modality:ABSTRACT <Z> ($this:Base<T>, $receiver:Z, <set-?>:T) returnType:kotlin.Unit flags:
|
||||
correspondingProperty: PROPERTY name:exn visibility:public modality:ABSTRACT flags:var
|
||||
TYPE_PARAMETER name:Z index:0 variance: superTypes:[kotlin.Any?]
|
||||
$this: VALUE_PARAMETER name:<this> type:Base<T> flags:
|
||||
$receiver: VALUE_PARAMETER name:<this> type:Z flags:
|
||||
VALUE_PARAMETER name:<set-?> index:0 type:T flags:
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
|
||||
overridden:
|
||||
FUN IR_EXTERNAL_DECLARATION_STUB name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
|
||||
VALUE_PARAMETER name:other index:0 type:kotlin.Any? flags:
|
||||
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
|
||||
overridden:
|
||||
FUN IR_EXTERNAL_DECLARATION_STUB name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
|
||||
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
|
||||
overridden:
|
||||
FUN IR_EXTERNAL_DECLARATION_STUB name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
|
||||
@@ -0,0 +1,84 @@
|
||||
FILE fqName:<root> fileName:/genericClassInDifferentModule_m2.kt
|
||||
CLASS CLASS name:Derived1 modality:FINAL visibility:public flags: superTypes:[Base<T>]
|
||||
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:Derived1<T> flags:
|
||||
TYPE_PARAMETER name:T index:0 variance: superTypes:[kotlin.Any?]
|
||||
CONSTRUCTOR visibility:public <> (x:T) returnType:Derived1<T> flags:primary
|
||||
VALUE_PARAMETER name:x index:0 type:T flags:
|
||||
BLOCK_BODY
|
||||
DELEGATING_CONSTRUCTOR_CALL 'constructor Base(T)'
|
||||
<T>: T
|
||||
x: GET_VAR 'value-parameter x: T' type=T origin=null
|
||||
INSTANCE_INITIALIZER_CALL classDescriptor='Derived1'
|
||||
FUN name:foo visibility:public modality:OPEN <Y> ($this:Derived1<T>, y:Y) returnType:T flags:
|
||||
overridden:
|
||||
FUN name:foo visibility:public modality:ABSTRACT <Y> ($this:Base<T>, y:Y) returnType:T flags:
|
||||
TYPE_PARAMETER name:Y index:0 variance: superTypes:[kotlin.Any?]
|
||||
$this: VALUE_PARAMETER name:<this> type:Derived1<T> flags:
|
||||
VALUE_PARAMETER name:y index:0 type:Y flags:
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='foo(Y): T'
|
||||
CALL '<get-x>(): T' type=T origin=GET_PROPERTY
|
||||
$this: GET_VAR 'this@Derived1: Derived1<T>' type=Derived1<T> origin=null
|
||||
PROPERTY name:bar visibility:public modality:OPEN flags:var
|
||||
FIELD PROPERTY_BACKING_FIELD name:bar type:T visibility:public flags:
|
||||
EXPRESSION_BODY
|
||||
GET_VAR 'value-parameter x: T' type=T origin=null
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-bar> visibility:public modality:OPEN <> ($this:Derived1<T>) returnType:T flags:
|
||||
correspondingProperty: PROPERTY name:bar visibility:public modality:OPEN flags:var
|
||||
overridden:
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-bar> visibility:public modality:ABSTRACT <> ($this:Base<T>) returnType:T flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:Derived1<T> flags:
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='<get-bar>(): T'
|
||||
GET_FIELD 'bar: T' type=T origin=null
|
||||
receiver: GET_VAR 'this@Derived1: Derived1<T>' type=Derived1<T> origin=null
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-bar> visibility:public modality:OPEN <> ($this:Derived1<T>, <set-?>:T) returnType:kotlin.Unit flags:
|
||||
correspondingProperty: PROPERTY name:bar visibility:public modality:OPEN flags:var
|
||||
overridden:
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-bar> visibility:public modality:ABSTRACT <> ($this:Base<T>, <set-?>:T) returnType:kotlin.Unit flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:Derived1<T> flags:
|
||||
VALUE_PARAMETER name:<set-?> index:0 type:T flags:
|
||||
BLOCK_BODY
|
||||
SET_FIELD 'bar: T' type=kotlin.Unit origin=null
|
||||
receiver: GET_VAR 'this@Derived1: Derived1<T>' type=Derived1<T> origin=null
|
||||
value: GET_VAR 'value-parameter <set-?>: T' type=T origin=null
|
||||
PROPERTY name:exn visibility:public modality:OPEN flags:var
|
||||
FUN name:<get-exn> visibility:public modality:OPEN <Z> ($this:Derived1<T>, $receiver:Z) returnType:T flags:
|
||||
correspondingProperty: PROPERTY name:exn visibility:public modality:OPEN flags:var
|
||||
overridden:
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-exn> visibility:public modality:ABSTRACT <Z> ($this:Base<T>, $receiver:Z) returnType:T flags:
|
||||
TYPE_PARAMETER name:Z index:0 variance: superTypes:[kotlin.Any?]
|
||||
$this: VALUE_PARAMETER name:<this> type:Derived1<T> flags:
|
||||
$receiver: VALUE_PARAMETER name:<this> type:Z flags:
|
||||
BLOCK_BODY
|
||||
RETURN type=kotlin.Nothing from='<get-exn>() on Z: T'
|
||||
CALL '<get-x>(): T' type=T origin=GET_PROPERTY
|
||||
$this: GET_VAR 'this@Derived1: Derived1<T>' type=Derived1<T> origin=null
|
||||
FUN name:<set-exn> visibility:public modality:OPEN <Z> ($this:Derived1<T>, $receiver:Z, value:T) returnType:kotlin.Unit flags:
|
||||
correspondingProperty: PROPERTY name:exn visibility:public modality:OPEN flags:var
|
||||
overridden:
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<set-exn> visibility:public modality:ABSTRACT <Z> ($this:Base<T>, $receiver:Z, <set-?>:T) returnType:kotlin.Unit flags:
|
||||
TYPE_PARAMETER name:Z index:0 variance: superTypes:[kotlin.Any?]
|
||||
$this: VALUE_PARAMETER name:<this> type:Derived1<T> flags:
|
||||
$receiver: VALUE_PARAMETER name:<this> type:Z flags:
|
||||
VALUE_PARAMETER name:value index:0 type:T flags:
|
||||
BLOCK_BODY
|
||||
PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
FUN FAKE_OVERRIDE name:<get-x> visibility:public modality:FINAL <> ($this:Base<T>) returnType:T flags:
|
||||
correspondingProperty: PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:val
|
||||
overridden:
|
||||
FUN DEFAULT_PROPERTY_ACCESSOR name:<get-x> visibility:public modality:FINAL <> ($this:Base<T>) returnType:T flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:Base<T> flags:
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
|
||||
overridden:
|
||||
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
|
||||
VALUE_PARAMETER name:other index:0 type:kotlin.Any? flags:
|
||||
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
|
||||
overridden:
|
||||
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
|
||||
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
|
||||
overridden:
|
||||
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String flags:
|
||||
$this: VALUE_PARAMETER name:<this> type:kotlin.Any flags:
|
||||
@@ -19,6 +19,8 @@ FILE fqName:<root> fileName:/javaInnerClass.kt
|
||||
receiver: GET_VAR 'this@Test1: Test1' type=Test1 origin=null
|
||||
PROPERTY FAKE_OVERRIDE name:x visibility:public modality:FINAL flags:var
|
||||
FIELD FAKE_OVERRIDE name:x type:kotlin.Int visibility:public flags:
|
||||
overridden:
|
||||
FIELD IR_EXTERNAL_DECLARATION_STUB name:x type:kotlin.Int visibility:public flags:
|
||||
FUN FAKE_OVERRIDE name:bar visibility:public modality:OPEN <> ($this:J) returnType:kotlin.Unit flags:
|
||||
overridden:
|
||||
FUN IR_EXTERNAL_DECLARATION_STUB name:bar visibility:public modality:OPEN <> ($this:J) returnType:kotlin.Unit flags:
|
||||
|
||||
@@ -1395,6 +1395,11 @@ public class IrTextTestCaseGenerated extends AbstractIrTextTestCase {
|
||||
runTest("compiler/testData/ir/irText/stubs/builtinMap.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("genericClassInDifferentModule.kt")
|
||||
public void testGenericClassInDifferentModule() throws Exception {
|
||||
runTest("compiler/testData/ir/irText/stubs/genericClassInDifferentModule.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("javaEnum.kt")
|
||||
public void testJavaEnum() throws Exception {
|
||||
runTest("compiler/testData/ir/irText/stubs/javaEnum.kt");
|
||||
|
||||
Reference in New Issue
Block a user