KT-43370 ACC_DEPRECATED on property accessors implemented by delegation

This commit is contained in:
Dmitry Petrov
2020-11-17 16:08:00 +03:00
parent 986bdd1099
commit a27c6b77cf
10 changed files with 464 additions and 1 deletions
@@ -486,6 +486,11 @@ public class Fir2IrTextTestGenerated extends AbstractFir2IrTextTest {
runTest("compiler/testData/ir/irText/declarations/annotations/functionsWithAnnotations.kt");
}
@TestMetadata("inheritingDeprecation.kt")
public void testInheritingDeprecation() throws Exception {
runTest("compiler/testData/ir/irText/declarations/annotations/inheritingDeprecation.kt");
}
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() throws Exception {
runTest("compiler/testData/ir/irText/declarations/annotations/javaAnnotation.kt");
@@ -354,7 +354,17 @@ val IrFunction.isSyntheticMethodForProperty: Boolean
val IrFunction.isDeprecatedFunction: Boolean
get() = isSyntheticMethodForProperty || isDeprecatedCallable ||
(this as? IrSimpleFunction)?.correspondingPropertySymbol?.owner?.isDeprecatedCallable == true
(this as? IrSimpleFunction)?.correspondingPropertySymbol?.owner?.isDeprecatedCallable == true ||
isAccessorForDeprecatedPropertyImplementedByDelegation
private val IrFunction.isAccessorForDeprecatedPropertyImplementedByDelegation: Boolean
get() =
origin == IrDeclarationOrigin.DELEGATED_MEMBER &&
this is IrSimpleFunction &&
correspondingPropertySymbol != null &&
overriddenSymbols.any {
it.owner.correspondingPropertySymbol?.owner?.isDeprecatedCallable == true
}
@OptIn(ObsoleteDescriptorBasedAPI::class)
val IrDeclaration.psiElement: PsiElement?
@@ -0,0 +1,27 @@
interface IFoo {
@Deprecated("")
val prop: String get() = ""
@Deprecated("")
val String.extProp: String get() = ""
}
interface IFoo2 : IFoo
class Delegated(foo: IFoo) : IFoo by foo
class Delegated2(foo2: IFoo2) : IFoo2 by foo2
class DefaultImpl : IFoo
class DefaultImpl2 : IFoo2
class ExplicitOverride : IFoo {
override val prop: String get() = ""
override val String.extProp: String get() = ""
}
class ExplicitOverride2 : IFoo2 {
override val prop: String get() = ""
override val String.extProp: String get() = ""
}
@@ -0,0 +1,81 @@
@kotlin.Metadata
public final class DefaultImpl {
// source: 'inheritingDeprecation.kt'
public method <init>(): void
public deprecated @org.jetbrains.annotations.NotNull method getExtProp(@org.jetbrains.annotations.NotNull p0: java.lang.String): java.lang.String
public deprecated @org.jetbrains.annotations.NotNull method getProp(): java.lang.String
}
@kotlin.Metadata
public final class DefaultImpl2 {
// source: 'inheritingDeprecation.kt'
public method <init>(): void
public deprecated @org.jetbrains.annotations.NotNull method getExtProp(@org.jetbrains.annotations.NotNull p0: java.lang.String): java.lang.String
public deprecated @org.jetbrains.annotations.NotNull method getProp(): java.lang.String
}
@kotlin.Metadata
public final class Delegated {
// source: 'inheritingDeprecation.kt'
private synthetic final field $$delegate_0: IFoo
public method <init>(@org.jetbrains.annotations.NotNull p0: IFoo): void
public deprecated @org.jetbrains.annotations.NotNull method getExtProp(@org.jetbrains.annotations.NotNull p0: java.lang.String): java.lang.String
public deprecated @org.jetbrains.annotations.NotNull method getProp(): java.lang.String
}
@kotlin.Metadata
public final class Delegated2 {
// source: 'inheritingDeprecation.kt'
private synthetic final field $$delegate_0: IFoo2
public method <init>(@org.jetbrains.annotations.NotNull p0: IFoo2): void
public deprecated @org.jetbrains.annotations.NotNull method getExtProp(@org.jetbrains.annotations.NotNull p0: java.lang.String): java.lang.String
public deprecated @org.jetbrains.annotations.NotNull method getProp(): java.lang.String
}
@kotlin.Metadata
public final class ExplicitOverride {
// source: 'inheritingDeprecation.kt'
public method <init>(): void
public @org.jetbrains.annotations.NotNull method getExtProp(@org.jetbrains.annotations.NotNull p0: java.lang.String): java.lang.String
public @org.jetbrains.annotations.NotNull method getProp(): java.lang.String
}
@kotlin.Metadata
public final class ExplicitOverride2 {
// source: 'inheritingDeprecation.kt'
public method <init>(): void
public @org.jetbrains.annotations.NotNull method getExtProp(@org.jetbrains.annotations.NotNull p0: java.lang.String): java.lang.String
public @org.jetbrains.annotations.NotNull method getProp(): java.lang.String
}
@kotlin.Metadata
public final class IFoo$DefaultImpls {
// source: 'inheritingDeprecation.kt'
public synthetic deprecated static @kotlin.Deprecated method getExtProp$annotations(p0: java.lang.String): void
public deprecated static @org.jetbrains.annotations.NotNull method getExtProp(@org.jetbrains.annotations.NotNull p0: IFoo, @org.jetbrains.annotations.NotNull p1: java.lang.String): java.lang.String
public synthetic deprecated static @kotlin.Deprecated method getProp$annotations(): void
public deprecated static @org.jetbrains.annotations.NotNull method getProp(@org.jetbrains.annotations.NotNull p0: IFoo): java.lang.String
public final inner class IFoo$DefaultImpls
}
@kotlin.Metadata
public interface IFoo {
// source: 'inheritingDeprecation.kt'
public deprecated abstract @org.jetbrains.annotations.NotNull method getExtProp(@org.jetbrains.annotations.NotNull p0: java.lang.String): java.lang.String
public deprecated abstract @org.jetbrains.annotations.NotNull method getProp(): java.lang.String
public final inner class IFoo$DefaultImpls
}
@kotlin.Metadata
public final class IFoo2$DefaultImpls {
// source: 'inheritingDeprecation.kt'
public deprecated static @org.jetbrains.annotations.NotNull method getExtProp(@org.jetbrains.annotations.NotNull p0: IFoo2, @org.jetbrains.annotations.NotNull p1: java.lang.String): java.lang.String
public deprecated static @org.jetbrains.annotations.NotNull method getProp(@org.jetbrains.annotations.NotNull p0: IFoo2): java.lang.String
public final inner class IFoo2$DefaultImpls
}
@kotlin.Metadata
public interface IFoo2 {
// source: 'inheritingDeprecation.kt'
public final inner class IFoo2$DefaultImpls
}
@@ -0,0 +1,153 @@
FILE fqName:<root> fileName:/inheritingDeprecation.kt
CLASS INTERFACE name:IFoo modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.IFoo
PROPERTY name:prop visibility:public modality:OPEN [val]
annotations:
Deprecated(message = '', replaceWith = <null>, level = <null>)
FUN name:<get-prop> visibility:public modality:OPEN <> ($this:<root>.IFoo) returnType:kotlin.String
correspondingProperty: PROPERTY name:prop visibility:public modality:OPEN [val]
$this: VALUE_PARAMETER name:<this> type:<root>.IFoo
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-prop> (): kotlin.String declared in <root>.IFoo'
CONST String type=kotlin.String value=""
PROPERTY name:extProp visibility:public modality:OPEN [val]
annotations:
Deprecated(message = '', replaceWith = <null>, level = <null>)
FUN name:<get-extProp> visibility:public modality:OPEN <> ($this:<root>.IFoo, $receiver:kotlin.String) returnType:kotlin.String
correspondingProperty: PROPERTY name:extProp visibility:public modality:OPEN [val]
$this: VALUE_PARAMETER name:<this> type:<root>.IFoo
$receiver: VALUE_PARAMETER name:<this> type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-extProp> (): kotlin.String declared in <root>.IFoo'
CONST String type=kotlin.String value=""
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:Delegated modality:FINAL visibility:public superTypes:[<root>.IFoo]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Delegated
CONSTRUCTOR visibility:public <> (foo:<root>.IFoo) returnType:<root>.Delegated [primary]
VALUE_PARAMETER name:foo index:0 type:<root>.IFoo
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Delegated modality:FINAL visibility:public superTypes:[<root>.IFoo]'
SET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=kotlin.Unit origin=EQ
receiver: GET_VAR '<this>: <root>.Delegated declared in <root>.Delegated' type=<root>.Delegated origin=null
value: GET_VAR 'foo: <root>.IFoo declared in <root>.Delegated.<init>' type=<root>.IFoo origin=null
PROPERTY DELEGATED_MEMBER name:prop visibility:public modality:OPEN [val]
FUN DELEGATED_MEMBER name:<get-prop> visibility:public modality:OPEN <> ($this:<root>.Delegated) returnType:kotlin.String
correspondingProperty: PROPERTY DELEGATED_MEMBER name:prop visibility:public modality:OPEN [val]
overridden:
public open fun <get-prop> (): kotlin.String declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:<root>.Delegated
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-prop> (): kotlin.String declared in <root>.Delegated'
CALL 'public open fun <get-prop> (): kotlin.String declared in <root>.IFoo' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=<root>.IFoo origin=null
receiver: GET_VAR '<this>: <root>.Delegated declared in <root>.Delegated.<get-prop>' type=<root>.Delegated origin=null
PROPERTY DELEGATED_MEMBER name:extProp visibility:public modality:OPEN [val]
FUN DELEGATED_MEMBER name:<get-extProp> visibility:public modality:OPEN <> ($this:<root>.Delegated, $receiver:kotlin.String) returnType:kotlin.String
correspondingProperty: PROPERTY DELEGATED_MEMBER name:extProp visibility:public modality:OPEN [val]
overridden:
public open fun <get-extProp> (): kotlin.String declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:<root>.Delegated
$receiver: VALUE_PARAMETER name:<this> type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-extProp> (): kotlin.String declared in <root>.Delegated'
CALL 'public open fun <get-extProp> (): kotlin.String declared in <root>.IFoo' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]' type=<root>.IFoo origin=null
receiver: GET_VAR '<this>: <root>.Delegated declared in <root>.Delegated.<get-extProp>' type=<root>.Delegated origin=null
$receiver: GET_VAR '<this>: kotlin.String declared in <root>.Delegated.<get-extProp>' type=kotlin.String origin=null
FIELD DELEGATE name:<$$delegate_0> type:<root>.IFoo visibility:local [final]
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:DefaultImpl modality:FINAL visibility:public superTypes:[<root>.IFoo]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.DefaultImpl
CONSTRUCTOR visibility:public <> () returnType:<root>.DefaultImpl [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:DefaultImpl modality:FINAL visibility:public superTypes:[<root>.IFoo]'
PROPERTY FAKE_OVERRIDE name:prop visibility:public modality:OPEN [fake_override,val]
FUN FAKE_OVERRIDE name:<get-prop> visibility:public modality:OPEN <> ($this:<root>.IFoo) returnType:kotlin.String [fake_override]
correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop visibility:public modality:OPEN [fake_override,val]
overridden:
public open fun <get-prop> (): kotlin.String declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:<root>.IFoo
PROPERTY FAKE_OVERRIDE name:extProp visibility:public modality:OPEN [fake_override,val]
FUN FAKE_OVERRIDE name:<get-extProp> visibility:public modality:OPEN <> ($this:<root>.IFoo, $receiver:kotlin.String) returnType:kotlin.String [fake_override]
correspondingProperty: PROPERTY FAKE_OVERRIDE name:extProp visibility:public modality:OPEN [fake_override,val]
overridden:
public open fun <get-extProp> (): kotlin.String declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:<root>.IFoo
$receiver: VALUE_PARAMETER name:<this> type:kotlin.String
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:ExplicitOverride modality:FINAL visibility:public superTypes:[<root>.IFoo]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.ExplicitOverride
CONSTRUCTOR visibility:public <> () returnType:<root>.ExplicitOverride [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:ExplicitOverride modality:FINAL visibility:public superTypes:[<root>.IFoo]'
PROPERTY name:prop visibility:public modality:FINAL [val]
FUN name:<get-prop> visibility:public modality:FINAL <> ($this:<root>.ExplicitOverride) returnType:kotlin.String
correspondingProperty: PROPERTY name:prop visibility:public modality:FINAL [val]
overridden:
public open fun <get-prop> (): kotlin.String declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:<root>.ExplicitOverride
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-prop> (): kotlin.String declared in <root>.ExplicitOverride'
CONST String type=kotlin.String value=""
PROPERTY name:extProp visibility:public modality:FINAL [val]
FUN name:<get-extProp> visibility:public modality:FINAL <> ($this:<root>.ExplicitOverride, $receiver:kotlin.String) returnType:kotlin.String
correspondingProperty: PROPERTY name:extProp visibility:public modality:FINAL [val]
overridden:
public open fun <get-extProp> (): kotlin.String declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:<root>.ExplicitOverride
$receiver: VALUE_PARAMETER name:<this> type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun <get-extProp> (): kotlin.String declared in <root>.ExplicitOverride'
CONST String type=kotlin.String value=""
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
@@ -0,0 +1,16 @@
interface IFoo {
@Deprecated("")
val prop: String get() = ""
@Deprecated("")
val String.extProp: String get() = ""
}
class Delegated(foo: IFoo) : IFoo by foo
class DefaultImpl : IFoo
class ExplicitOverride : IFoo {
override val prop: String get() = ""
override val String.extProp: String get() = ""
}
@@ -0,0 +1,156 @@
FILE fqName:<root> fileName:/inheritingDeprecation.kt
CLASS INTERFACE name:IFoo modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.IFoo
PROPERTY name:prop visibility:public modality:OPEN [val]
annotations:
Deprecated(message = '', replaceWith = <null>, level = <null>)
FUN name:<get-prop> visibility:public modality:OPEN <> ($this:<root>.IFoo) returnType:kotlin.String
correspondingProperty: PROPERTY name:prop visibility:public modality:OPEN [val]
$this: VALUE_PARAMETER name:<this> type:<root>.IFoo
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-prop> (): kotlin.String declared in <root>.IFoo'
CONST String type=kotlin.String value=""
PROPERTY name:extProp visibility:public modality:OPEN [val]
annotations:
Deprecated(message = '', replaceWith = <null>, level = <null>)
FUN name:<get-extProp> visibility:public modality:OPEN <> ($this:<root>.IFoo, $receiver:kotlin.String) returnType:kotlin.String
correspondingProperty: PROPERTY name:extProp visibility:public modality:OPEN [val]
$this: VALUE_PARAMETER name:<this> type:<root>.IFoo
$receiver: VALUE_PARAMETER name:<this> type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-extProp> (): kotlin.String declared in <root>.IFoo'
CONST String type=kotlin.String value=""
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String declared in kotlin.Any
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:Delegated modality:FINAL visibility:public superTypes:[<root>.IFoo]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.Delegated
CONSTRUCTOR visibility:public <> (foo:<root>.IFoo) returnType:<root>.Delegated [primary]
VALUE_PARAMETER name:foo index:0 type:<root>.IFoo
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:Delegated modality:FINAL visibility:public superTypes:[<root>.IFoo]'
FIELD DELEGATE name:$$delegate_0 type:<root>.IFoo visibility:private [final]
EXPRESSION_BODY
GET_VAR 'foo: <root>.IFoo declared in <root>.Delegated.<init>' type=<root>.IFoo origin=null
PROPERTY DELEGATED_MEMBER name:extProp visibility:public modality:OPEN [val]
FUN DELEGATED_MEMBER name:<get-extProp> visibility:public modality:OPEN <> ($this:<root>.Delegated, $receiver:kotlin.String) returnType:kotlin.String
correspondingProperty: PROPERTY DELEGATED_MEMBER name:extProp visibility:public modality:OPEN [val]
overridden:
public open fun <get-extProp> (): kotlin.String declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:<root>.Delegated
$receiver: VALUE_PARAMETER name:<this> type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-extProp> (): kotlin.String declared in <root>.Delegated'
CALL 'public open fun <get-extProp> (): kotlin.String declared in <root>.IFoo' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.IFoo visibility:private [final]' type=<root>.IFoo origin=null
receiver: GET_VAR '<this>: <root>.Delegated declared in <root>.Delegated.<get-extProp>' type=<root>.Delegated origin=null
$receiver: GET_VAR '<this>: kotlin.String declared in <root>.Delegated.<get-extProp>' type=kotlin.String origin=null
PROPERTY DELEGATED_MEMBER name:prop visibility:public modality:OPEN [val]
FUN DELEGATED_MEMBER name:<get-prop> visibility:public modality:OPEN <> ($this:<root>.Delegated) returnType:kotlin.String
correspondingProperty: PROPERTY DELEGATED_MEMBER name:prop visibility:public modality:OPEN [val]
overridden:
public open fun <get-prop> (): kotlin.String declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:<root>.Delegated
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-prop> (): kotlin.String declared in <root>.Delegated'
CALL 'public open fun <get-prop> (): kotlin.String declared in <root>.IFoo' type=kotlin.String origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.IFoo visibility:private [final]' type=<root>.IFoo origin=null
receiver: GET_VAR '<this>: <root>.Delegated declared in <root>.Delegated.<get-prop>' type=<root>.Delegated origin=null
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int [fake_override] declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String [fake_override] declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:DefaultImpl modality:FINAL visibility:public superTypes:[<root>.IFoo]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.DefaultImpl
CONSTRUCTOR visibility:public <> () returnType:<root>.DefaultImpl [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:DefaultImpl modality:FINAL visibility:public superTypes:[<root>.IFoo]'
PROPERTY FAKE_OVERRIDE name:extProp visibility:public modality:OPEN [fake_override,val]
annotations:
Deprecated(message = '', replaceWith = <null>, level = <null>)
FUN FAKE_OVERRIDE name:<get-extProp> visibility:public modality:OPEN <> ($this:<root>.IFoo, $receiver:kotlin.String) returnType:kotlin.String [fake_override]
correspondingProperty: PROPERTY FAKE_OVERRIDE name:extProp visibility:public modality:OPEN [fake_override,val]
overridden:
public open fun <get-extProp> (): kotlin.String declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:<root>.IFoo
$receiver: VALUE_PARAMETER name:<this> type:kotlin.String
PROPERTY FAKE_OVERRIDE name:prop visibility:public modality:OPEN [fake_override,val]
annotations:
Deprecated(message = '', replaceWith = <null>, level = <null>)
FUN FAKE_OVERRIDE name:<get-prop> visibility:public modality:OPEN <> ($this:<root>.IFoo) returnType:kotlin.String [fake_override]
correspondingProperty: PROPERTY FAKE_OVERRIDE name:prop visibility:public modality:OPEN [fake_override,val]
overridden:
public open fun <get-prop> (): kotlin.String declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:<root>.IFoo
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int [fake_override] declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String [fake_override] declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
CLASS CLASS name:ExplicitOverride modality:FINAL visibility:public superTypes:[<root>.IFoo]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.ExplicitOverride
CONSTRUCTOR visibility:public <> () returnType:<root>.ExplicitOverride [primary]
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:ExplicitOverride modality:FINAL visibility:public superTypes:[<root>.IFoo]'
PROPERTY name:prop visibility:public modality:OPEN [val]
FUN name:<get-prop> visibility:public modality:OPEN <> ($this:<root>.ExplicitOverride) returnType:kotlin.String
correspondingProperty: PROPERTY name:prop visibility:public modality:OPEN [val]
overridden:
public open fun <get-prop> (): kotlin.String declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:<root>.ExplicitOverride
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-prop> (): kotlin.String declared in <root>.ExplicitOverride'
CONST String type=kotlin.String value=""
PROPERTY name:extProp visibility:public modality:OPEN [val]
FUN name:<get-extProp> visibility:public modality:OPEN <> ($this:<root>.ExplicitOverride, $receiver:kotlin.String) returnType:kotlin.String
correspondingProperty: PROPERTY name:extProp visibility:public modality:OPEN [val]
overridden:
public open fun <get-extProp> (): kotlin.String declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:<root>.ExplicitOverride
$receiver: VALUE_PARAMETER name:<this> type:kotlin.String
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun <get-extProp> (): kotlin.String declared in <root>.ExplicitOverride'
CONST String type=kotlin.String value=""
FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator]
overridden:
public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
VALUE_PARAMETER name:other index:0 type:kotlin.Any?
FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override]
overridden:
public open fun hashCode (): kotlin.Int [fake_override] declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override]
overridden:
public open fun toString (): kotlin.String [fake_override] declared in <root>.IFoo
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
@@ -783,6 +783,11 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest {
runTest("compiler/testData/codegen/bytecodeListing/deprecated/hidden.kt");
}
@TestMetadata("inheritingDeprecation.kt")
public void testInheritingDeprecation() throws Exception {
runTest("compiler/testData/codegen/bytecodeListing/deprecated/inheritingDeprecation.kt");
}
@TestMetadata("inlineClassTypesInSignature.kt")
public void testInlineClassTypesInSignature() throws Exception {
runTest("compiler/testData/codegen/bytecodeListing/deprecated/inlineClassTypesInSignature.kt");
@@ -753,6 +753,11 @@ public class IrBytecodeListingTestGenerated extends AbstractIrBytecodeListingTes
runTest("compiler/testData/codegen/bytecodeListing/deprecated/hidden.kt");
}
@TestMetadata("inheritingDeprecation.kt")
public void testInheritingDeprecation() throws Exception {
runTest("compiler/testData/codegen/bytecodeListing/deprecated/inheritingDeprecation.kt");
}
@TestMetadata("inlineClassTypesInSignature.kt")
public void testInlineClassTypesInSignature() throws Exception {
runTest("compiler/testData/codegen/bytecodeListing/deprecated/inlineClassTypesInSignature.kt");
@@ -485,6 +485,11 @@ public class IrTextTestCaseGenerated extends AbstractIrTextTestCase {
runTest("compiler/testData/ir/irText/declarations/annotations/functionsWithAnnotations.kt");
}
@TestMetadata("inheritingDeprecation.kt")
public void testInheritingDeprecation() throws Exception {
runTest("compiler/testData/ir/irText/declarations/annotations/inheritingDeprecation.kt");
}
@TestMetadata("javaAnnotation.kt")
public void testJavaAnnotation() throws Exception {
runTest("compiler/testData/ir/irText/declarations/annotations/javaAnnotation.kt");