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");
|
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")
|
@TestMetadata("noArgConstructorForInlineClassParameter.kt")
|
||||||
public void testNoArgConstructorForInlineClassParameter() throws Exception {
|
public void testNoArgConstructorForInlineClassParameter() throws Exception {
|
||||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/noArgConstructorForInlineClassParameter.kt");
|
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");
|
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")
|
@TestMetadata("noArgConstructorForInlineClassParameter.kt")
|
||||||
public void testNoArgConstructorForInlineClassParameter() throws Exception {
|
public void testNoArgConstructorForInlineClassParameter() throws Exception {
|
||||||
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/noArgConstructorForInlineClassParameter.kt");
|
runTest("compiler/testData/codegen/bytecodeListing/inlineClasses/noArgConstructorForInlineClassParameter.kt");
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
package org.jetbrains.kotlin.resolve
|
package org.jetbrains.kotlin.resolve
|
||||||
|
|
||||||
import org.jetbrains.kotlin.descriptors.*
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.incremental.components.NoLookupLocation
|
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
import org.jetbrains.kotlin.types.TypeSubstitutor
|
import org.jetbrains.kotlin.types.TypeSubstitutor
|
||||||
import org.jetbrains.kotlin.types.TypeUtils
|
import org.jetbrains.kotlin.types.TypeUtils
|
||||||
@@ -64,6 +63,7 @@ fun CallableDescriptor.isGetterOfUnderlyingPropertyOfInlineClass() =
|
|||||||
this is PropertyGetterDescriptor && correspondingProperty.isUnderlyingPropertyOfInlineClass()
|
this is PropertyGetterDescriptor && correspondingProperty.isUnderlyingPropertyOfInlineClass()
|
||||||
|
|
||||||
fun VariableDescriptor.isUnderlyingPropertyOfInlineClass(): Boolean {
|
fun VariableDescriptor.isUnderlyingPropertyOfInlineClass(): Boolean {
|
||||||
|
if (extensionReceiverParameter != null) return false
|
||||||
val containingDeclaration = this.containingDeclaration
|
val containingDeclaration = this.containingDeclaration
|
||||||
if (!containingDeclaration.isInlineClass()) return false
|
if (!containingDeclaration.isInlineClass()) return false
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user