diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DelegatedPropertyResolver.java b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DelegatedPropertyResolver.java index 9afb44a0aad..e9378d333ee 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/DelegatedPropertyResolver.java +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/DelegatedPropertyResolver.java @@ -128,7 +128,8 @@ public class DelegatedPropertyResolver { return psiFactory.createExpression(builtIns.getPropertyMetadataImpl().getName().asString() + "(\"" + propertyDescriptor.getName().asString() + - "\")"); + "\"): " + + builtIns.getPropertyMetadata().getName().asString()); } public void resolveDelegatedPropertyPDMethod( diff --git a/compiler/testData/diagnostics/tests/delegatedProperty/disallowImplInTypeParameter.kt b/compiler/testData/diagnostics/tests/delegatedProperty/disallowImplInTypeParameter.kt new file mode 100644 index 00000000000..fefb3a6209d --- /dev/null +++ b/compiler/testData/diagnostics/tests/delegatedProperty/disallowImplInTypeParameter.kt @@ -0,0 +1,5 @@ +val a: Int by A() + +class A { + fun get(t: Any?, p: PropertyMetadataImpl): Int = 1 +} diff --git a/compiler/testData/diagnostics/tests/delegatedProperty/disallowImplInTypeParameter.txt b/compiler/testData/diagnostics/tests/delegatedProperty/disallowImplInTypeParameter.txt new file mode 100644 index 00000000000..24189dfca8b --- /dev/null +++ b/compiler/testData/diagnostics/tests/delegatedProperty/disallowImplInTypeParameter.txt @@ -0,0 +1,11 @@ +package + +internal val a: kotlin.Int + +internal final class A { + public constructor A() + public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean + internal final fun get(/*0*/ t: kotlin.Any?, /*1*/ p: kotlin.PropertyMetadataImpl): kotlin.Int + public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int + public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String +} diff --git a/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java index a6cb4ad20c3..0e2730a5492 100644 --- a/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/checkers/JetDiagnosticsTestGenerated.java @@ -3141,6 +3141,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest { doTest(fileName); } + @TestMetadata("disallowImplInTypeParameter.kt") + public void testDisallowImplInTypeParameter() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/delegatedProperty/disallowImplInTypeParameter.kt"); + doTest(fileName); + } + @TestMetadata("genericGetter.kt") public void testGenericGetter() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/delegatedProperty/genericGetter.kt"); diff --git a/js/js.translator/testData/delegateProperty/cases/delegateByExtensionProperty.kt b/js/js.translator/testData/delegateProperty/cases/delegateByExtensionProperty.kt index e50af058cee..3bbb06ab9b9 100644 --- a/js/js.translator/testData/delegateProperty/cases/delegateByExtensionProperty.kt +++ b/js/js.translator/testData/delegateProperty/cases/delegateByExtensionProperty.kt @@ -8,12 +8,12 @@ fun format(event: String, property: String, value: Int): String object LoggerDelegate { var log = "" - fun get(state: State, desc: PropertyMetadataImpl): Int { + fun get(state: State, desc: PropertyMetadata): Int { log += format("get", desc.name, state.realValue) return state.realValue } - fun set(state: State, desc: PropertyMetadataImpl, value: Int) { + fun set(state: State, desc: PropertyMetadata, value: Int) { log += format("set", desc.name, value) state.realValue = value } diff --git a/js/js.translator/testData/delegation/cases/delegationExtensionPropertyDelegated.kt b/js/js.translator/testData/delegation/cases/delegationExtensionPropertyDelegated.kt index a9db7607012..f31a63a7191 100644 --- a/js/js.translator/testData/delegation/cases/delegationExtensionPropertyDelegated.kt +++ b/js/js.translator/testData/delegation/cases/delegationExtensionPropertyDelegated.kt @@ -7,9 +7,9 @@ trait Base { } class Delegate(val multiplier: Int) { - fun get(state: State, desc: PropertyMetadataImpl): Int = multiplier * state.value + fun get(state: State, desc: PropertyMetadata): Int = multiplier * state.value - fun set(state: State, desc: PropertyMetadataImpl, value: Int) { + fun set(state: State, desc: PropertyMetadata, value: Int) { state.value = value / multiplier }