Disallow PropertyMetadataImpl in conventions for delegated properties

This commit is contained in:
Evgeny Gerashchenko
2015-02-19 16:14:37 +03:00
parent 056daeaadb
commit af7eba64f7
6 changed files with 28 additions and 5 deletions
@@ -128,7 +128,8 @@ public class DelegatedPropertyResolver {
return psiFactory.createExpression(builtIns.getPropertyMetadataImpl().getName().asString() + return psiFactory.createExpression(builtIns.getPropertyMetadataImpl().getName().asString() +
"(\"" + "(\"" +
propertyDescriptor.getName().asString() + propertyDescriptor.getName().asString() +
"\")"); "\"): " +
builtIns.getPropertyMetadata().getName().asString());
} }
public void resolveDelegatedPropertyPDMethod( public void resolveDelegatedPropertyPDMethod(
@@ -0,0 +1,5 @@
val a: Int by <!DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE!>A()<!>
class A {
fun get(t: Any?, p: PropertyMetadataImpl): Int = 1
}
@@ -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
}
@@ -3141,6 +3141,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
doTest(fileName); 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") @TestMetadata("genericGetter.kt")
public void testGenericGetter() throws Exception { public void testGenericGetter() throws Exception {
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/delegatedProperty/genericGetter.kt"); String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/delegatedProperty/genericGetter.kt");
@@ -8,12 +8,12 @@ fun format(event: String, property: String, value: Int): String
object LoggerDelegate { object LoggerDelegate {
var log = "" var log = ""
fun get(state: State, desc: PropertyMetadataImpl): Int { fun get(state: State, desc: PropertyMetadata): Int {
log += format("get", desc.name, state.realValue) log += format("get", desc.name, state.realValue)
return 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) log += format("set", desc.name, value)
state.realValue = value state.realValue = value
} }
@@ -7,9 +7,9 @@ trait Base {
} }
class Delegate(val multiplier: Int) { 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 state.value = value / multiplier
} }