KT-43196 member extension property can't be "primary" in inline class
This commit is contained in:
+15
@@ -0,0 +1,15 @@
|
||||
inline class Z1(val s: Int) {
|
||||
val String.ext: Int get() = 239
|
||||
}
|
||||
|
||||
inline class Z2(val s: Int) {
|
||||
val String.s: Int get() = 239
|
||||
}
|
||||
|
||||
interface StrS {
|
||||
val String.s: Int
|
||||
}
|
||||
|
||||
inline class Z3(val s: Int) : StrS {
|
||||
override val String.s: Int get() = 239
|
||||
}
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
@kotlin.Metadata
|
||||
public interface StrS {
|
||||
// source: 'memberExtensionProperty.kt'
|
||||
public abstract method getS(@org.jetbrains.annotations.NotNull p0: java.lang.String): int
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class Z1 {
|
||||
// source: 'memberExtensionProperty.kt'
|
||||
private final field s: int
|
||||
private synthetic method <init>(p0: int): void
|
||||
public synthetic final static method box-impl(p0: int): Z1
|
||||
public static method constructor-impl(p0: int): int
|
||||
public method equals(p0: java.lang.Object): boolean
|
||||
public static method equals-impl(p0: int, p1: java.lang.Object): boolean
|
||||
public final static method equals-impl0(p0: int, p1: int): boolean
|
||||
public final static method getExt-impl(p0: int, @org.jetbrains.annotations.NotNull p1: java.lang.String): int
|
||||
public final method getS(): int
|
||||
public method hashCode(): int
|
||||
public static method hashCode-impl(p0: int): int
|
||||
public method toString(): java.lang.String
|
||||
public static method toString-impl(p0: int): java.lang.String
|
||||
public synthetic final method unbox-impl(): int
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class Z2 {
|
||||
// source: 'memberExtensionProperty.kt'
|
||||
private final field s: int
|
||||
private synthetic method <init>(p0: int): void
|
||||
public synthetic final static method box-impl(p0: int): Z2
|
||||
public static method constructor-impl(p0: int): int
|
||||
public method equals(p0: java.lang.Object): boolean
|
||||
public static method equals-impl(p0: int, p1: java.lang.Object): boolean
|
||||
public final static method equals-impl0(p0: int, p1: int): boolean
|
||||
public final method getS(): int
|
||||
public final static method getS-impl(p0: int, @org.jetbrains.annotations.NotNull p1: java.lang.String): int
|
||||
public method hashCode(): int
|
||||
public static method hashCode-impl(p0: int): int
|
||||
public method toString(): java.lang.String
|
||||
public static method toString-impl(p0: int): java.lang.String
|
||||
public synthetic final method unbox-impl(): int
|
||||
}
|
||||
|
||||
@kotlin.Metadata
|
||||
public final class Z3 {
|
||||
// source: 'memberExtensionProperty.kt'
|
||||
private final field s: int
|
||||
private synthetic method <init>(p0: int): void
|
||||
public synthetic final static method box-impl(p0: int): Z3
|
||||
public static method constructor-impl(p0: int): int
|
||||
public method equals(p0: java.lang.Object): boolean
|
||||
public static method equals-impl(p0: int, p1: java.lang.Object): boolean
|
||||
public final static method equals-impl0(p0: int, p1: int): boolean
|
||||
public final method getS(): int
|
||||
public method getS(@org.jetbrains.annotations.NotNull p0: java.lang.String): int
|
||||
public static method getS-impl(p0: int, @org.jetbrains.annotations.NotNull p1: java.lang.String): int
|
||||
public method hashCode(): int
|
||||
public static method hashCode-impl(p0: int): int
|
||||
public method toString(): java.lang.String
|
||||
public static method toString-impl(p0: int): java.lang.String
|
||||
public synthetic final method unbox-impl(): int
|
||||
}
|
||||
+5
@@ -957,6 +957,11 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest {
|
||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassWithManyKindsOfMembers.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("memberExtensionProperty.kt")
|
||||
public void testMemberExtensionProperty() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/memberExtensionProperty.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("noArgConstructorForInlineClassParameter.kt")
|
||||
public void testNoArgConstructorForInlineClassParameter() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/noArgConstructorForInlineClassParameter.kt");
|
||||
|
||||
+5
@@ -927,6 +927,11 @@ public class IrBytecodeListingTestGenerated extends AbstractIrBytecodeListingTes
|
||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/inlineClassWithManyKindsOfMembers.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("memberExtensionProperty.kt")
|
||||
public void testMemberExtensionProperty() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/memberExtensionProperty.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("noArgConstructorForInlineClassParameter.kt")
|
||||
public void testNoArgConstructorForInlineClassParameter() throws Exception {
|
||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/noArgConstructorForInlineClassParameter.kt");
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
package org.jetbrains.kotlin.resolve
|
||||
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
||||
import org.jetbrains.kotlin.types.KotlinType
|
||||
import org.jetbrains.kotlin.types.TypeSubstitutor
|
||||
import org.jetbrains.kotlin.types.TypeUtils
|
||||
@@ -64,6 +63,7 @@ fun CallableDescriptor.isGetterOfUnderlyingPropertyOfInlineClass() =
|
||||
this is PropertyGetterDescriptor && correspondingProperty.isUnderlyingPropertyOfInlineClass()
|
||||
|
||||
fun VariableDescriptor.isUnderlyingPropertyOfInlineClass(): Boolean {
|
||||
if (extensionReceiverParameter != null) return false
|
||||
val containingDeclaration = this.containingDeclaration
|
||||
if (!containingDeclaration.isInlineClass()) return false
|
||||
|
||||
|
||||
Reference in New Issue
Block a user